@factor_ec/ui 5.0.5 → 5.0.6
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.
|
@@ -423,7 +423,7 @@ class ImageComponent {
|
|
|
423
423
|
alt = input('');
|
|
424
424
|
shown = false;
|
|
425
425
|
ngOnInit() {
|
|
426
|
-
if (
|
|
426
|
+
if ('IntersectionObserver' in window) {
|
|
427
427
|
let elementObserver = new IntersectionObserver((entries, observer) => {
|
|
428
428
|
entries.forEach((entry) => {
|
|
429
429
|
if (entry.isIntersecting) {
|
|
@@ -439,7 +439,7 @@ class ImageComponent {
|
|
|
439
439
|
this.loading = false;
|
|
440
440
|
};
|
|
441
441
|
image.onload = () => {
|
|
442
|
-
if (
|
|
442
|
+
if ('decode' in image) {
|
|
443
443
|
image.decode().then(() => {
|
|
444
444
|
this.loading = false;
|
|
445
445
|
this.shown = true;
|
|
@@ -454,7 +454,7 @@ class ImageComponent {
|
|
|
454
454
|
}
|
|
455
455
|
});
|
|
456
456
|
}, {
|
|
457
|
-
rootMargin:
|
|
457
|
+
rootMargin: '0px 0px 200px 0px',
|
|
458
458
|
});
|
|
459
459
|
elementObserver.observe(this.element.nativeElement);
|
|
460
460
|
}
|
|
@@ -465,19 +465,14 @@ class ImageComponent {
|
|
|
465
465
|
}
|
|
466
466
|
}
|
|
467
467
|
get hostClasses() {
|
|
468
|
-
return [
|
|
469
|
-
'ft-image',
|
|
470
|
-
this.class()
|
|
471
|
-
].join(' ');
|
|
468
|
+
return ['ft-image', this.class()].join(' ');
|
|
472
469
|
}
|
|
473
470
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: ImageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
474
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: ImageComponent, isStandalone: true, selector: "ft-image", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: true, transformFunction: null }, alt: { classPropertyName: "alt", publicName: "alt", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.ft-image--error": "this.error", "class.ft-image--loading": "this.loading", "class": "this.hostClasses" } }, ngImport: i0, template: "@if (shown) {\n <img [src]=\"src()\" [alt]=\"alt()\" />\n}\n@if (error) {\n <ft-icon name=\"warning\" size=\"2\"></ft-icon>\n}", dependencies: [{ kind: "component", type: IconComponent, selector: "ft-icon", inputs: ["collection", "mode", "name", "path", "src", "class"] }] });
|
|
471
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: ImageComponent, isStandalone: true, selector: "ft-image", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: true, transformFunction: null }, alt: { classPropertyName: "alt", publicName: "alt", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.ft-image--error": "this.error", "class.ft-image--loading": "this.loading", "class": "this.hostClasses" } }, ngImport: i0, template: "@if (shown) {\n <img [src]=\"src()\" [alt]=\"alt()\" />\n}\n@if (error) {\n <ft-icon name=\"warning\" size=\"2\"></ft-icon>\n}", styles: [":host{display:inline-flex;align-items:center;justify-content:center}img{max-width:100%;max-height:100%}\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "ft-icon", inputs: ["collection", "mode", "name", "path", "src", "class"] }] });
|
|
475
472
|
}
|
|
476
473
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: ImageComponent, decorators: [{
|
|
477
474
|
type: Component,
|
|
478
|
-
args: [{ selector: 'ft-image', standalone: true, imports: [
|
|
479
|
-
IconComponent
|
|
480
|
-
], template: "@if (shown) {\n <img [src]=\"src()\" [alt]=\"alt()\" />\n}\n@if (error) {\n <ft-icon name=\"warning\" size=\"2\"></ft-icon>\n}" }]
|
|
475
|
+
args: [{ selector: 'ft-image', standalone: true, imports: [IconComponent], template: "@if (shown) {\n <img [src]=\"src()\" [alt]=\"alt()\" />\n}\n@if (error) {\n <ft-icon name=\"warning\" size=\"2\"></ft-icon>\n}", styles: [":host{display:inline-flex;align-items:center;justify-content:center}img{max-width:100%;max-height:100%}\n"] }]
|
|
481
476
|
}], propDecorators: { error: [{
|
|
482
477
|
type: HostBinding,
|
|
483
478
|
args: ['class.ft-image--error']
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factor_ec-ui.mjs","sources":["../../../projects/ui/src/lib/avatar/avatar.component.ts","../../../projects/ui/src/lib/avatar/avatar.component.html","../../../projects/ui/src/lib/chart.service.ts","../../../projects/ui/src/lib/models/ui-options.ts","../../../projects/ui/src/lib/ui.service.ts","../../../projects/ui/src/lib/icon/icon.component.ts","../../../projects/ui/src/lib/icon/icon.component.html","../../../projects/ui/src/lib/image/image.component.ts","../../../projects/ui/src/lib/image/image.component.html","../../../projects/ui/src/lib/message.service.ts","../../../projects/ui/src/lib/observe-intersecting.directive.ts","../../../projects/ui/src/lib/progress/progress.component.ts","../../../projects/ui/src/lib/progress/progress.component.html","../../../projects/ui/src/lib/rating/rating.component.ts","../../../projects/ui/src/lib/rating/rating.component.html","../../../projects/ui/src/lib/ui.module.ts","../../../projects/ui/src/factor_ec-ui.ts"],"sourcesContent":["import { Component, computed, effect, HostBinding, input, signal, inject } from '@angular/core';\n\n\nimport { ColorService } from '@factor_ec/utils';\n\n@Component({\n selector: 'ft-avatar',\n standalone: true,\n imports: [],\n templateUrl: './avatar.component.html',\n styleUrl: './avatar.component.scss'\n})\nexport class AvatarComponent {\n private colorService = inject(ColorService);\n\n color = input<string>();\n initials = computed(() => {\n return this.getInitials(this.label());\n });\n label = input.required<string>();\n loaded = signal<boolean>(false);\n src = input<string>();\n @HostBinding('style.background-color') get backgroundColor(): string {\n return this.color() || this.colorService.hex(this.label());\n }\n @HostBinding('style.background-image') get backgroundImage(): string {\n return this.src() ? `url(${this.src()})` : '';\n }\n class = input<string>();\n @HostBinding('class') get hostClasses(): string {\n return ['ft-avatar', this.class()].join(' ');\n }\n\n constructor() {\n // Usa `effect` para reaccionar a los cambios en el valor de `src`\n effect(() => {\n const value = this.src();\n if (value && value.trim() !== '') {\n const image = new Image();\n image.src = value;\n image.onload = () => {\n if ('decode' in image) {\n image.decode().then(() => {\n this.loaded.set(true);\n });\n } else {\n console.error('Image.decode not available.');\n }\n };\n }\n });\n }\n \n getInitials(value: string): string {\n const allInitials: string[] = value.match(/\\b\\w/g) || [];\n const initials: string = ((allInitials.shift() || '') + (allInitials.pop() || '')).toUpperCase();\n return initials;\n }\n}\n","@if (!loaded()) {\n<div>{{ initials() }}</div>\n}","import { Injectable } from '@angular/core';\n\nimport * as d3 from 'd3';\n\nimport { Chart } from './models/chart';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ChartService {\n private resizeTimeout!: ReturnType<typeof setTimeout>;\n private charts: Map<SVGElement, any> = new Map();\n\n constructor() {\n window.addEventListener('resize', this.handleResize.bind(this));\n }\n\n remove(element: SVGElement): void {\n this.charts.delete(element);\n }\n render(element: SVGElement, items: Chart[]): void {\n // Clear svg\n const svg = d3.select(element).html('');\n \n // Resize event\n if (!this.charts.has(element)) {\n this.charts.set(element, items);\n }\n\n const values: number[] = [0];\n items.forEach((item) => {\n item.data.forEach((i) => {\n if (typeof i[item.field] === 'number') {\n values.push(i[item.field]);\n }\n });\n });\n if (values.length > 0) {\n const domain: any = d3.extent(values);\n\n // Dibujo los gráficos\n items.forEach((item) => {\n switch (item.type) {\n case 'limit':\n this.drawLimitChart(svg, { ...item, domain });\n break;\n case 'column':\n this.drawColumnChart(svg, { ...item, domain });\n break;\n case 'line':\n this.drawLineChart(svg, { ...item, domain });\n break;\n case 'circle':\n this.drawCircleChart(svg, { ...item, domain });\n break;\n case 'event':\n this.drawEventsPlaceholder(svg, { ...item, domain });\n break;\n }\n });\n }\n }\n private drawAxis(svg: any, values: any[], domain: any): void {\n const element = svg.node()?.getBoundingClientRect();\n const yScale = d3\n .scaleLinear()\n .domain(domain)\n .range([element?.height || 0 - 4, 4]);\n\n // Dibuja el eje en X\n svg.select('.x-axis').remove();\n svg\n .append('rect')\n .attr('class', 'x-axis')\n .attr('fill', 'rgba(0, 0, 0, 0.08)')\n .attr('x', 0)\n .attr('width', element?.width || 0)\n .attr('height', 1)\n .attr('shape-rendering', 'crispEdges')\n .attr('y', yScale(0));\n\n /*\n const yScale = d3.scaleLinear().domain([-5000, 8000]).range([this.height, 0]);\n const yAxisGenerator = d3.axisLeft(yScale).ticks(8);\n this.svg.append('g').call(yAxisGenerator).style('transform', 'translateX(50px)');\n */\n }\n private drawCircleChart(svg: any, options: Chart): void {\n const domRect: DOMRect = svg.node().getBoundingClientRect();\n const xAccessor = (d: any) => d[options.categoryField];\n const yAccessor = (d: any) => d[options.field] || 0;\n const xScale = d3\n .scaleBand()\n .domain(options.data.map(xAccessor))\n .range([0, domRect.width])\n .padding(typeof options.padding === 'number' ? options.padding : 0);\n const yScale = d3\n .scaleLinear()\n .domain(\n options.domain ?? [\n Math.min(d3.min(options.data, yAccessor), 0),\n d3.max(options.data, yAccessor),\n ]\n )\n .range([domRect.height - 10, 10]);\n\n const circles = svg\n .append('g')\n .attr('class', 'ft-chart__circle')\n .selectAll(`circle`)\n .data(options.data);\n circles\n .enter()\n .append('circle')\n .style('stroke', options.color ?? '#ff9800')\n .attr('stroke-width', options.strokeWidth ?? 1)\n .style('fill', 'var(--ft-body-bg)')\n .attr('r', 1.5)\n .merge(circles)\n .attr('cx', (d: any) =>\n Math.round((xScale(xAccessor(d)) || 0) + xScale.bandwidth() / 2)\n )\n .attr('cy', (d: any) =>\n Math.round(yScale(yAccessor(d)))\n );\n circles.exit().remove();\n }\n private drawColumnChart(svg: any, options: Chart): void {\n const element = svg.node().getBoundingClientRect();\n const xAccessor = (d: any) => d[options.categoryField];\n //const xAccessor = (d: any) => (new Date(d[options.categoryField]))?.getTime();\n const yAccessor = (d: any) => d[options.field] || 0;\n\n const xScale = d3\n .scaleBand()\n .domain(options.data.map(xAccessor))\n .range([0, element.width])\n .padding(options.padding ?? 0.5);\n const yScale = d3\n .scaleLinear()\n .domain(\n options.domain\n ? options.domain\n : [\n Math.min(d3.min(options.data, yAccessor), 0),\n d3.max(options.data, yAccessor),\n ]\n )\n .range([element.height - 4, 4]);\n\n const columns = svg\n .append('g')\n .attr('class', 'ft-chart__column')\n .selectAll('rect')\n .data(options.data);\n columns\n .enter()\n .append('rect')\n .attr('x', (d: any) => xScale(xAccessor(d)))\n .attr('y', (d: any) => yScale(yAccessor(d)))\n .attr('shape-rendering', 'crispEdges')\n .attr('fill', options.color ?? '#ff9800')\n .attr('title', (d: any) => d[options.field])\n .merge(columns)\n .attr('width', Math.max(1, xScale.bandwidth()))\n .attr('height', (d: any) => Math.abs(yScale(yAccessor(d)) - yScale(0)));\n columns.exit().remove();\n }\n private drawLineChart(svg: any, options: Chart): void {\n const domRect: DOMRect = svg.node().getBoundingClientRect();\n const xAccessor = (d: any) => d[options.categoryField];\n const yAccessor = (d: any) => d[options.field] || 0;\n const xScale = d3\n .scaleBand()\n .domain(options.data.map(xAccessor))\n .range([0, domRect.width])\n .padding(typeof options.padding === 'number' ? options.padding : 0);\n const yScale = d3\n .scaleLinear()\n .domain(\n options.domain ?? [\n Math.min(d3.min(options.data, yAccessor), 0),\n d3.max(options.data, yAccessor),\n ]\n )\n .range([domRect.height - 10, 10]);\n\n const lineGenerator = d3\n .line()\n .x((d: any) =>\n Math.round((xScale(xAccessor(d)) || 0) + xScale.bandwidth() / 2)\n )\n .y((d: any) => Math.round(yScale(yAccessor(d))));\n svg\n .append('path')\n .attr('class', 'ft-chart__line')\n .attr('fill', 'none')\n .attr('stroke', options.color ?? '#ff9800')\n .attr('stroke-width', options.strokeWidth ?? 2)\n .attr('stroke-linecap', 'round')\n .attr('d', lineGenerator(options.data));\n }\n private drawLimitChart(svg: any, options: Chart): void {\n const element = svg.node().getBoundingClientRect();\n const yAccessor = (d: any) => d[options.field] || 0;\n const yScale = d3\n .scaleLinear()\n .domain(\n options.domain\n ? options.domain\n : [\n Math.min(d3.min(options.data, yAccessor), 0),\n d3.max(options.data, yAccessor),\n ]\n )\n .range([element.height - 4, 4]);\n const line = svg.append('g').selectAll('rect').data([options.data[0]]);\n line\n .enter()\n .append('rect')\n .attr('x', 0)\n .attr('y', (d: any) => yScale(yAccessor(d)) + 1)\n .attr('shape-rendering', 'crispEdges')\n .attr('fill', options.color ?? '#ff9800')\n .attr('title', 0)\n .attr('width', () => '100%')\n .attr('height', 1);\n line.exit().remove();\n\n line\n .enter()\n .append('text')\n .attr(\n 'style',\n 'font-weight: 600; font-size: var(--ft-text-font-size-sm);'\n )\n .attr('x', 0)\n .attr('y', (d: any) => yScale(yAccessor(d)) + 16)\n .attr('fill', 'var(--ft-danger-color)')\n .text(options.label);\n }\n private drawEventsPlaceholder(svg: any, options: Chart): void {\n const domRect: DOMRect = svg.node().getBoundingClientRect();\n const xAccessor = (d: any) => d[options.categoryField];\n const yAccessor = (d: any) => d[options.field] || 0;\n const xScale = d3\n .scaleBand()\n .domain(options.data.map(xAccessor))\n .range([0, domRect.width])\n .padding(typeof options.padding === 'number' ? options.padding : 0);\n const yScale = d3\n .scaleLinear()\n .domain(\n options.domain ?? [\n Math.min(d3.min(options.data, yAccessor), 0),\n d3.max(options.data, yAccessor),\n ]\n )\n .range([domRect.height, 0]);\n\n const columns = svg\n .append('g')\n .attr('class', 'ft-chart__placeholder')\n .selectAll('rect')\n .data(options.data);\n columns\n .enter()\n .append('rect')\n .attr('x', (d: any) => xScale(d[options.categoryField]))\n .attr('y', () => 0)\n .attr('shape-rendering', 'crispEdges')\n .attr('fill', 'rgba(0,0,0,0)')\n .attr('tabindex', 0)\n .merge(columns)\n .attr('width', Math.max(1, xScale.bandwidth()))\n .attr('height', () => yScale(0))\n .on('click', (event: MouseEvent, d: any) => {\n if (options.click) {\n options.click(event, d);\n }\n });\n columns.exit().remove();\n }\n private handleResize(): void {\n clearTimeout(this.resizeTimeout);\n this.resizeTimeout = setTimeout(() => {\n for (const [element, items] of this.charts.entries()) {\n this.render(element, items);\n }\n }, 300);\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface UiOptions {\n iconSettings: {\n path: string;\n collection: string;\n mode: 'external' | undefined;\n };\n}\n\nexport const UI_OPTIONS = new InjectionToken<UiOptions>('UI_OPTIONS');\n","import { Injectable, inject } from '@angular/core';\nimport { UI_OPTIONS, UiOptions } from './models/ui-options';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UiService {\n private options = inject<UiOptions>(UI_OPTIONS);\n\n\n get(): UiOptions {\n return this.options;\n } \n}\n","import { Component, computed, HostBinding, inject, input } from '@angular/core';\n\nimport { UiService } from '../ui.service';\n\n@Component({\n selector: 'ft-icon',\n standalone: true,\n imports: [],\n templateUrl: './icon.component.html',\n styleUrl: './icon.component.scss'\n})\nexport class IconComponent {\n private options = inject(UiService);\n public collection = input<string>();\n public mode = input<string>();\n public name = input.required<string>();\n public path = input<string>();\n public src = input<string>();\n public url = computed(() => {\n let collection = this.collection();\n let mode = this.mode();\n let path = this.path();\n const options = this.options.get().iconSettings;\n // Set the default collection if the mode is external\n if (!this.collection()) {\n if (options && options.collection) {\n collection = options.collection;\n } else if (this.mode() === 'external') {\n collection = 'icons';\n }\n }\n if (!this.mode()) {\n if (this.options.get().iconSettings && options.mode) {\n mode = options.mode;\n } else {\n mode = 'external';\n }\n }\n if (mode === 'external') {\n // If the icon mode is external\n if (!this.path()) {\n if (options && 'path' in options) {\n path = options.path;\n } else {\n path = 'assets';\n }\n }\n return `${path}/${collection}.svg#${this.name()}`;\n } else {\n // If the icon mode is inline\n const name =\n this.collection() && this.collection() !== 'unset'\n ? `${this.collection()}--${this.name()}`\n : this.name();\n return `#${name}`;\n }\n });\n public class = input<string>();\n @HostBinding('class') get hostClasses(): string {\n return ['ft-icon', this.class()].join(' ');\n }\n}\n","@if (!src()) {\n<svg>\n <use attr.href=\"{{ url() }}\" />\n</svg>\n} @else {\n<img [src]=\"src()\" alt=\"\" />\n}","import { Component, ElementRef, HostBinding, inject, input } from '@angular/core';\n\nimport { IconComponent } from '../icon/icon.component';\n\n@Component({\n selector: 'ft-image',\n standalone: true,\n imports: [\n IconComponent\n],\n templateUrl: './image.component.html'\n})\nexport class ImageComponent {\n private element = inject(ElementRef);\n\n readonly class = input<string>('');\n @HostBinding('class.ft-image--error') error!: boolean;\n @HostBinding('class.ft-image--loading') loading: boolean = false;\n readonly src = input.required<string>();\n readonly alt = input<string>('');\n shown: boolean = false;\n\n ngOnInit() {\n if (\"IntersectionObserver\" in window) {\n let elementObserver = new IntersectionObserver((entries, observer) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n let image = new Image();\n image.src = this.src();\n setTimeout(() => {\n if (!this.shown && !this.error) {\n this.loading = true;\n }\n }, 100);\n image.onerror = () => {\n this.error = true;\n this.loading = false;\n };\n image.onload = () => {\n if (\"decode\" in image) {\n image.decode().then(() => {\n this.loading = false;\n this.shown = true;\n });\n } else {\n this.loading = false;\n this.shown = true;\n }\n };\n elementObserver.unobserve(this.element.nativeElement);\n }\n });\n }, {\n rootMargin: \"0px 0px 200px 0px\"\n });\n elementObserver.observe(this.element.nativeElement);\n } else {\n console.error('IntersectionObserver not available.');\n this.loading = false;\n this.shown = true;\n }\n }\n @HostBinding('class') get hostClasses(): string {\n return [\n 'ft-image',\n this.class()\n ].join(' ');\n }\n}","@if (shown) {\n <img [src]=\"src()\" [alt]=\"alt()\" />\n}\n@if (error) {\n <ft-icon name=\"warning\" size=\"2\"></ft-icon>\n}","import {\n Component,\n Injectable,\n OutputEmitterRef,\n inject,\n output,\n} from '@angular/core';\nimport {\n MAT_DIALOG_DATA,\n MatDialog,\n MatDialogModule,\n MatDialogRef,\n} from '@angular/material/dialog';\nimport {\n MAT_SNACK_BAR_DATA,\n MatSnackBar,\n MatSnackBarModule,\n} from '@angular/material/snack-bar';\n\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { IconComponent } from './icon/icon.component';\nimport { MessageOptions } from './models/message-options';\nimport { MessageContent } from './models/message-content';\nimport { StringService } from '@factor_ec/utils';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n standalone: true,\n imports: [MatSnackBarModule],\n template: `\n @switch (data.message?.type) { @case ('html') {\n <div [innerHTML]=\"data.message?.content\"></div>\n } @default {\n {{ data.message?.content }}\n } }\n `,\n})\nexport class MessageContentComponent {\n data = inject(MAT_SNACK_BAR_DATA);\n}\n\n@Component({\n standalone: true,\n imports: [CommonModule, MatButtonModule, MatDialogModule, IconComponent],\n template: `\n @if (data.options?.title) {\n <h1 mat-dialog-title class=\"ft-message__title\">\n @if (data.options?.titleIcon) {\n <ft-icon\n [name]=\"data.options?.titleIcon?.name\"\n [collection]=\"data.options?.titleIcon?.collection\"\n [ngClass]=\"data.options?.titleIcon?.class\"\n ></ft-icon>\n }\n <div>{{ data.options?.title }}</div>\n </h1>\n }\n <div\n mat-dialog-content\n class=\"ft-message__content\"\n [ngClass]=\"data.options?.class\"\n >\n @if (data.options?.icon) {\n <ft-icon\n [name]=\"data.options?.icon?.name\"\n [collection]=\"data.options?.icon?.collection\"\n [ngClass]=\"data.options?.icon?.class\"\n ></ft-icon>\n } @switch (data.message?.type) { @case ('html') {\n <div [innerHTML]=\"data.message?.content\"></div>\n } @default {\n {{ data.message?.content }}\n } }\n </div>\n @if (data.options.actionsVisible) {\n <div mat-dialog-actions class=\"ft-message__actions\">\n @if (data.options?.actions?.length > 0) { @for (action of\n data.options?.actions; track action; let i = $index) { @switch\n (action.type) { @case ('raised') {\n <button\n type=\"button\"\n mat-raised-button\n [color]=\"action.metadata?.color\"\n (click)=\"select(action.value)\"\n >\n {{ action.label }}\n </button>\n } @case ('flat') {\n <button\n type=\"button\"\n mat-flat-button\n [color]=\"action.metadata?.color\"\n (click)=\"select(action.value)\"\n >\n {{ action.label }}\n </button>\n } @case ('stroked') {\n <button\n type=\"button\"\n mat-stroked-button\n [color]=\"action.metadata?.color\"\n (click)=\"select(action.value)\"\n >\n {{ action.label }}\n </button>\n } @default {\n <button type=\"button\" mat-button (click)=\"select(action.value)\">\n {{ action.label }}\n </button>\n } } } } @else {\n <button\n type=\"button\"\n mat-flat-button\n color=\"primary\"\n (click)=\"select('-1')\"\n i18n\n >\n Accept\n </button>\n }\n </div>\n }\n `,\n})\nexport class MessageDialogComponent {\n data = inject(MAT_DIALOG_DATA);\n\n readonly beforeSelect: OutputEmitterRef<string> = output();\n\n select(value: string) {\n this.beforeSelect.emit(value);\n }\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MessageService {\n private snackBar = inject(MatSnackBar);\n private dialog = inject(MatDialog);\n private stringService = inject(StringService);\n\n show(\n message: string | MessageContent,\n options?: MessageOptions\n ): Observable<any> {\n const selectionSource: ReplaySubject<string> = new ReplaySubject<string>(\n undefined\n );\n const selection: Observable<string> = selectionSource.asObservable();\n const defaults: MessageOptions = {\n type: 'notification',\n duration: 2000,\n actionsVisible: true,\n };\n options = Object.assign(defaults, options);\n const data = {\n message:\n typeof message === 'string'\n ? { content: message, type: 'text' }\n : message,\n options,\n };\n let dialogRef: MatDialogRef<MessageDialogComponent>;\n switch (options.type) {\n default:\n case 'notification':\n const snackBarRef = this.snackBar.openFromComponent(\n MessageContentComponent,\n {\n data,\n panelClass: ['ft-message', 'ft-message--notification'],\n duration: Math.min(\n this.stringService.calculateReadingTime(\n typeof message === 'string' ? message : message.content\n ),\n 30000\n ),\n verticalPosition: options.verticalPosition || 'top',\n }\n );\n snackBarRef.onAction().subscribe(() => {\n snackBarRef.dismiss();\n });\n break;\n case 'modal':\n dialogRef = this.dialog.open(MessageDialogComponent, {\n width: options.width || '350px',\n data,\n panelClass: ['ft-message', 'ft-message--modal'],\n autoFocus: false,\n disableClose: true,\n });\n dialogRef.componentInstance.beforeSelect.subscribe((response: any) => {\n selectionSource.next(response);\n dialogRef.close();\n });\n break;\n }\n return selection;\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n Directive,\n ElementRef,\n input,\n OnInit,\n PLATFORM_ID,\n inject,\n OutputEmitterRef,\n output,\n OnDestroy\n} from '@angular/core';\n\n@Directive({\n selector: '[ftObserveIntersecting]',\n standalone: true\n})\nexport class ObserveIntersectingDirective implements OnInit, OnDestroy {\n private element = inject(ElementRef);\n private readonly platformId = inject(PLATFORM_ID);\n private elementObserver: IntersectionObserver | null = null;\n\n ftObserveIntersectingOptions = input<{\n root?: HTMLElement;\n rootMargin?: string;\n threshold?: number | number[];\n }>();\n public readonly event: OutputEmitterRef<boolean> = output({ alias: 'ftObserveIntersecting' });\n \n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n if ('IntersectionObserver' in window) {\n this.elementObserver = new IntersectionObserver((entries) => {\n entries.forEach((entry: IntersectionObserverEntry) => {\n this.event.emit(entry.isIntersecting);\n });\n }, this.ftObserveIntersectingOptions());\n this.elementObserver.observe(this.element.nativeElement);\n } else {\n console.error('ftObserveIntersecting not available in this browser.');\n }\n }\n }\n ngOnDestroy(): void {\n if (this.elementObserver) {\n this.elementObserver.disconnect();\n this.elementObserver = null;\n }\n }\n}\n","import { Component, HostBinding, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'ft-progress',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './progress.component.html',\n styleUrl: './progress.component.scss'\n})\nexport class ProgressComponent {\n mode = input<'determinate' | 'indeterminate'>('indeterminate');\n overlay = input<boolean>(false);\n value = input<number>(0);\n\n class = input<string>('');\n @HostBinding('class')\n get hostClasses(): string {\n return [\n 'ft-progress',\n this.overlay() ? 'ft-progress--overlay' : '',\n this.class()\n ].join(' ');\n }\n}\n","<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 100 100\"\n preserveAspectRatio=\"xMidYMid\">\n <circle class=\"ft-track\" cx=\"50\" cy=\"50\" r=\"40\" />\n <circle class=\"ft-bar\" [ngClass]=\"mode() === 'determinate' ? 'ft-bar--determinate' : 'ft-bar--indeterminate'\" cx=\"50\"\n cy=\"50\" r=\"40\"\n [ngStyle]=\"{'stroke-dashoffset': mode() === 'determinate'? 'calc((3.14159265 * 40 * 2 * (100 - ' + value() + ')) / 100)' : null}\">\n </circle>\n</svg>","import { Component, Input, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'ft-rating',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './rating.component.html',\n styleUrl: './rating.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: RatingComponent,\n multi: true\n }\n ]\n})\nexport class RatingComponent implements ControlValueAccessor {\n disabled: boolean = false;\n hoverValue!: number;\n propagateChange = (_: any) => { };\n readonly readOnly = input<boolean>(false);\n stars: any[] = [\n { value: 1 },\n { value: 2 },\n { value: 3 },\n { value: 4 },\n { value: 5 }\n ];\n _value!: number;\n\n get value() {\n return this._value;\n }\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input() set value(value: any) {\n this._value = value;\n this.propagateChange(this._value);\n }\n registerOnChange(fn: (_: any) => void) {\n this.propagateChange = fn;\n }\n registerOnTouched(fn: (_: any) => void) {\n //this.propagateChange = fn;\n }\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n setRate(value: number, isHover?: boolean) {\n if (isHover) {\n this.hoverValue = value;\n } else {\n this.value = value;\n }\n }\n updateValue(event: any) {\n this.value = event.target.value;\n }\n writeValue(value: string) {\n this.value = value;\n }\n}","@for (star of stars; track star) {\n <ng-container *ngTemplateOutlet=\"!readOnly()? buttonTemplate : starTemplate; context:{star:star}\"></ng-container>\n}\n<ng-template #buttonTemplate let-star=\"star\">\n @if (!readOnly()) {\n <button type=\"button\" class=\"ft-rating__item\" [disabled]=\"disabled\"\n (mouseover)=\"setRate(star.value, true)\" (focus)=\"setRate(star.value, true)\" (blur)=\"setRate(0, true)\"\n (mouseout)=\"setRate(0, true)\" (click)=\"setRate(star.value)\">\n <ng-container *ngTemplateOutlet=\"starTemplate; context:{star:star}\"></ng-container>\n </button>\n } @else {\n <svg [ngClass]=\"{'ft-rating__item-icon--hover': hoverValue >= star.value, 'ft-rating__item-icon--active': value >= star.value}\"\n viewBox=\"0 0 24 24\">\n <path\n d=\"M17.93 21.315c-.534.408-5.22-3.186-5.881-3.181-.663 0-5.307 3.656-5.846 3.254-.537-.403 1.29-6.165 1.081-6.822-.209-.656-4.972-4.138-4.772-4.796.201-.658 6.015-.627 6.55-1.036.533-.41 2.233-6.215 2.895-6.219.663 0 2.43 5.779 2.968 6.182.539.403 6.352.297 6.56.953.21.656-4.513 4.197-4.714 4.856-.2.658 1.692 6.398 1.159 6.808z\" />\n </svg>\n }\n</ng-template>\n<ng-template #starTemplate let-star=\"star\">\n <svg [ngClass]=\"{'ft-rating__item-icon--hover': hoverValue >= star.value, 'ft-rating__item-icon--active': value >= star.value}\"\n viewBox=\"0 0 24 24\">\n <path\n d=\"M17.93 21.315c-.534.408-5.22-3.186-5.881-3.181-.663 0-5.307 3.656-5.846 3.254-.537-.403 1.29-6.165 1.081-6.822-.209-.656-4.972-4.138-4.772-4.796.201-.658 6.015-.627 6.55-1.036.533-.41 2.233-6.215 2.895-6.219.663 0 2.43 5.779 2.968 6.182.539.403 6.352.297 6.56.953.21.656-4.513 4.197-4.714 4.856-.2.658 1.692 6.398 1.159 6.808z\" />\n </svg>\n</ng-template>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AvatarComponent } from './avatar/avatar.component';\nimport { IconComponent } from './icon/icon.component';\nimport { ImageComponent } from './image/image.component';\nimport { ProgressComponent } from './progress/progress.component';\nimport { RatingComponent } from './rating/rating.component';\nimport { ObserveIntersectingDirective } from './observe-intersecting.directive';\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n AvatarComponent,\n IconComponent,\n ImageComponent,\n ProgressComponent,\n RatingComponent,\n ObserveIntersectingDirective\n ],\n exports: [\n AvatarComponent,\n IconComponent,\n ImageComponent,\n ProgressComponent,\n RatingComponent,\n ObserveIntersectingDirective\n ]\n})\nexport class UiModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"factor_ec-ui.mjs","sources":["../../../projects/ui/src/lib/avatar/avatar.component.ts","../../../projects/ui/src/lib/avatar/avatar.component.html","../../../projects/ui/src/lib/chart.service.ts","../../../projects/ui/src/lib/models/ui-options.ts","../../../projects/ui/src/lib/ui.service.ts","../../../projects/ui/src/lib/icon/icon.component.ts","../../../projects/ui/src/lib/icon/icon.component.html","../../../projects/ui/src/lib/image/image.component.ts","../../../projects/ui/src/lib/image/image.component.html","../../../projects/ui/src/lib/message.service.ts","../../../projects/ui/src/lib/observe-intersecting.directive.ts","../../../projects/ui/src/lib/progress/progress.component.ts","../../../projects/ui/src/lib/progress/progress.component.html","../../../projects/ui/src/lib/rating/rating.component.ts","../../../projects/ui/src/lib/rating/rating.component.html","../../../projects/ui/src/lib/ui.module.ts","../../../projects/ui/src/factor_ec-ui.ts"],"sourcesContent":["import { Component, computed, effect, HostBinding, input, signal, inject } from '@angular/core';\n\n\nimport { ColorService } from '@factor_ec/utils';\n\n@Component({\n selector: 'ft-avatar',\n standalone: true,\n imports: [],\n templateUrl: './avatar.component.html',\n styleUrl: './avatar.component.scss'\n})\nexport class AvatarComponent {\n private colorService = inject(ColorService);\n\n color = input<string>();\n initials = computed(() => {\n return this.getInitials(this.label());\n });\n label = input.required<string>();\n loaded = signal<boolean>(false);\n src = input<string>();\n @HostBinding('style.background-color') get backgroundColor(): string {\n return this.color() || this.colorService.hex(this.label());\n }\n @HostBinding('style.background-image') get backgroundImage(): string {\n return this.src() ? `url(${this.src()})` : '';\n }\n class = input<string>();\n @HostBinding('class') get hostClasses(): string {\n return ['ft-avatar', this.class()].join(' ');\n }\n\n constructor() {\n // Usa `effect` para reaccionar a los cambios en el valor de `src`\n effect(() => {\n const value = this.src();\n if (value && value.trim() !== '') {\n const image = new Image();\n image.src = value;\n image.onload = () => {\n if ('decode' in image) {\n image.decode().then(() => {\n this.loaded.set(true);\n });\n } else {\n console.error('Image.decode not available.');\n }\n };\n }\n });\n }\n \n getInitials(value: string): string {\n const allInitials: string[] = value.match(/\\b\\w/g) || [];\n const initials: string = ((allInitials.shift() || '') + (allInitials.pop() || '')).toUpperCase();\n return initials;\n }\n}\n","@if (!loaded()) {\n<div>{{ initials() }}</div>\n}","import { Injectable } from '@angular/core';\n\nimport * as d3 from 'd3';\n\nimport { Chart } from './models/chart';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ChartService {\n private resizeTimeout!: ReturnType<typeof setTimeout>;\n private charts: Map<SVGElement, any> = new Map();\n\n constructor() {\n window.addEventListener('resize', this.handleResize.bind(this));\n }\n\n remove(element: SVGElement): void {\n this.charts.delete(element);\n }\n render(element: SVGElement, items: Chart[]): void {\n // Clear svg\n const svg = d3.select(element).html('');\n \n // Resize event\n if (!this.charts.has(element)) {\n this.charts.set(element, items);\n }\n\n const values: number[] = [0];\n items.forEach((item) => {\n item.data.forEach((i) => {\n if (typeof i[item.field] === 'number') {\n values.push(i[item.field]);\n }\n });\n });\n if (values.length > 0) {\n const domain: any = d3.extent(values);\n\n // Dibujo los gráficos\n items.forEach((item) => {\n switch (item.type) {\n case 'limit':\n this.drawLimitChart(svg, { ...item, domain });\n break;\n case 'column':\n this.drawColumnChart(svg, { ...item, domain });\n break;\n case 'line':\n this.drawLineChart(svg, { ...item, domain });\n break;\n case 'circle':\n this.drawCircleChart(svg, { ...item, domain });\n break;\n case 'event':\n this.drawEventsPlaceholder(svg, { ...item, domain });\n break;\n }\n });\n }\n }\n private drawAxis(svg: any, values: any[], domain: any): void {\n const element = svg.node()?.getBoundingClientRect();\n const yScale = d3\n .scaleLinear()\n .domain(domain)\n .range([element?.height || 0 - 4, 4]);\n\n // Dibuja el eje en X\n svg.select('.x-axis').remove();\n svg\n .append('rect')\n .attr('class', 'x-axis')\n .attr('fill', 'rgba(0, 0, 0, 0.08)')\n .attr('x', 0)\n .attr('width', element?.width || 0)\n .attr('height', 1)\n .attr('shape-rendering', 'crispEdges')\n .attr('y', yScale(0));\n\n /*\n const yScale = d3.scaleLinear().domain([-5000, 8000]).range([this.height, 0]);\n const yAxisGenerator = d3.axisLeft(yScale).ticks(8);\n this.svg.append('g').call(yAxisGenerator).style('transform', 'translateX(50px)');\n */\n }\n private drawCircleChart(svg: any, options: Chart): void {\n const domRect: DOMRect = svg.node().getBoundingClientRect();\n const xAccessor = (d: any) => d[options.categoryField];\n const yAccessor = (d: any) => d[options.field] || 0;\n const xScale = d3\n .scaleBand()\n .domain(options.data.map(xAccessor))\n .range([0, domRect.width])\n .padding(typeof options.padding === 'number' ? options.padding : 0);\n const yScale = d3\n .scaleLinear()\n .domain(\n options.domain ?? [\n Math.min(d3.min(options.data, yAccessor), 0),\n d3.max(options.data, yAccessor),\n ]\n )\n .range([domRect.height - 10, 10]);\n\n const circles = svg\n .append('g')\n .attr('class', 'ft-chart__circle')\n .selectAll(`circle`)\n .data(options.data);\n circles\n .enter()\n .append('circle')\n .style('stroke', options.color ?? '#ff9800')\n .attr('stroke-width', options.strokeWidth ?? 1)\n .style('fill', 'var(--ft-body-bg)')\n .attr('r', 1.5)\n .merge(circles)\n .attr('cx', (d: any) =>\n Math.round((xScale(xAccessor(d)) || 0) + xScale.bandwidth() / 2)\n )\n .attr('cy', (d: any) =>\n Math.round(yScale(yAccessor(d)))\n );\n circles.exit().remove();\n }\n private drawColumnChart(svg: any, options: Chart): void {\n const element = svg.node().getBoundingClientRect();\n const xAccessor = (d: any) => d[options.categoryField];\n //const xAccessor = (d: any) => (new Date(d[options.categoryField]))?.getTime();\n const yAccessor = (d: any) => d[options.field] || 0;\n\n const xScale = d3\n .scaleBand()\n .domain(options.data.map(xAccessor))\n .range([0, element.width])\n .padding(options.padding ?? 0.5);\n const yScale = d3\n .scaleLinear()\n .domain(\n options.domain\n ? options.domain\n : [\n Math.min(d3.min(options.data, yAccessor), 0),\n d3.max(options.data, yAccessor),\n ]\n )\n .range([element.height - 4, 4]);\n\n const columns = svg\n .append('g')\n .attr('class', 'ft-chart__column')\n .selectAll('rect')\n .data(options.data);\n columns\n .enter()\n .append('rect')\n .attr('x', (d: any) => xScale(xAccessor(d)))\n .attr('y', (d: any) => yScale(yAccessor(d)))\n .attr('shape-rendering', 'crispEdges')\n .attr('fill', options.color ?? '#ff9800')\n .attr('title', (d: any) => d[options.field])\n .merge(columns)\n .attr('width', Math.max(1, xScale.bandwidth()))\n .attr('height', (d: any) => Math.abs(yScale(yAccessor(d)) - yScale(0)));\n columns.exit().remove();\n }\n private drawLineChart(svg: any, options: Chart): void {\n const domRect: DOMRect = svg.node().getBoundingClientRect();\n const xAccessor = (d: any) => d[options.categoryField];\n const yAccessor = (d: any) => d[options.field] || 0;\n const xScale = d3\n .scaleBand()\n .domain(options.data.map(xAccessor))\n .range([0, domRect.width])\n .padding(typeof options.padding === 'number' ? options.padding : 0);\n const yScale = d3\n .scaleLinear()\n .domain(\n options.domain ?? [\n Math.min(d3.min(options.data, yAccessor), 0),\n d3.max(options.data, yAccessor),\n ]\n )\n .range([domRect.height - 10, 10]);\n\n const lineGenerator = d3\n .line()\n .x((d: any) =>\n Math.round((xScale(xAccessor(d)) || 0) + xScale.bandwidth() / 2)\n )\n .y((d: any) => Math.round(yScale(yAccessor(d))));\n svg\n .append('path')\n .attr('class', 'ft-chart__line')\n .attr('fill', 'none')\n .attr('stroke', options.color ?? '#ff9800')\n .attr('stroke-width', options.strokeWidth ?? 2)\n .attr('stroke-linecap', 'round')\n .attr('d', lineGenerator(options.data));\n }\n private drawLimitChart(svg: any, options: Chart): void {\n const element = svg.node().getBoundingClientRect();\n const yAccessor = (d: any) => d[options.field] || 0;\n const yScale = d3\n .scaleLinear()\n .domain(\n options.domain\n ? options.domain\n : [\n Math.min(d3.min(options.data, yAccessor), 0),\n d3.max(options.data, yAccessor),\n ]\n )\n .range([element.height - 4, 4]);\n const line = svg.append('g').selectAll('rect').data([options.data[0]]);\n line\n .enter()\n .append('rect')\n .attr('x', 0)\n .attr('y', (d: any) => yScale(yAccessor(d)) + 1)\n .attr('shape-rendering', 'crispEdges')\n .attr('fill', options.color ?? '#ff9800')\n .attr('title', 0)\n .attr('width', () => '100%')\n .attr('height', 1);\n line.exit().remove();\n\n line\n .enter()\n .append('text')\n .attr(\n 'style',\n 'font-weight: 600; font-size: var(--ft-text-font-size-sm);'\n )\n .attr('x', 0)\n .attr('y', (d: any) => yScale(yAccessor(d)) + 16)\n .attr('fill', 'var(--ft-danger-color)')\n .text(options.label);\n }\n private drawEventsPlaceholder(svg: any, options: Chart): void {\n const domRect: DOMRect = svg.node().getBoundingClientRect();\n const xAccessor = (d: any) => d[options.categoryField];\n const yAccessor = (d: any) => d[options.field] || 0;\n const xScale = d3\n .scaleBand()\n .domain(options.data.map(xAccessor))\n .range([0, domRect.width])\n .padding(typeof options.padding === 'number' ? options.padding : 0);\n const yScale = d3\n .scaleLinear()\n .domain(\n options.domain ?? [\n Math.min(d3.min(options.data, yAccessor), 0),\n d3.max(options.data, yAccessor),\n ]\n )\n .range([domRect.height, 0]);\n\n const columns = svg\n .append('g')\n .attr('class', 'ft-chart__placeholder')\n .selectAll('rect')\n .data(options.data);\n columns\n .enter()\n .append('rect')\n .attr('x', (d: any) => xScale(d[options.categoryField]))\n .attr('y', () => 0)\n .attr('shape-rendering', 'crispEdges')\n .attr('fill', 'rgba(0,0,0,0)')\n .attr('tabindex', 0)\n .merge(columns)\n .attr('width', Math.max(1, xScale.bandwidth()))\n .attr('height', () => yScale(0))\n .on('click', (event: MouseEvent, d: any) => {\n if (options.click) {\n options.click(event, d);\n }\n });\n columns.exit().remove();\n }\n private handleResize(): void {\n clearTimeout(this.resizeTimeout);\n this.resizeTimeout = setTimeout(() => {\n for (const [element, items] of this.charts.entries()) {\n this.render(element, items);\n }\n }, 300);\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface UiOptions {\n iconSettings: {\n path: string;\n collection: string;\n mode: 'external' | undefined;\n };\n}\n\nexport const UI_OPTIONS = new InjectionToken<UiOptions>('UI_OPTIONS');\n","import { Injectable, inject } from '@angular/core';\nimport { UI_OPTIONS, UiOptions } from './models/ui-options';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UiService {\n private options = inject<UiOptions>(UI_OPTIONS);\n\n\n get(): UiOptions {\n return this.options;\n } \n}\n","import { Component, computed, HostBinding, inject, input } from '@angular/core';\n\nimport { UiService } from '../ui.service';\n\n@Component({\n selector: 'ft-icon',\n standalone: true,\n imports: [],\n templateUrl: './icon.component.html',\n styleUrl: './icon.component.scss'\n})\nexport class IconComponent {\n private options = inject(UiService);\n public collection = input<string>();\n public mode = input<string>();\n public name = input.required<string>();\n public path = input<string>();\n public src = input<string>();\n public url = computed(() => {\n let collection = this.collection();\n let mode = this.mode();\n let path = this.path();\n const options = this.options.get().iconSettings;\n // Set the default collection if the mode is external\n if (!this.collection()) {\n if (options && options.collection) {\n collection = options.collection;\n } else if (this.mode() === 'external') {\n collection = 'icons';\n }\n }\n if (!this.mode()) {\n if (this.options.get().iconSettings && options.mode) {\n mode = options.mode;\n } else {\n mode = 'external';\n }\n }\n if (mode === 'external') {\n // If the icon mode is external\n if (!this.path()) {\n if (options && 'path' in options) {\n path = options.path;\n } else {\n path = 'assets';\n }\n }\n return `${path}/${collection}.svg#${this.name()}`;\n } else {\n // If the icon mode is inline\n const name =\n this.collection() && this.collection() !== 'unset'\n ? `${this.collection()}--${this.name()}`\n : this.name();\n return `#${name}`;\n }\n });\n public class = input<string>();\n @HostBinding('class') get hostClasses(): string {\n return ['ft-icon', this.class()].join(' ');\n }\n}\n","@if (!src()) {\n<svg>\n <use attr.href=\"{{ url() }}\" />\n</svg>\n} @else {\n<img [src]=\"src()\" alt=\"\" />\n}","import {\n Component,\n ElementRef,\n HostBinding,\n inject,\n input,\n} from '@angular/core';\n\nimport { IconComponent } from '../icon/icon.component';\n\n@Component({\n selector: 'ft-image',\n standalone: true,\n imports: [IconComponent],\n templateUrl: './image.component.html',\n styleUrl: './image.component.scss'\n})\nexport class ImageComponent {\n private element = inject(ElementRef);\n\n readonly class = input<string>('');\n @HostBinding('class.ft-image--error') error!: boolean;\n @HostBinding('class.ft-image--loading') loading: boolean = false;\n readonly src = input.required<string>();\n readonly alt = input<string>('');\n shown: boolean = false;\n\n ngOnInit() {\n if ('IntersectionObserver' in window) {\n let elementObserver = new IntersectionObserver(\n (entries, observer) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n let image = new Image();\n image.src = this.src();\n setTimeout(() => {\n if (!this.shown && !this.error) {\n this.loading = true;\n }\n }, 100);\n image.onerror = () => {\n this.error = true;\n this.loading = false;\n };\n image.onload = () => {\n if ('decode' in image) {\n image.decode().then(() => {\n this.loading = false;\n this.shown = true;\n });\n } else {\n this.loading = false;\n this.shown = true;\n }\n };\n elementObserver.unobserve(this.element.nativeElement);\n }\n });\n },\n {\n rootMargin: '0px 0px 200px 0px',\n }\n );\n elementObserver.observe(this.element.nativeElement);\n } else {\n console.error('IntersectionObserver not available.');\n this.loading = false;\n this.shown = true;\n }\n }\n @HostBinding('class') get hostClasses(): string {\n return ['ft-image', this.class()].join(' ');\n }\n}\n","@if (shown) {\n <img [src]=\"src()\" [alt]=\"alt()\" />\n}\n@if (error) {\n <ft-icon name=\"warning\" size=\"2\"></ft-icon>\n}","import {\n Component,\n Injectable,\n OutputEmitterRef,\n inject,\n output,\n} from '@angular/core';\nimport {\n MAT_DIALOG_DATA,\n MatDialog,\n MatDialogModule,\n MatDialogRef,\n} from '@angular/material/dialog';\nimport {\n MAT_SNACK_BAR_DATA,\n MatSnackBar,\n MatSnackBarModule,\n} from '@angular/material/snack-bar';\n\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { IconComponent } from './icon/icon.component';\nimport { MessageOptions } from './models/message-options';\nimport { MessageContent } from './models/message-content';\nimport { StringService } from '@factor_ec/utils';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n standalone: true,\n imports: [MatSnackBarModule],\n template: `\n @switch (data.message?.type) { @case ('html') {\n <div [innerHTML]=\"data.message?.content\"></div>\n } @default {\n {{ data.message?.content }}\n } }\n `,\n})\nexport class MessageContentComponent {\n data = inject(MAT_SNACK_BAR_DATA);\n}\n\n@Component({\n standalone: true,\n imports: [CommonModule, MatButtonModule, MatDialogModule, IconComponent],\n template: `\n @if (data.options?.title) {\n <h1 mat-dialog-title class=\"ft-message__title\">\n @if (data.options?.titleIcon) {\n <ft-icon\n [name]=\"data.options?.titleIcon?.name\"\n [collection]=\"data.options?.titleIcon?.collection\"\n [ngClass]=\"data.options?.titleIcon?.class\"\n ></ft-icon>\n }\n <div>{{ data.options?.title }}</div>\n </h1>\n }\n <div\n mat-dialog-content\n class=\"ft-message__content\"\n [ngClass]=\"data.options?.class\"\n >\n @if (data.options?.icon) {\n <ft-icon\n [name]=\"data.options?.icon?.name\"\n [collection]=\"data.options?.icon?.collection\"\n [ngClass]=\"data.options?.icon?.class\"\n ></ft-icon>\n } @switch (data.message?.type) { @case ('html') {\n <div [innerHTML]=\"data.message?.content\"></div>\n } @default {\n {{ data.message?.content }}\n } }\n </div>\n @if (data.options.actionsVisible) {\n <div mat-dialog-actions class=\"ft-message__actions\">\n @if (data.options?.actions?.length > 0) { @for (action of\n data.options?.actions; track action; let i = $index) { @switch\n (action.type) { @case ('raised') {\n <button\n type=\"button\"\n mat-raised-button\n [color]=\"action.metadata?.color\"\n (click)=\"select(action.value)\"\n >\n {{ action.label }}\n </button>\n } @case ('flat') {\n <button\n type=\"button\"\n mat-flat-button\n [color]=\"action.metadata?.color\"\n (click)=\"select(action.value)\"\n >\n {{ action.label }}\n </button>\n } @case ('stroked') {\n <button\n type=\"button\"\n mat-stroked-button\n [color]=\"action.metadata?.color\"\n (click)=\"select(action.value)\"\n >\n {{ action.label }}\n </button>\n } @default {\n <button type=\"button\" mat-button (click)=\"select(action.value)\">\n {{ action.label }}\n </button>\n } } } } @else {\n <button\n type=\"button\"\n mat-flat-button\n color=\"primary\"\n (click)=\"select('-1')\"\n i18n\n >\n Accept\n </button>\n }\n </div>\n }\n `,\n})\nexport class MessageDialogComponent {\n data = inject(MAT_DIALOG_DATA);\n\n readonly beforeSelect: OutputEmitterRef<string> = output();\n\n select(value: string) {\n this.beforeSelect.emit(value);\n }\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MessageService {\n private snackBar = inject(MatSnackBar);\n private dialog = inject(MatDialog);\n private stringService = inject(StringService);\n\n show(\n message: string | MessageContent,\n options?: MessageOptions\n ): Observable<any> {\n const selectionSource: ReplaySubject<string> = new ReplaySubject<string>(\n undefined\n );\n const selection: Observable<string> = selectionSource.asObservable();\n const defaults: MessageOptions = {\n type: 'notification',\n duration: 2000,\n actionsVisible: true,\n };\n options = Object.assign(defaults, options);\n const data = {\n message:\n typeof message === 'string'\n ? { content: message, type: 'text' }\n : message,\n options,\n };\n let dialogRef: MatDialogRef<MessageDialogComponent>;\n switch (options.type) {\n default:\n case 'notification':\n const snackBarRef = this.snackBar.openFromComponent(\n MessageContentComponent,\n {\n data,\n panelClass: ['ft-message', 'ft-message--notification'],\n duration: Math.min(\n this.stringService.calculateReadingTime(\n typeof message === 'string' ? message : message.content\n ),\n 30000\n ),\n verticalPosition: options.verticalPosition || 'top',\n }\n );\n snackBarRef.onAction().subscribe(() => {\n snackBarRef.dismiss();\n });\n break;\n case 'modal':\n dialogRef = this.dialog.open(MessageDialogComponent, {\n width: options.width || '350px',\n data,\n panelClass: ['ft-message', 'ft-message--modal'],\n autoFocus: false,\n disableClose: true,\n });\n dialogRef.componentInstance.beforeSelect.subscribe((response: any) => {\n selectionSource.next(response);\n dialogRef.close();\n });\n break;\n }\n return selection;\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n Directive,\n ElementRef,\n input,\n OnInit,\n PLATFORM_ID,\n inject,\n OutputEmitterRef,\n output,\n OnDestroy\n} from '@angular/core';\n\n@Directive({\n selector: '[ftObserveIntersecting]',\n standalone: true\n})\nexport class ObserveIntersectingDirective implements OnInit, OnDestroy {\n private element = inject(ElementRef);\n private readonly platformId = inject(PLATFORM_ID);\n private elementObserver: IntersectionObserver | null = null;\n\n ftObserveIntersectingOptions = input<{\n root?: HTMLElement;\n rootMargin?: string;\n threshold?: number | number[];\n }>();\n public readonly event: OutputEmitterRef<boolean> = output({ alias: 'ftObserveIntersecting' });\n \n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n if ('IntersectionObserver' in window) {\n this.elementObserver = new IntersectionObserver((entries) => {\n entries.forEach((entry: IntersectionObserverEntry) => {\n this.event.emit(entry.isIntersecting);\n });\n }, this.ftObserveIntersectingOptions());\n this.elementObserver.observe(this.element.nativeElement);\n } else {\n console.error('ftObserveIntersecting not available in this browser.');\n }\n }\n }\n ngOnDestroy(): void {\n if (this.elementObserver) {\n this.elementObserver.disconnect();\n this.elementObserver = null;\n }\n }\n}\n","import { Component, HostBinding, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'ft-progress',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './progress.component.html',\n styleUrl: './progress.component.scss'\n})\nexport class ProgressComponent {\n mode = input<'determinate' | 'indeterminate'>('indeterminate');\n overlay = input<boolean>(false);\n value = input<number>(0);\n\n class = input<string>('');\n @HostBinding('class')\n get hostClasses(): string {\n return [\n 'ft-progress',\n this.overlay() ? 'ft-progress--overlay' : '',\n this.class()\n ].join(' ');\n }\n}\n","<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 100 100\"\n preserveAspectRatio=\"xMidYMid\">\n <circle class=\"ft-track\" cx=\"50\" cy=\"50\" r=\"40\" />\n <circle class=\"ft-bar\" [ngClass]=\"mode() === 'determinate' ? 'ft-bar--determinate' : 'ft-bar--indeterminate'\" cx=\"50\"\n cy=\"50\" r=\"40\"\n [ngStyle]=\"{'stroke-dashoffset': mode() === 'determinate'? 'calc((3.14159265 * 40 * 2 * (100 - ' + value() + ')) / 100)' : null}\">\n </circle>\n</svg>","import { Component, Input, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'ft-rating',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './rating.component.html',\n styleUrl: './rating.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: RatingComponent,\n multi: true\n }\n ]\n})\nexport class RatingComponent implements ControlValueAccessor {\n disabled: boolean = false;\n hoverValue!: number;\n propagateChange = (_: any) => { };\n readonly readOnly = input<boolean>(false);\n stars: any[] = [\n { value: 1 },\n { value: 2 },\n { value: 3 },\n { value: 4 },\n { value: 5 }\n ];\n _value!: number;\n\n get value() {\n return this._value;\n }\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input() set value(value: any) {\n this._value = value;\n this.propagateChange(this._value);\n }\n registerOnChange(fn: (_: any) => void) {\n this.propagateChange = fn;\n }\n registerOnTouched(fn: (_: any) => void) {\n //this.propagateChange = fn;\n }\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n setRate(value: number, isHover?: boolean) {\n if (isHover) {\n this.hoverValue = value;\n } else {\n this.value = value;\n }\n }\n updateValue(event: any) {\n this.value = event.target.value;\n }\n writeValue(value: string) {\n this.value = value;\n }\n}","@for (star of stars; track star) {\n <ng-container *ngTemplateOutlet=\"!readOnly()? buttonTemplate : starTemplate; context:{star:star}\"></ng-container>\n}\n<ng-template #buttonTemplate let-star=\"star\">\n @if (!readOnly()) {\n <button type=\"button\" class=\"ft-rating__item\" [disabled]=\"disabled\"\n (mouseover)=\"setRate(star.value, true)\" (focus)=\"setRate(star.value, true)\" (blur)=\"setRate(0, true)\"\n (mouseout)=\"setRate(0, true)\" (click)=\"setRate(star.value)\">\n <ng-container *ngTemplateOutlet=\"starTemplate; context:{star:star}\"></ng-container>\n </button>\n } @else {\n <svg [ngClass]=\"{'ft-rating__item-icon--hover': hoverValue >= star.value, 'ft-rating__item-icon--active': value >= star.value}\"\n viewBox=\"0 0 24 24\">\n <path\n d=\"M17.93 21.315c-.534.408-5.22-3.186-5.881-3.181-.663 0-5.307 3.656-5.846 3.254-.537-.403 1.29-6.165 1.081-6.822-.209-.656-4.972-4.138-4.772-4.796.201-.658 6.015-.627 6.55-1.036.533-.41 2.233-6.215 2.895-6.219.663 0 2.43 5.779 2.968 6.182.539.403 6.352.297 6.56.953.21.656-4.513 4.197-4.714 4.856-.2.658 1.692 6.398 1.159 6.808z\" />\n </svg>\n }\n</ng-template>\n<ng-template #starTemplate let-star=\"star\">\n <svg [ngClass]=\"{'ft-rating__item-icon--hover': hoverValue >= star.value, 'ft-rating__item-icon--active': value >= star.value}\"\n viewBox=\"0 0 24 24\">\n <path\n d=\"M17.93 21.315c-.534.408-5.22-3.186-5.881-3.181-.663 0-5.307 3.656-5.846 3.254-.537-.403 1.29-6.165 1.081-6.822-.209-.656-4.972-4.138-4.772-4.796.201-.658 6.015-.627 6.55-1.036.533-.41 2.233-6.215 2.895-6.219.663 0 2.43 5.779 2.968 6.182.539.403 6.352.297 6.56.953.21.656-4.513 4.197-4.714 4.856-.2.658 1.692 6.398 1.159 6.808z\" />\n </svg>\n</ng-template>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AvatarComponent } from './avatar/avatar.component';\nimport { IconComponent } from './icon/icon.component';\nimport { ImageComponent } from './image/image.component';\nimport { ProgressComponent } from './progress/progress.component';\nimport { RatingComponent } from './rating/rating.component';\nimport { ObserveIntersectingDirective } from './observe-intersecting.directive';\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n AvatarComponent,\n IconComponent,\n ImageComponent,\n ProgressComponent,\n RatingComponent,\n ObserveIntersectingDirective\n ],\n exports: [\n AvatarComponent,\n IconComponent,\n ImageComponent,\n ProgressComponent,\n RatingComponent,\n ObserveIntersectingDirective\n ]\n})\nexport class UiModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|