@lluc_llull/ui-lib 0.1.1 → 0.1.3

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.
Files changed (66) hide show
  1. package/esm2022/lib/Enum/link-type.enum.mjs +9 -0
  2. package/esm2022/lib/components/core/header-clear/header-clear.component.mjs +37 -0
  3. package/esm2022/lib/components/core/header-clear/header-clear.interface.mjs +2 -0
  4. package/esm2022/lib/components/core/header-clear/index.mjs +3 -0
  5. package/esm2022/lib/components/core/hero-section/hero-section.component.mjs +21 -0
  6. package/esm2022/lib/components/core/hero-section/hero-section.interface.mjs +2 -0
  7. package/esm2022/lib/components/core/hero-section/index.mjs +3 -0
  8. package/esm2022/lib/components/core/index.mjs +5 -2
  9. package/esm2022/lib/components/core/lang-modal/index.mjs +3 -0
  10. package/esm2022/lib/components/core/lang-modal/lang-modal.component.mjs +12 -0
  11. package/esm2022/lib/components/core/lang-modal/lang-modal.interface.mjs +2 -0
  12. package/esm2022/lib/components/core/nav-modal/index.mjs +3 -0
  13. package/esm2022/lib/components/core/nav-modal/nav-modal.component.mjs +17 -0
  14. package/esm2022/lib/components/core/nav-modal/nav-modal.interface.mjs +2 -0
  15. package/esm2022/lib/directives/link-type.directive.mjs +106 -0
  16. package/esm2022/lib/interfaces/index.mjs +3 -1
  17. package/esm2022/lib/interfaces/page-config.interface.mjs +1 -1
  18. package/esm2022/lib/interfaces/ui-lib-button.interface.mjs +2 -0
  19. package/esm2022/lib/interfaces/ui-lib-image.interface.mjs +2 -0
  20. package/esm2022/lib/interfaces/ui-lib-nav-items.interface.mjs +2 -0
  21. package/esm2022/lib/services/mapper/component-mappers/header-clear.mapper.mjs +13 -0
  22. package/esm2022/lib/services/mapper/component-mappers/hero-section.mapper.mjs +8 -0
  23. package/esm2022/lib/services/mapper/component-mappers/index.mjs +9 -5
  24. package/esm2022/lib/services/mapper/component-mappers/lang-modal.mapper.mjs +2 -0
  25. package/esm2022/lib/services/mapper/component-mappers/nav-modal.mapper.mjs +29 -0
  26. package/esm2022/lib/utils/index.mjs +2 -0
  27. package/esm2022/lib/utils/utils.mjs +38 -0
  28. package/esm2022/public-api.mjs +2 -2
  29. package/fesm2022/lluc_llull-ui-lib.mjs +270 -15
  30. package/fesm2022/lluc_llull-ui-lib.mjs.map +1 -1
  31. package/lib/Enum/link-type.enum.d.ts +7 -0
  32. package/lib/components/core/header-clear/header-clear.component.d.ts +16 -0
  33. package/lib/components/core/header-clear/header-clear.interface.d.ts +2 -0
  34. package/lib/components/core/header-clear/index.d.ts +2 -0
  35. package/lib/components/core/hero-section/hero-section.component.d.ts +10 -0
  36. package/lib/components/core/hero-section/hero-section.interface.d.ts +7 -0
  37. package/lib/components/core/hero-section/index.d.ts +2 -0
  38. package/lib/components/core/index.d.ts +4 -1
  39. package/lib/components/core/lang-modal/index.d.ts +2 -0
  40. package/lib/components/core/lang-modal/lang-modal.component.d.ts +5 -0
  41. package/lib/components/core/lang-modal/lang-modal.interface.d.ts +2 -0
  42. package/lib/components/core/nav-modal/index.d.ts +2 -0
  43. package/lib/components/core/nav-modal/nav-modal.component.d.ts +8 -0
  44. package/lib/components/core/nav-modal/nav-modal.interface.d.ts +5 -0
  45. package/lib/directives/link-type.directive.d.ts +23 -0
  46. package/lib/interfaces/index.d.ts +2 -0
  47. package/lib/interfaces/page-config.interface.d.ts +3 -0
  48. package/lib/interfaces/ui-lib-button.interface.d.ts +7 -0
  49. package/lib/interfaces/ui-lib-image.interface.d.ts +7 -0
  50. package/lib/interfaces/ui-lib-nav-items.interface.d.ts +10 -0
  51. package/lib/services/mapper/component-mappers/header-clear.mapper.d.ts +2 -0
  52. package/lib/services/mapper/component-mappers/hero-section.mapper.d.ts +2 -0
  53. package/lib/services/mapper/component-mappers/lang-modal.mapper.d.ts +2 -0
  54. package/lib/services/mapper/component-mappers/nav-modal.mapper.d.ts +10 -0
  55. package/lib/utils/index.d.ts +1 -0
  56. package/lib/utils/utils.d.ts +5 -0
  57. package/package.json +1 -1
  58. package/public-api.d.ts +1 -0
  59. package/esm2022/lib/components/core/top-slider/index.mjs +0 -3
  60. package/esm2022/lib/components/core/top-slider/top-slider.component.mjs +0 -12
  61. package/esm2022/lib/components/core/top-slider/top-slider.interface.mjs +0 -2
  62. package/esm2022/lib/services/mapper/component-mappers/top-slider.mapper.mjs +0 -4
  63. package/lib/components/core/top-slider/index.d.ts +0 -2
  64. package/lib/components/core/top-slider/top-slider.component.d.ts +0 -5
  65. package/lib/components/core/top-slider/top-slider.interface.d.ts +0 -2
  66. package/lib/services/mapper/component-mappers/top-slider.mapper.d.ts +0 -2
@@ -1,24 +1,281 @@
1
- import { CommonModule } from '@angular/common';
1
+ import { isPlatformBrowser, CommonModule } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
- import { Component, inject, PLATFORM_ID, Injectable } from '@angular/core';
3
+ import { EventEmitter, inject, PLATFORM_ID, HostListener, Output, Input, Directive, ChangeDetectionStrategy, Component, Injectable } from '@angular/core';
4
+ import * as i1 from '@angular/router';
4
5
 
5
- class TopSliderComponent {
6
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TopSliderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TopSliderComponent, isStandalone: true, selector: "lib-top-slider", ngImport: i0, template: "<p>top-slider works!</p>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
6
+ var LinkType;
7
+ (function (LinkType) {
8
+ LinkType["Internal"] = "internal";
9
+ LinkType["External"] = "external";
10
+ LinkType["Anchor"] = "anchor";
11
+ LinkType["Pdf"] = "pdf";
12
+ LinkType["NoLink"] = "nolink";
13
+ })(LinkType || (LinkType = {}));
14
+
15
+ class LinkTypeDirective {
16
+ constructor(router, elRef) {
17
+ this.router = router;
18
+ this.elRef = elRef;
19
+ this.anchorClicked = new EventEmitter();
20
+ this.platformId = inject(PLATFORM_ID);
21
+ }
22
+ ngOnInit() {
23
+ this.setupLinkAttributes();
24
+ }
25
+ onClick(event) {
26
+ if (!this.linkType || !this.href) {
27
+ this.disableLink();
28
+ return;
29
+ }
30
+ event.preventDefault();
31
+ switch (this.linkType) {
32
+ case 'internal':
33
+ this.navigateInternal(this.href);
34
+ break;
35
+ case 'external':
36
+ case 'pdf':
37
+ this.openExternal(this.href);
38
+ break;
39
+ case 'anchor':
40
+ this.scrollToAnchor(this.href);
41
+ break;
42
+ case 'nolink':
43
+ this.disableLink();
44
+ break;
45
+ default:
46
+ console.warn(`Unsupported linkType: ${this.linkType}`);
47
+ }
48
+ }
49
+ setupLinkAttributes() {
50
+ if (!this.linkType || !this.href) {
51
+ this.disableLink();
52
+ return;
53
+ }
54
+ this.elRef.nativeElement.setAttribute('href', this.href);
55
+ if (this.linkType === 'external') {
56
+ this.elRef.nativeElement.setAttribute('rel', 'nofollow');
57
+ }
58
+ }
59
+ navigateInternal(url) {
60
+ const cleanedUrl = url.trim().replace(/\/+$/, '');
61
+ this.anchorClicked.emit();
62
+ this.router.navigateByUrl('/' + cleanedUrl);
63
+ }
64
+ openExternal(url) {
65
+ if (isPlatformBrowser(this.platformId)) {
66
+ window.open(url, '_blank');
67
+ }
68
+ }
69
+ scrollToAnchor(id) {
70
+ if (isPlatformBrowser(this.platformId)) {
71
+ const el = document.getElementById(id);
72
+ if (el) {
73
+ const yOffset = -160;
74
+ const y = el.getBoundingClientRect().top + window.scrollY + yOffset;
75
+ window.scrollTo({ top: y, behavior: 'smooth' });
76
+ this.anchorClicked.emit();
77
+ }
78
+ else {
79
+ console.warn(`Anchor "${id}" not found`);
80
+ }
81
+ }
82
+ }
83
+ disableLink() {
84
+ const element = this.elRef.nativeElement;
85
+ const parentLi = element.closest('li');
86
+ const isInMenu = parentLi?.classList.contains('menu-item-has-children');
87
+ if (!isInMenu) {
88
+ element.removeAttribute('href');
89
+ element.setAttribute('aria-disabled', 'true');
90
+ element.setAttribute('tabindex', '-1');
91
+ element.style.cursor = 'default';
92
+ element.style.pointerEvents = 'none';
93
+ }
94
+ }
95
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LinkTypeDirective, deps: [{ token: i1.Router }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
96
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: LinkTypeDirective, isStandalone: true, selector: "[linkType]", inputs: { linkType: "linkType", href: "href" }, outputs: { anchorClicked: "anchorClicked" }, host: { listeners: { "click": "onClick($event)" } }, ngImport: i0 }); }
97
+ }
98
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LinkTypeDirective, decorators: [{
99
+ type: Directive,
100
+ args: [{
101
+ selector: '[linkType]',
102
+ standalone: true,
103
+ }]
104
+ }], ctorParameters: () => [{ type: i1.Router }, { type: i0.ElementRef }], propDecorators: { linkType: [{
105
+ type: Input
106
+ }], href: [{
107
+ type: Input
108
+ }], anchorClicked: [{
109
+ type: Output
110
+ }], onClick: [{
111
+ type: HostListener,
112
+ args: ['click', ['$event']]
113
+ }] } });
114
+
115
+ class HeroSectionComponent {
116
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HeroSectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
117
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: HeroSectionComponent, isStandalone: true, selector: "lib-hero-section", inputs: { title: "title", subtitle: "subtitle", text: "text", buttons: "buttons" }, ngImport: i0, template: "<div class=\"hero-section\">\n @if (title) {\n <h1>{{ title }}</h1>\n }\n @if (text) {\n <p>{{ text }}</p>\n }\n @if (buttons && buttons.length > 0) {\n <div class=\"buttons\">\n @for (button of buttons; track $index) {\n <ng-container>\n <a class=\"btn\" [href]=\"button.url\" [linkType]=\"button.linkType\">\n {{ button.label }}\n </a>\n </ng-container>\n }\n </div>\n }\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: LinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href"], outputs: ["anchorClicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8
118
  }
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TopSliderComponent, decorators: [{
119
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HeroSectionComponent, decorators: [{
10
120
  type: Component,
11
- args: [{ selector: 'lib-top-slider', standalone: true, imports: [CommonModule], template: "<p>top-slider works!</p>\n" }]
121
+ args: [{ selector: 'lib-hero-section', standalone: true, imports: [CommonModule, LinkTypeDirective], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"hero-section\">\n @if (title) {\n <h1>{{ title }}</h1>\n }\n @if (text) {\n <p>{{ text }}</p>\n }\n @if (buttons && buttons.length > 0) {\n <div class=\"buttons\">\n @for (button of buttons; track $index) {\n <ng-container>\n <a class=\"btn\" [href]=\"button.url\" [linkType]=\"button.linkType\">\n {{ button.label }}\n </a>\n </ng-container>\n }\n </div>\n }\n</div>\n" }]
122
+ }], propDecorators: { title: [{
123
+ type: Input
124
+ }], subtitle: [{
125
+ type: Input
126
+ }], text: [{
127
+ type: Input
128
+ }], buttons: [{
129
+ type: Input
130
+ }] } });
131
+
132
+ class LangModalComponent {
133
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LangModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
134
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: LangModalComponent, isStandalone: true, selector: "lib-lang-modal", ngImport: i0, template: "<p>lang-modal works!</p>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
135
+ }
136
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LangModalComponent, decorators: [{
137
+ type: Component,
138
+ args: [{ selector: 'lib-lang-modal', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<p>lang-modal works!</p>\n" }]
12
139
  }] });
13
140
 
14
- const mapTopSlider = (props) => ({
15
- // slides: props.slides ?? [],
141
+ class NavModalComponent {
142
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NavModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
143
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: NavModalComponent, isStandalone: true, selector: "lib-nav-modal", inputs: { navItems: "navItems", socialItems: "socialItems" }, ngImport: i0, template: "@if (navItems && navItems.length > 0) {\n <ol>\n @for (item of navItems; track $index) {\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">\n <li>\n <span>{{ item.label }}</span>\n </li>\n </a>\n }\n </ol>\n}\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: LinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href"], outputs: ["anchorClicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
144
+ }
145
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NavModalComponent, decorators: [{
146
+ type: Component,
147
+ args: [{ selector: 'lib-nav-modal', standalone: true, imports: [CommonModule, LinkTypeDirective], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (navItems && navItems.length > 0) {\n <ol>\n @for (item of navItems; track $index) {\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">\n <li>\n <span>{{ item.label }}</span>\n </li>\n </a>\n }\n </ol>\n}\n" }]
148
+ }], propDecorators: { navItems: [{
149
+ type: Input
150
+ }], socialItems: [{
151
+ type: Input
152
+ }] } });
153
+
154
+ class HeaderClearComponent {
155
+ constructor() {
156
+ this.langModal = new EventEmitter();
157
+ this.theme = new EventEmitter();
158
+ }
159
+ openLanguagesModal() {
160
+ this.langModal.emit();
161
+ }
162
+ toggleTheme() {
163
+ this.theme.emit();
164
+ }
165
+ toggleMenu() {
166
+ console.log('menu open');
167
+ }
168
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HeaderClearComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
169
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: HeaderClearComponent, isStandalone: true, selector: "lib-header-clear", inputs: { logo: "logo", lang: "lang", navItems: "navItems" }, outputs: { langModal: "langModal", theme: "theme" }, ngImport: i0, template: "<header>\n <div>\n <!-- Logo -->\n <span>\u2605</span>\n <span>LLUC LLULL</span>\n </div>\n\n <div>\n <!-- Idioma -->\n <button (click)=\"openLanguagesModal()\">\n <span>ES</span>\n </button>\n\n <!-- Icono de recarga -->\n <button (click)=\"toggleTheme()\">\n <span>\uD83C\uDF19</span>\n </button>\n\n <!-- Icono de men\u00FA -->\n <button (click)=\"toggleMenu()\">\n <span>\u2630</span>\n </button>\n </div>\n</header>\n\n@if(navItems && navItems.length > 0) {\n <lib-nav-modal\n [navItems]=\"navItems\"\n ></lib-nav-modal>\n}\n<lib-lang-modal></lib-lang-modal>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: LangModalComponent, selector: "lib-lang-modal" }, { kind: "component", type: NavModalComponent, selector: "lib-nav-modal", inputs: ["navItems", "socialItems"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
170
+ }
171
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HeaderClearComponent, decorators: [{
172
+ type: Component,
173
+ args: [{ selector: 'lib-header-clear', standalone: true, imports: [CommonModule, LangModalComponent, NavModalComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<header>\n <div>\n <!-- Logo -->\n <span>\u2605</span>\n <span>LLUC LLULL</span>\n </div>\n\n <div>\n <!-- Idioma -->\n <button (click)=\"openLanguagesModal()\">\n <span>ES</span>\n </button>\n\n <!-- Icono de recarga -->\n <button (click)=\"toggleTheme()\">\n <span>\uD83C\uDF19</span>\n </button>\n\n <!-- Icono de men\u00FA -->\n <button (click)=\"toggleMenu()\">\n <span>\u2630</span>\n </button>\n </div>\n</header>\n\n@if(navItems && navItems.length > 0) {\n <lib-nav-modal\n [navItems]=\"navItems\"\n ></lib-nav-modal>\n}\n<lib-lang-modal></lib-lang-modal>\n" }]
174
+ }], propDecorators: { logo: [{
175
+ type: Input
176
+ }], lang: [{
177
+ type: Input
178
+ }], navItems: [{
179
+ type: Input
180
+ }], langModal: [{
181
+ type: Output
182
+ }], theme: [{
183
+ type: Output
184
+ }] } });
185
+
186
+ const mapNavModalWithLang = (props, langCode) => {
187
+ if (!Array.isArray(props))
188
+ return [];
189
+ return props.map(item => {
190
+ // Usar directamente la URL que ya viene en nav_link.url
191
+ const url = item.nav_link?.url ?? item.nav_link?.external_url;
192
+ return {
193
+ label: item.label,
194
+ url: url,
195
+ linkType: item.nav_link?.linktype,
196
+ children: item.nav_link?.children || [],
197
+ active: item.nav_link?.active,
198
+ order: item.nav_link?.order,
199
+ };
200
+ });
201
+ };
202
+ const mapNavModal = (props) => {
203
+ if (!Array.isArray(props))
204
+ return [];
205
+ return props.map(item => ({
206
+ label: item.label,
207
+ url: item.nav_link?.url ?? item.nav_link?.external_url,
208
+ linkType: item.nav_link?.linktype,
209
+ children: item.nav_link?.children || [],
210
+ active: item.nav_link?.active,
211
+ order: item.nav_link?.order,
212
+ }));
213
+ };
214
+
215
+ const mapHeaderClear = (props) => {
216
+ // Obtener el idioma de las props
217
+ const currentLang = props?.lang || 'es';
218
+ // Mapear solo los navLinks del nav-modal con el idioma correcto
219
+ const navItems = mapNavModalWithLang(props?.['nav-modal']?.navLinks || [], currentLang);
220
+ return {
221
+ logo: props?.logo,
222
+ lang: currentLang,
223
+ navItems: navItems
224
+ };
225
+ };
226
+
227
+ function mapButtons(data) {
228
+ if (!Array.isArray(data))
229
+ return [];
230
+ return data
231
+ .filter((item) => item && typeof item === 'object')
232
+ .map((item) => ({
233
+ label: item.label ?? '',
234
+ url: item.url ?? '#',
235
+ linkType: item.link_type ?? 'none',
236
+ icon: item.icon,
237
+ }));
238
+ }
239
+ function mapImage(data) {
240
+ if (!data || typeof data !== 'object')
241
+ return null;
242
+ return {
243
+ url: data.url ?? '',
244
+ alt: data.alt ?? '',
245
+ width: data.width,
246
+ height: data.height,
247
+ format: data.format,
248
+ };
249
+ }
250
+ function mapImageOrGallery(data) {
251
+ if (!data)
252
+ return [];
253
+ // Si es array → galería
254
+ if (Array.isArray(data)) {
255
+ return data
256
+ .filter((img) => img && typeof img === 'object')
257
+ .map((img) => mapImage(img))
258
+ .filter(Boolean);
259
+ }
260
+ // Si es objeto → imagen única
261
+ const single = mapImage(data);
262
+ return single ? [single] : [];
263
+ }
264
+
265
+ const mapHeroSection = (props) => ({
266
+ title: props?.texts?.title,
267
+ subtitle: props?.texts?.subtitle,
268
+ text: props?.texts?.text,
269
+ buttons: mapButtons(props?.buttons),
16
270
  });
17
271
 
18
- // importa más mappers aquí...
272
+ const mapLangModal = (props) => ({});
273
+
19
274
  const componentMappers = {
20
- 'top-slider': mapTopSlider,
21
- // añade los demás
275
+ 'hero-section': mapHeroSection,
276
+ 'header-clear': mapHeaderClear,
277
+ 'nav-modal': mapNavModal,
278
+ 'lang-modal': mapLangModal,
22
279
  };
23
280
 
24
281
  class MapperService {
@@ -67,8 +324,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
67
324
  * Public API Surface of ui-lib
68
325
  */
69
326
  /* COMPONENTS */
70
- // /* UTILS */
71
- // export * from './lib/utils';
72
327
  // /* ENUMS */
73
328
  // export * from './lib/Enum';
74
329
  // export * from './lib/ui-lib.component';
@@ -77,5 +332,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
77
332
  * Generated bundle index. Do not edit.
78
333
  */
79
334
 
80
- export { MapperService, TopSliderComponent, componentMappers };
335
+ export { HeaderClearComponent, HeroSectionComponent, LangModalComponent, MapperService, NavModalComponent, componentMappers, mapButtons, mapImage, mapImageOrGallery };
81
336
  //# sourceMappingURL=lluc_llull-ui-lib.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"lluc_llull-ui-lib.mjs","sources":["../../../projects/ui-lib/src/lib/components/core/top-slider/top-slider.component.ts","../../../projects/ui-lib/src/lib/components/core/top-slider/top-slider.component.html","../../../projects/ui-lib/src/lib/services/mapper/component-mappers/top-slider.mapper.ts","../../../projects/ui-lib/src/lib/services/mapper/component-mappers/index.ts","../../../projects/ui-lib/src/lib/services/mapper/mapper.service.ts","../../../projects/ui-lib/src/public-api.ts","../../../projects/ui-lib/src/lluc_llull-ui-lib.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-top-slider',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './top-slider.component.html',\n styleUrl: './top-slider.component.scss'\n})\nexport class TopSliderComponent {\n\n}\n","<p>top-slider works!</p>\n","import { ComponentMapperFn } from './types';\n\nexport const mapTopSlider: ComponentMapperFn = (props) => ({\n // slides: props.slides ?? [],\n});\n","import { mapTopSlider } from './top-slider.mapper';\n// importa más mappers aquí...\n\nexport const componentMappers: Record<string, (props: any) => any> = {\n 'top-slider': mapTopSlider,\n // añade los demás\n};\n","import { inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { BodyComponent } from '../../interfaces/page-config.interface';\nimport { componentMappers } from './component-mappers';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MapperService {\n private platformId = inject(PLATFORM_ID);\n\n mapComponents<T>(body: any[]): BodyComponent<T>[] {\n if (!body || body.length === 0) {\n return [];\n }\n\n return body\n .filter(\n (component) => component && component.name && component.props\n )\n .map((component) => {\n const name = component.name.toLowerCase();\n const mapper = componentMappers[name];\n\n const mapped: BodyComponent<T> = {\n name,\n order: component.order,\n props: {} as T,\n };\n\n if (mapper) {\n try {\n mapped.props = mapper(component.props) as T;\n } catch (e) {\n console.error(\n `Error mapping props for component \"${name}\"`,\n e\n );\n }\n } else {\n console.warn(`No mapper found for component \"${name}\"`);\n }\n\n return mapped;\n });\n }\n}\n","/*\n * Public API Surface of ui-lib\n */\n\n/* COMPONENTS */\nexport * from './lib/components/core/index';\n// export * from './lib/components/shared/index';\n\n// /* SERVICES */\nexport * from './lib/services';\n\n// /* INTERFACES */\nexport * from './lib/interfaces/index';\n\n// /* UTILS */\n// export * from './lib/utils';\n\n// /* ENUMS */\n// export * from './lib/Enum';\n\n// export * from './lib/ui-lib.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAUa,kBAAkB,CAAA;+GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECV/B,4BACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDKY,YAAY,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAIX,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,4BAAA,EAAA;;;AEJlB,MAAM,YAAY,GAAsB,CAAC,KAAK,MAAM;AACvD;AACH,CAAA,CAAC;;ACHF;AAEO,MAAM,gBAAgB,GAAwC;AACjE,IAAA,YAAY,EAAE,YAAY;;;;MCGjB,aAAa,CAAA;AAH1B,IAAA,WAAA,GAAA;AAIY,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAqC3C,IAAA;AAnCG,IAAA,aAAa,CAAI,IAAW,EAAA;QACxB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5B,YAAA,OAAO,EAAE;QACb;AAEA,QAAA,OAAO;AACF,aAAA,MAAM,CACH,CAAC,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK;AAEhE,aAAA,GAAG,CAAC,CAAC,SAAS,KAAI;YACf,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE;AACzC,YAAA,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC;AAErC,YAAA,MAAM,MAAM,GAAqB;gBAC7B,IAAI;gBACJ,KAAK,EAAE,SAAS,CAAC,KAAK;AACtB,gBAAA,KAAK,EAAE,EAAO;aACjB;YAED,IAAI,MAAM,EAAE;AACR,gBAAA,IAAI;oBACA,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAM;gBAC/C;gBAAE,OAAO,CAAC,EAAE;oBACR,OAAO,CAAC,KAAK,CACT,CAAA,mCAAA,EAAsC,IAAI,CAAA,CAAA,CAAG,EAC7C,CAAC,CACJ;gBACL;YACJ;iBAAO;AACH,gBAAA,OAAO,CAAC,IAAI,CAAC,kCAAkC,IAAI,CAAA,CAAA,CAAG,CAAC;YAC3D;AAEA,YAAA,OAAO,MAAM;AACjB,QAAA,CAAC,CAAC;IACV;+GArCS,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFV,MAAM,EAAA,CAAA,CAAA;;4FAET,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA;;;ACND;;AAEG;AAEH;AAUA;AACA;AAEA;AACA;AAEA;;ACpBA;;AAEG;;;;"}
1
+ {"version":3,"file":"lluc_llull-ui-lib.mjs","sources":["../../../projects/ui-lib/src/lib/Enum/link-type.enum.ts","../../../projects/ui-lib/src/lib/directives/link-type.directive.ts","../../../projects/ui-lib/src/lib/components/core/hero-section/hero-section.component.ts","../../../projects/ui-lib/src/lib/components/core/hero-section/hero-section.component.html","../../../projects/ui-lib/src/lib/components/core/lang-modal/lang-modal.component.ts","../../../projects/ui-lib/src/lib/components/core/lang-modal/lang-modal.component.html","../../../projects/ui-lib/src/lib/components/core/nav-modal/nav-modal.component.ts","../../../projects/ui-lib/src/lib/components/core/nav-modal/nav-modal.component.html","../../../projects/ui-lib/src/lib/components/core/header-clear/header-clear.component.ts","../../../projects/ui-lib/src/lib/components/core/header-clear/header-clear.component.html","../../../projects/ui-lib/src/lib/services/mapper/component-mappers/nav-modal.mapper.ts","../../../projects/ui-lib/src/lib/services/mapper/component-mappers/header-clear.mapper.ts","../../../projects/ui-lib/src/lib/utils/utils.ts","../../../projects/ui-lib/src/lib/services/mapper/component-mappers/hero-section.mapper.ts","../../../projects/ui-lib/src/lib/services/mapper/component-mappers/lang-modal.mapper.ts","../../../projects/ui-lib/src/lib/services/mapper/component-mappers/index.ts","../../../projects/ui-lib/src/lib/services/mapper/mapper.service.ts","../../../projects/ui-lib/src/public-api.ts","../../../projects/ui-lib/src/lluc_llull-ui-lib.ts"],"sourcesContent":["export enum LinkType {\n Internal = 'internal',\n External = 'external',\n Anchor = 'anchor',\n Pdf = 'pdf',\n NoLink = 'nolink',\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { Directive, ElementRef, EventEmitter, HostListener, inject, Input, OnInit, Output, PLATFORM_ID } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { LinkType } from '../Enum/link-type.enum';\n\n@Directive({\n selector: '[linkType]',\n standalone: true,\n})\nexport class LinkTypeDirective implements OnInit {\n @Input() linkType?: LinkType;\n @Input() href?: string;\n @Output() anchorClicked = new EventEmitter<void>();\n\n private readonly platformId = inject(PLATFORM_ID);\n\n constructor(private readonly router: Router, private readonly elRef: ElementRef) {}\n\n ngOnInit(): void {\n this.setupLinkAttributes();\n }\n\n @HostListener('click', ['$event'])\n onClick(event: Event): void {\n if (!this.linkType || !this.href) {\n this.disableLink();\n return;\n }\n\n event.preventDefault();\n\n switch (this.linkType) {\n case 'internal':\n this.navigateInternal(this.href);\n break;\n case 'external':\n case 'pdf':\n this.openExternal(this.href);\n break;\n case 'anchor':\n this.scrollToAnchor(this.href);\n break;\n case 'nolink':\n this.disableLink();\n break;\n default:\n console.warn(`Unsupported linkType: ${this.linkType}`);\n }\n }\n\n private setupLinkAttributes() {\n if (!this.linkType || !this.href) {\n this.disableLink();\n return;\n }\n\n this.elRef.nativeElement.setAttribute('href', this.href);\n\n if (this.linkType === 'external') {\n this.elRef.nativeElement.setAttribute('rel', 'nofollow');\n }\n }\n\n private navigateInternal(url: string) {\n const cleanedUrl = url.trim().replace(/\\/+$/, '');\n this.anchorClicked.emit();\n this.router.navigateByUrl('/' + cleanedUrl);\n }\n\n private openExternal(url: string) {\n if (isPlatformBrowser(this.platformId)) {\n window.open(url, '_blank');\n }\n }\n\n private scrollToAnchor(id: string) {\n if (isPlatformBrowser(this.platformId)) {\n const el = document.getElementById(id);\n if (el) {\n const yOffset = -160;\n const y = el.getBoundingClientRect().top + window.scrollY + yOffset;\n window.scrollTo({ top: y, behavior: 'smooth' });\n this.anchorClicked.emit();\n } else {\n console.warn(`Anchor \"${id}\" not found`);\n }\n }\n }\n\n private disableLink() {\n const element = this.elRef.nativeElement;\n const parentLi = element.closest('li');\n const isInMenu = parentLi?.classList.contains('menu-item-has-children');\n\n if (!isInMenu) {\n element.removeAttribute('href');\n element.setAttribute('aria-disabled', 'true');\n element.setAttribute('tabindex', '-1');\n element.style.cursor = 'default';\n element.style.pointerEvents = 'none';\n }\n }\n}\nexport { LinkType };\n\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { UiLibButtonI } from '../../../interfaces';\nimport { LinkTypeDirective } from '../../../directives/link-type.directive';\n\n@Component({\n selector: 'lib-hero-section',\n standalone: true,\n imports: [CommonModule, LinkTypeDirective],\n templateUrl: './hero-section.component.html',\n styleUrl: './hero-section.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HeroSectionComponent {\n @Input() title?: string;\n @Input() subtitle?: string;\n @Input() text?: string;\n @Input() buttons?: UiLibButtonI[];\n}\n","<div class=\"hero-section\">\n @if (title) {\n <h1>{{ title }}</h1>\n }\n @if (text) {\n <p>{{ text }}</p>\n }\n @if (buttons && buttons.length > 0) {\n <div class=\"buttons\">\n @for (button of buttons; track $index) {\n <ng-container>\n <a class=\"btn\" [href]=\"button.url\" [linkType]=\"button.linkType\">\n {{ button.label }}\n </a>\n </ng-container>\n }\n </div>\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'lib-lang-modal',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './lang-modal.component.html',\n styleUrl: './lang-modal.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LangModalComponent {\n\n}\n","<p>lang-modal works!</p>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { UiLibNavItemsI } from '../../../interfaces/ui-lib-nav-items.interface';\nimport { LinkTypeDirective } from '../../../directives/link-type.directive';\n\n@Component({\n selector: 'lib-nav-modal',\n standalone: true,\n imports: [CommonModule, LinkTypeDirective],\n templateUrl: './nav-modal.component.html',\n styleUrl: './nav-modal.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NavModalComponent {\n @Input() navItems?: UiLibNavItemsI[];\n @Input() socialItems?: UiLibNavItemsI[];\n}\n","@if (navItems && navItems.length > 0) {\n <ol>\n @for (item of navItems; track $index) {\n <a [href]=\"item.url\" [linkType]=\"item.linkType\">\n <li>\n <span>{{ item.label }}</span>\n </li>\n </a>\n }\n </ol>\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { LangModalComponent } from \"../lang-modal\";\nimport { NavModalComponent } from \"../nav-modal\";\nimport { UiLibImageI } from '../../../interfaces/ui-lib-image.interface';\nimport { UiLibNavItemsI } from '../../../interfaces/ui-lib-nav-items.interface';\n\n@Component({\n selector: 'lib-header-clear',\n standalone: true,\n imports: [CommonModule, LangModalComponent, NavModalComponent],\n templateUrl: './header-clear.component.html',\n styleUrl: './header-clear.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HeaderClearComponent {\n @Input() logo?: UiLibImageI;\n @Input() lang?: string;\n @Input() navItems?: UiLibNavItemsI[];\n\n @Output() langModal = new EventEmitter<void>();\n @Output() theme = new EventEmitter<void>();\n\n openLanguagesModal(): void {\n this.langModal.emit();\n }\n\n toggleTheme(): void {\n this.theme.emit();\n }\n\n toggleMenu(): void {\n console.log('menu open');\n }\n}\n","<header>\n <div>\n <!-- Logo -->\n <span>★</span>\n <span>LLUC LLULL</span>\n </div>\n\n <div>\n <!-- Idioma -->\n <button (click)=\"openLanguagesModal()\">\n <span>ES</span>\n </button>\n\n <!-- Icono de recarga -->\n <button (click)=\"toggleTheme()\">\n <span>🌙</span>\n </button>\n\n <!-- Icono de menú -->\n <button (click)=\"toggleMenu()\">\n <span>☰</span>\n </button>\n </div>\n</header>\n\n@if(navItems && navItems.length > 0) {\n <lib-nav-modal\n [navItems]=\"navItems\"\n ></lib-nav-modal>\n}\n<lib-lang-modal></lib-lang-modal>\n","import { ComponentMapperFn } from \"./types\";\n\nexport const mapNavModalWithLang = (props: any[], langCode: string) => {\n if (!Array.isArray(props)) return [];\n \n return props.map(item => {\n // Usar directamente la URL que ya viene en nav_link.url\n const url = item.nav_link?.url ?? item.nav_link?.external_url;\n \n return {\n label: item.label,\n url: url,\n linkType: item.nav_link?.linktype,\n children: item.nav_link?.children || [],\n active: item.nav_link?.active,\n order: item.nav_link?.order,\n };\n });\n};\n\nexport const mapNavModal: ComponentMapperFn = (props) => {\n if (!Array.isArray(props)) return [];\n \n return props.map(item => ({\n label: item.label,\n url: item.nav_link?.url ?? item.nav_link?.external_url,\n linkType: item.nav_link?.linktype,\n children: item.nav_link?.children || [],\n active: item.nav_link?.active,\n order: item.nav_link?.order,\n }));\n};","import { mapNavModalWithLang } from \"./nav-modal.mapper\";\nimport { ComponentMapperFn } from \"./types\";\n\nexport const mapHeaderClear: ComponentMapperFn = (props) => {\n // Obtener el idioma de las props\n const currentLang = props?.lang || 'es';\n \n // Mapear solo los navLinks del nav-modal con el idioma correcto\n const navItems = mapNavModalWithLang(props?.['nav-modal']?.navLinks || [], currentLang);\n \n return { \n logo: props?.logo,\n lang: currentLang,\n navItems: navItems\n };\n};","import { UiLibButtonI } from '../interfaces/ui-lib-button.interface';\nimport { UiLibImageI } from '../interfaces/ui-lib-image.interface';\n\nexport function mapButtons(data: any): UiLibButtonI[] {\n if (!Array.isArray(data)) return [];\n\n return data\n .filter((item) => item && typeof item === 'object')\n .map(\n (item): UiLibButtonI => ({\n label: item.label ?? '',\n url: item.url ?? '#',\n linkType: item.link_type ?? 'none',\n icon: item.icon,\n })\n );\n}\n\nexport function mapImage(data: any): UiLibImageI | null {\n if (!data || typeof data !== 'object') return null;\n\n return {\n url: data.url ?? '',\n alt: data.alt ?? '',\n width: data.width,\n height: data.height,\n format: data.format,\n };\n}\n\nexport function mapImageOrGallery(data: any): UiLibImageI[] {\n if (!data) return [];\n\n // Si es array → galería\n if (Array.isArray(data)) {\n return data\n .filter((img) => img && typeof img === 'object')\n .map((img) => mapImage(img)!)\n .filter(Boolean);\n }\n\n // Si es objeto → imagen única\n const single = mapImage(data);\n return single ? [single] : [];\n}\n","import { mapButtons } from '../../../utils/utils';\nimport { ComponentMapperFn } from './types';\n\nexport const mapHeroSection: ComponentMapperFn = (props) => ({\n title: props?.texts?.title,\n subtitle: props?.texts?.subtitle,\n text: props?.texts?.text,\n buttons: mapButtons(props?.buttons),\n});\n","import { ComponentMapperFn } from \"./types\";\n\nexport const mapLangModal: ComponentMapperFn = (props) => ({ \n \n});","import { mapHeaderClear } from './header-clear.mapper';\nimport { mapHeroSection } from './hero-section.mapper';\nimport { mapLangModal } from './lang-modal.mapper';\nimport { mapNavModal } from './nav-modal.mapper';\n\nexport const componentMappers: Record<string, (props: any) => any> = {\n 'hero-section': mapHeroSection,\n 'header-clear': mapHeaderClear,\n 'nav-modal': mapNavModal,\n 'lang-modal': mapLangModal,\n};\n","import { inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { BodyComponent } from '../../interfaces/page-config.interface';\nimport { componentMappers } from './component-mappers';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MapperService {\n private platformId = inject(PLATFORM_ID);\n\n mapComponents<T>(body: any[]): BodyComponent<T>[] {\n if (!body || body.length === 0) {\n return [];\n }\n\n return body\n .filter(\n (component) => component && component.name && component.props\n )\n .map((component) => {\n const name = component.name.toLowerCase();\n const mapper = componentMappers[name];\n\n const mapped: BodyComponent<T> = {\n name,\n order: component.order,\n props: {} as T,\n };\n\n if (mapper) {\n try {\n mapped.props = mapper(component.props) as T;\n } catch (e) {\n console.error(\n `Error mapping props for component \"${name}\"`,\n e\n );\n }\n } else {\n console.warn(`No mapper found for component \"${name}\"`);\n }\n\n return mapped;\n });\n }\n}\n","/*\n * Public API Surface of ui-lib\n */\n\n/* COMPONENTS */\nexport * from './lib/components/core/index';\n// export * from './lib/components/shared/index';\n\n// /* SERVICES */\nexport * from './lib/services';\n\n// /* INTERFACES */\nexport * from './lib/interfaces/index';\n\n// /* UTILS */\nexport * from './lib/utils';\n\n// /* ENUMS */\n// export * from './lib/Enum';\n\n// export * from './lib/ui-lib.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare enum LinkType {
2
+ Internal = "internal",
3
+ External = "external",
4
+ Anchor = "anchor",
5
+ Pdf = "pdf",
6
+ NoLink = "nolink"
7
+ }
@@ -0,0 +1,16 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { UiLibImageI } from '../../../interfaces/ui-lib-image.interface';
3
+ import { UiLibNavItemsI } from '../../../interfaces/ui-lib-nav-items.interface';
4
+ import * as i0 from "@angular/core";
5
+ export declare class HeaderClearComponent {
6
+ logo?: UiLibImageI;
7
+ lang?: string;
8
+ navItems?: UiLibNavItemsI[];
9
+ langModal: EventEmitter<void>;
10
+ theme: EventEmitter<void>;
11
+ openLanguagesModal(): void;
12
+ toggleTheme(): void;
13
+ toggleMenu(): void;
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<HeaderClearComponent, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<HeaderClearComponent, "lib-header-clear", never, { "logo": { "alias": "logo"; "required": false; }; "lang": { "alias": "lang"; "required": false; }; "navItems": { "alias": "navItems"; "required": false; }; }, { "langModal": "langModal"; "theme": "theme"; }, never, never, true, never>;
16
+ }
@@ -0,0 +1,2 @@
1
+ export interface HeaderClearI {
2
+ }
@@ -0,0 +1,2 @@
1
+ export * from './header-clear.component';
2
+ export * from './header-clear.interface';
@@ -0,0 +1,10 @@
1
+ import { UiLibButtonI } from '../../../interfaces';
2
+ import * as i0 from "@angular/core";
3
+ export declare class HeroSectionComponent {
4
+ title?: string;
5
+ subtitle?: string;
6
+ text?: string;
7
+ buttons?: UiLibButtonI[];
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<HeroSectionComponent, never>;
9
+ static ɵcmp: i0.ɵɵComponentDeclaration<HeroSectionComponent, "lib-hero-section", never, { "title": { "alias": "title"; "required": false; }; "subtitle": { "alias": "subtitle"; "required": false; }; "text": { "alias": "text"; "required": false; }; "buttons": { "alias": "buttons"; "required": false; }; }, {}, never, never, true, never>;
10
+ }
@@ -0,0 +1,7 @@
1
+ import { UiLibButtonI } from "../../../interfaces/ui-lib-button.interface";
2
+ export interface HeroSectionI {
3
+ title?: string;
4
+ subtitle?: string;
5
+ text?: string;
6
+ buttons?: UiLibButtonI[];
7
+ }
@@ -0,0 +1,2 @@
1
+ export * from './hero-section.component';
2
+ export * from './hero-section.interface';
@@ -1 +1,4 @@
1
- export * from './top-slider';
1
+ export * from './hero-section';
2
+ export * from './header-clear';
3
+ export * from './nav-modal';
4
+ export * from './lang-modal';
@@ -0,0 +1,2 @@
1
+ export * from './lang-modal.component';
2
+ export * from './lang-modal.interface';
@@ -0,0 +1,5 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class LangModalComponent {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<LangModalComponent, never>;
4
+ static ɵcmp: i0.ɵɵComponentDeclaration<LangModalComponent, "lib-lang-modal", never, {}, {}, never, never, true, never>;
5
+ }
@@ -0,0 +1,2 @@
1
+ export interface LangModalI {
2
+ }
@@ -0,0 +1,2 @@
1
+ export * from './nav-modal.component';
2
+ export * from './nav-modal.interface';
@@ -0,0 +1,8 @@
1
+ import { UiLibNavItemsI } from '../../../interfaces/ui-lib-nav-items.interface';
2
+ import * as i0 from "@angular/core";
3
+ export declare class NavModalComponent {
4
+ navItems?: UiLibNavItemsI[];
5
+ socialItems?: UiLibNavItemsI[];
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<NavModalComponent, never>;
7
+ static ɵcmp: i0.ɵɵComponentDeclaration<NavModalComponent, "lib-nav-modal", never, { "navItems": { "alias": "navItems"; "required": false; }; "socialItems": { "alias": "socialItems"; "required": false; }; }, {}, never, never, true, never>;
8
+ }
@@ -0,0 +1,5 @@
1
+ import { UiLibNavItemsI } from "../../../interfaces/ui-lib-nav-items.interface";
2
+ export interface NavModalI {
3
+ navItems?: UiLibNavItemsI[];
4
+ socialItems?: UiLibNavItemsI[];
5
+ }
@@ -0,0 +1,23 @@
1
+ import { ElementRef, EventEmitter, OnInit } from '@angular/core';
2
+ import { Router } from '@angular/router';
3
+ import { LinkType } from '../Enum/link-type.enum';
4
+ import * as i0 from "@angular/core";
5
+ export declare class LinkTypeDirective implements OnInit {
6
+ private readonly router;
7
+ private readonly elRef;
8
+ linkType?: LinkType;
9
+ href?: string;
10
+ anchorClicked: EventEmitter<void>;
11
+ private readonly platformId;
12
+ constructor(router: Router, elRef: ElementRef);
13
+ ngOnInit(): void;
14
+ onClick(event: Event): void;
15
+ private setupLinkAttributes;
16
+ private navigateInternal;
17
+ private openExternal;
18
+ private scrollToAnchor;
19
+ private disableLink;
20
+ static ɵfac: i0.ɵɵFactoryDeclaration<LinkTypeDirective, never>;
21
+ static ɵdir: i0.ɵɵDirectiveDeclaration<LinkTypeDirective, "[linkType]", never, { "linkType": { "alias": "linkType"; "required": false; }; "href": { "alias": "href"; "required": false; }; }, { "anchorClicked": "anchorClicked"; }, never, never, true, never>;
22
+ }
23
+ export { LinkType };
@@ -1,2 +1,4 @@
1
1
  export * from './page-config.interface';
2
2
  export * from './site-config.interface';
3
+ export * from './ui-lib-button.interface';
4
+ export * from './ui-lib-image.interface';
@@ -8,6 +8,9 @@ export interface PageComponent {
8
8
  page_id: number;
9
9
  component_id: number;
10
10
  order: number;
11
+ component?: {
12
+ name: string;
13
+ };
11
14
  }
12
15
  export interface PageComponentTranslation {
13
16
  id: number;
@@ -0,0 +1,7 @@
1
+ import { LinkType } from "../Enum/link-type.enum";
2
+ export interface UiLibButtonI {
3
+ label: string;
4
+ url: string;
5
+ linkType: LinkType;
6
+ icon?: string;
7
+ }
@@ -0,0 +1,7 @@
1
+ export interface UiLibImageI {
2
+ url: string;
3
+ alt: string;
4
+ width?: number;
5
+ height?: number;
6
+ format?: string;
7
+ }
@@ -0,0 +1,10 @@
1
+ import { LinkType } from "../Enum/link-type.enum";
2
+ import { UiLibButtonI } from "./ui-lib-button.interface";
3
+ export interface UiLibNavItemsI {
4
+ label?: string;
5
+ url?: string;
6
+ linkType?: LinkType;
7
+ name?: string;
8
+ active?: boolean;
9
+ children?: UiLibButtonI[];
10
+ }
@@ -0,0 +1,2 @@
1
+ import { ComponentMapperFn } from "./types";
2
+ export declare const mapHeaderClear: ComponentMapperFn;
@@ -0,0 +1,2 @@
1
+ import { ComponentMapperFn } from './types';
2
+ export declare const mapHeroSection: ComponentMapperFn;
@@ -0,0 +1,2 @@
1
+ import { ComponentMapperFn } from "./types";
2
+ export declare const mapLangModal: ComponentMapperFn;
@@ -0,0 +1,10 @@
1
+ import { ComponentMapperFn } from "./types";
2
+ export declare const mapNavModalWithLang: (props: any[], langCode: string) => {
3
+ label: any;
4
+ url: any;
5
+ linkType: any;
6
+ children: any;
7
+ active: any;
8
+ order: any;
9
+ }[];
10
+ export declare const mapNavModal: ComponentMapperFn;
@@ -0,0 +1 @@
1
+ export * from './utils';
@@ -0,0 +1,5 @@
1
+ import { UiLibButtonI } from '../interfaces/ui-lib-button.interface';
2
+ import { UiLibImageI } from '../interfaces/ui-lib-image.interface';
3
+ export declare function mapButtons(data: any): UiLibButtonI[];
4
+ export declare function mapImage(data: any): UiLibImageI | null;
5
+ export declare function mapImageOrGallery(data: any): UiLibImageI[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lluc_llull/ui-lib",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^17.3.0",
6
6
  "@angular/core": "^17.3.0"
package/public-api.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from './lib/components/core/index';
2
2
  export * from './lib/services';
3
3
  export * from './lib/interfaces/index';
4
+ export * from './lib/utils';
@@ -1,3 +0,0 @@
1
- export * from './top-slider.interface';
2
- export * from './top-slider.component';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvdG9wLXNsaWRlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3RvcC1zbGlkZXIuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdG9wLXNsaWRlci5jb21wb25lbnQnO1xuXG4iXX0=