@acorex/components 19.15.0-next.21 → 19.15.0-next.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/collapse2/README.md +3 -0
- package/collapse2/index.d.ts +3 -0
- package/collapse2/lib/collapse2-group/collapse2-group.component.d.ts +13 -0
- package/collapse2/lib/collapse2-item/collapse2-item.component.d.ts +21 -0
- package/collapse2/lib/collapse2.module.d.ts +8 -0
- package/drawer-2/lib/drawer2-item/drawer2.component.d.ts +2 -2
- package/fesm2022/acorex-components-collapse.mjs +2 -2
- package/fesm2022/acorex-components-collapse.mjs.map +1 -1
- package/fesm2022/acorex-components-collapse2.mjs +120 -0
- package/fesm2022/acorex-components-collapse2.mjs.map +1 -0
- package/fesm2022/acorex-components-color-box.mjs +2 -2
- package/fesm2022/acorex-components-color-box.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-box.mjs +2 -8
- package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
- package/fesm2022/acorex-components-drawer-2.mjs +14 -1
- package/fesm2022/acorex-components-drawer-2.mjs.map +1 -1
- package/fesm2022/acorex-components-map.mjs +678 -144
- package/fesm2022/acorex-components-map.mjs.map +1 -1
- package/fesm2022/acorex-components-time-duration.mjs +7 -1
- package/fesm2022/acorex-components-time-duration.mjs.map +1 -1
- package/map/index.d.ts +1 -0
- package/map/lib/map.component.d.ts +61 -4
- package/map/lib/map.service.d.ts +106 -16
- package/map/lib/map.type.d.ts +34 -0
- package/map/lib/poi.provider.d.ts +15 -0
- package/package.json +24 -20
@@ -140,7 +140,13 @@ class AXTimeDurationComponent extends classes((MXInputBaseValueComponent), MXLoo
|
|
140
140
|
const maskParts = selectedUnits.map((unit) => {
|
141
141
|
return unitPatterns[unit];
|
142
142
|
});
|
143
|
-
|
143
|
+
let result;
|
144
|
+
if (this.translationService.getActiveLang() === 'fa-IR') {
|
145
|
+
result = maskParts.reverse().join(' : ');
|
146
|
+
}
|
147
|
+
else {
|
148
|
+
result = maskParts.join(' : ');
|
149
|
+
}
|
144
150
|
this.maskOptions.set({ mask: result, eager: true });
|
145
151
|
}
|
146
152
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: AXTimeDurationComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"acorex-components-time-duration.mjs","sources":["../../../../packages/components/time-duration/src/lib/time-duration.component.ts","../../../../packages/components/time-duration/src/lib/time-duration.component.html","../../../../packages/components/time-duration/src/lib/time-duration.module.ts","../../../../packages/components/time-duration/src/acorex-components-time-duration.ts"],"sourcesContent":["import {\n AXComponent,\n AXFocusableComponent,\n AXValuableComponent,\n MXInputBaseValueComponent,\n MXLookComponent,\n} from '@acorex/cdk/common';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXMaskOptions, AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXTimeDurationFormatter } from '@acorex/core/date-time';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n effect,\n forwardRef,\n inject,\n input,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IMask } from 'angular-imask';\nimport { classes } from 'polytype';\nimport { AXTimeDurationUnit } from './time-duration.type';\n\n@Component({\n selector: 'ax-time-duration',\n templateUrl: './time-duration.component.html',\n styleUrls: ['./time-duration.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [AXTextBoxModule, FormsModule, AXSelectBoxModule],\n inputs: ['disabled', 'tabIndex', 'readonly', 'look'],\n outputs: ['onValueChanged'],\n providers: [\n { provide: AXComponent, useExisting: AXTimeDurationComponent },\n { provide: AXFocusableComponent, useExisting: AXTimeDurationComponent },\n { provide: AXValuableComponent, useExisting: AXTimeDurationComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXTimeDurationComponent),\n multi: true,\n },\n ],\n})\nexport class AXTimeDurationComponent extends classes(MXInputBaseValueComponent<number>, MXLookComponent) {\n protected inputValue: string;\n readonly valueStart = input<AXTimeDurationUnit>('YEAR');\n readonly valueEnd = input<AXTimeDurationUnit>('MILLISECOND');\n protected maskOptions = signal<AXMaskOptions>({\n mask: 'HH:MM:SS',\n blocks: {\n HH: { mask: IMask.MaskedRange, from: 0, to: 23 },\n MM: { mask: IMask.MaskedRange, from: 0, to: 59 },\n SS: { mask: IMask.MaskedRange, from: 0, to: 59 },\n },\n });\n\n private translationService: AXTranslationService = inject(AXTranslationService);\n private timeDurationFormatter: AXTimeDurationFormatter = inject(AXTimeDurationFormatter);\n\n private onInputFire = false;\n private onInternalValueChangedFire = false;\n\n private YEAR = signal(null);\n private MONTH = signal(null);\n private WEEK = signal(null);\n private DAY = signal(null);\n private HOUR = signal(null);\n private MINUTE = signal(null);\n private SECOND = signal(null);\n private MILLISECOND = signal(null);\n private isTranslationInit = signal(false);\n\n #init = afterNextRender(async () => {\n await this.initTranslation();\n });\n\n #effect = effect(() => {\n if (this.valueStart() && this.valueEnd() && this.isTranslationInit()) {\n this.updateMask();\n }\n });\n\n async initTranslation() {\n this.YEAR.set((await this.translationService.translateAsync('dateTime.year')).toLocaleUpperCase());\n this.MONTH.set((await this.translationService.translateAsync('dateTime.month')).toLocaleUpperCase());\n this.WEEK.set((await this.translationService.translateAsync('dateTime.week')).toLocaleUpperCase());\n this.DAY.set((await this.translationService.translateAsync('dateTime.day')).toLocaleUpperCase());\n this.HOUR.set((await this.translationService.translateAsync('dateTime.hour')).toLocaleUpperCase());\n this.MINUTE.set((await this.translationService.translateAsync('dateTime.minute')).toLocaleUpperCase());\n this.SECOND.set((await this.translationService.translateAsync('dateTime.second')).toLocaleUpperCase());\n this.MILLISECOND.set((await this.translationService.translateAsync('dateTime.millisecond')).toLocaleUpperCase());\n this.isTranslationInit.set(true);\n }\n\n protected onInput(event: any) {\n if (this.onInternalValueChangedFire) return;\n this.onInputFire = true;\n const milliseconds = this.maskToMilliseconds(event);\n if (!milliseconds) return;\n this.commitValue(milliseconds, true);\n this.onInputFire = false;\n }\n\n protected override async internalValueChanged(value: number): Promise<void> {\n if (this.onInputFire) return;\n this.onInternalValueChangedFire = true;\n\n const normalizedMask = await this.timeDurationFormatter.millisecondsToMask(\n value,\n this.valueStart(),\n this.valueEnd(),\n );\n\n this.inputValue = normalizedMask;\n\n setTimeout(() => {\n this.onInternalValueChangedFire = false;\n });\n }\n\n private replacePersianLabels(input: string) {\n const replacements = {\n [this.YEAR()]: 'YEAR',\n [this.MONTH()]: 'MONTH',\n [this.WEEK()]: 'WEEK',\n [this.DAY()]: 'DAY',\n [this.HOUR()]: 'HOUR',\n [this.MINUTE()]: 'MINUTE',\n [this.SECOND()]: 'SECOND',\n [this.MILLISECOND()]: 'MILLISECOND',\n };\n\n return Object.entries(replacements).reduce((str, [fa, en]) => {\n return str.replace(`(${fa})`, `(${en})`);\n }, input);\n }\n\n private maskToMilliseconds(maskValue: string): number {\n const transformedMaskValue = this.replacePersianLabels(maskValue);\n\n const timeUnits = {\n YEAR: 365 * 24 * 60 * 60 * 1000,\n MONTH: 30 * 24 * 60 * 60 * 1000,\n WEEK: 7 * 24 * 60 * 60 * 1000,\n DAY: 24 * 60 * 60 * 1000,\n HOUR: 60 * 60 * 1000,\n MINUTE: 60 * 1000,\n SECOND: 1000,\n MILLISECOND: 1,\n };\n\n const regex = /(\\d+)\\s*\\((YEAR|MONTH|WEEK|DAY|HOUR|MINUTE|SECOND|MILLISECOND)\\)/g;\n let match;\n let totalMs = 0;\n\n while ((match = regex.exec(transformedMaskValue)) !== null) {\n const value = parseInt(match[1], 10);\n const unit = match[2];\n if (timeUnits[unit] !== undefined) {\n totalMs += value * timeUnits[unit];\n }\n }\n\n return totalMs;\n }\n\n private updateMask() {\n const allUnits = ['YEAR', 'MONTH', 'WEEK', 'DAY', 'HOUR', 'MINUTE', 'SECOND', 'MILLISECOND'];\n const startIndex = allUnits.indexOf(this.valueStart());\n const endIndex = allUnits.indexOf(this.valueEnd());\n\n if (startIndex === -1 || endIndex === -1 || endIndex < startIndex) {\n this.maskOptions.set({ mask: '', eager: true });\n return null;\n }\n\n const selectedUnits = allUnits.slice(startIndex, endIndex + 1);\n\n const unitPatterns: Record<string, string> = {\n YEAR: `00 (${this.YEAR()})`,\n MONTH: `00 (${this.MONTH()})`,\n WEEK: `00 (${this.WEEK()})`,\n DAY: `00 (${this.DAY()})`,\n HOUR: `00 (${this.HOUR()})`,\n MINUTE: `00 (${this.MINUTE()})`,\n SECOND: `00 (${this.SECOND()})`,\n MILLISECOND: `000 (${this.MILLISECOND()})`,\n };\n\n const maskParts = selectedUnits.map((unit) => {\n return unitPatterns[unit];\n });\n\n const result = maskParts.join(' : ');\n\n this.maskOptions.set({ mask: result, eager: true });\n }\n}\n","<div class=\"ax-editor-container\">\n <ax-text-box\n [look]=\"look\"\n [placeholder]=\"maskOptions().mask\"\n [mask-options]=\"maskOptions()\"\n [(ngModel)]=\"inputValue\"\n (ngModelChange)=\"onInput($event)\"\n class=\"ax-time-duration-text\"\n [disabled]=\"disabled\"\n [tabIndex]=\"tabIndex\"\n [readonly]=\"readonly\"\n >\n </ax-text-box>\n <ng-content select=\"ax-validation-rule\"> </ng-content>\n</div>\n<div class=\"ax-error-container\"></div>\n","import { NgModule } from '@angular/core';\nimport { AXTimeDurationComponent } from './time-duration.component';\n\nconst COMPONENT = [AXTimeDurationComponent];\n\nconst MODULES = [];\n\n@NgModule({\n imports: [...MODULES, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXTimeDurationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"acorex-components-time-duration.mjs","sources":["../../../../packages/components/time-duration/src/lib/time-duration.component.ts","../../../../packages/components/time-duration/src/lib/time-duration.component.html","../../../../packages/components/time-duration/src/lib/time-duration.module.ts","../../../../packages/components/time-duration/src/acorex-components-time-duration.ts"],"sourcesContent":["import {\n AXComponent,\n AXFocusableComponent,\n AXValuableComponent,\n MXInputBaseValueComponent,\n MXLookComponent,\n} from '@acorex/cdk/common';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXMaskOptions, AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXTimeDurationFormatter } from '@acorex/core/date-time';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n effect,\n forwardRef,\n inject,\n input,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IMask } from 'angular-imask';\nimport { classes } from 'polytype';\nimport { AXTimeDurationUnit } from './time-duration.type';\n\n@Component({\n selector: 'ax-time-duration',\n templateUrl: './time-duration.component.html',\n styleUrls: ['./time-duration.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [AXTextBoxModule, FormsModule, AXSelectBoxModule],\n inputs: ['disabled', 'tabIndex', 'readonly', 'look'],\n outputs: ['onValueChanged'],\n providers: [\n { provide: AXComponent, useExisting: AXTimeDurationComponent },\n { provide: AXFocusableComponent, useExisting: AXTimeDurationComponent },\n { provide: AXValuableComponent, useExisting: AXTimeDurationComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXTimeDurationComponent),\n multi: true,\n },\n ],\n})\nexport class AXTimeDurationComponent extends classes(MXInputBaseValueComponent<number>, MXLookComponent) {\n protected inputValue: string;\n readonly valueStart = input<AXTimeDurationUnit>('YEAR');\n readonly valueEnd = input<AXTimeDurationUnit>('MILLISECOND');\n protected maskOptions = signal<AXMaskOptions>({\n mask: 'HH:MM:SS',\n blocks: {\n HH: { mask: IMask.MaskedRange, from: 0, to: 23 },\n MM: { mask: IMask.MaskedRange, from: 0, to: 59 },\n SS: { mask: IMask.MaskedRange, from: 0, to: 59 },\n },\n });\n\n private translationService: AXTranslationService = inject(AXTranslationService);\n private timeDurationFormatter: AXTimeDurationFormatter = inject(AXTimeDurationFormatter);\n\n private onInputFire = false;\n private onInternalValueChangedFire = false;\n\n private YEAR = signal(null);\n private MONTH = signal(null);\n private WEEK = signal(null);\n private DAY = signal(null);\n private HOUR = signal(null);\n private MINUTE = signal(null);\n private SECOND = signal(null);\n private MILLISECOND = signal(null);\n private isTranslationInit = signal(false);\n\n #init = afterNextRender(async () => {\n await this.initTranslation();\n });\n\n #effect = effect(() => {\n if (this.valueStart() && this.valueEnd() && this.isTranslationInit()) {\n this.updateMask();\n }\n });\n\n async initTranslation() {\n this.YEAR.set((await this.translationService.translateAsync('dateTime.year')).toLocaleUpperCase());\n this.MONTH.set((await this.translationService.translateAsync('dateTime.month')).toLocaleUpperCase());\n this.WEEK.set((await this.translationService.translateAsync('dateTime.week')).toLocaleUpperCase());\n this.DAY.set((await this.translationService.translateAsync('dateTime.day')).toLocaleUpperCase());\n this.HOUR.set((await this.translationService.translateAsync('dateTime.hour')).toLocaleUpperCase());\n this.MINUTE.set((await this.translationService.translateAsync('dateTime.minute')).toLocaleUpperCase());\n this.SECOND.set((await this.translationService.translateAsync('dateTime.second')).toLocaleUpperCase());\n this.MILLISECOND.set((await this.translationService.translateAsync('dateTime.millisecond')).toLocaleUpperCase());\n this.isTranslationInit.set(true);\n }\n\n protected onInput(event: any) {\n if (this.onInternalValueChangedFire) return;\n this.onInputFire = true;\n const milliseconds = this.maskToMilliseconds(event);\n if (!milliseconds) return;\n this.commitValue(milliseconds, true);\n this.onInputFire = false;\n }\n\n protected override async internalValueChanged(value: number): Promise<void> {\n if (this.onInputFire) return;\n this.onInternalValueChangedFire = true;\n\n const normalizedMask = await this.timeDurationFormatter.millisecondsToMask(\n value,\n this.valueStart(),\n this.valueEnd(),\n );\n\n this.inputValue = normalizedMask;\n\n setTimeout(() => {\n this.onInternalValueChangedFire = false;\n });\n }\n\n private replacePersianLabels(input: string) {\n const replacements = {\n [this.YEAR()]: 'YEAR',\n [this.MONTH()]: 'MONTH',\n [this.WEEK()]: 'WEEK',\n [this.DAY()]: 'DAY',\n [this.HOUR()]: 'HOUR',\n [this.MINUTE()]: 'MINUTE',\n [this.SECOND()]: 'SECOND',\n [this.MILLISECOND()]: 'MILLISECOND',\n };\n\n return Object.entries(replacements).reduce((str, [fa, en]) => {\n return str.replace(`(${fa})`, `(${en})`);\n }, input);\n }\n\n private maskToMilliseconds(maskValue: string): number {\n const transformedMaskValue = this.replacePersianLabels(maskValue);\n\n const timeUnits = {\n YEAR: 365 * 24 * 60 * 60 * 1000,\n MONTH: 30 * 24 * 60 * 60 * 1000,\n WEEK: 7 * 24 * 60 * 60 * 1000,\n DAY: 24 * 60 * 60 * 1000,\n HOUR: 60 * 60 * 1000,\n MINUTE: 60 * 1000,\n SECOND: 1000,\n MILLISECOND: 1,\n };\n\n const regex = /(\\d+)\\s*\\((YEAR|MONTH|WEEK|DAY|HOUR|MINUTE|SECOND|MILLISECOND)\\)/g;\n let match;\n let totalMs = 0;\n\n while ((match = regex.exec(transformedMaskValue)) !== null) {\n const value = parseInt(match[1], 10);\n const unit = match[2];\n if (timeUnits[unit] !== undefined) {\n totalMs += value * timeUnits[unit];\n }\n }\n\n return totalMs;\n }\n\n private updateMask() {\n const allUnits = ['YEAR', 'MONTH', 'WEEK', 'DAY', 'HOUR', 'MINUTE', 'SECOND', 'MILLISECOND'];\n const startIndex = allUnits.indexOf(this.valueStart());\n const endIndex = allUnits.indexOf(this.valueEnd());\n\n if (startIndex === -1 || endIndex === -1 || endIndex < startIndex) {\n this.maskOptions.set({ mask: '', eager: true });\n return null;\n }\n\n const selectedUnits = allUnits.slice(startIndex, endIndex + 1);\n\n const unitPatterns: Record<string, string> = {\n YEAR: `00 (${this.YEAR()})`,\n MONTH: `00 (${this.MONTH()})`,\n WEEK: `00 (${this.WEEK()})`,\n DAY: `00 (${this.DAY()})`,\n HOUR: `00 (${this.HOUR()})`,\n MINUTE: `00 (${this.MINUTE()})`,\n SECOND: `00 (${this.SECOND()})`,\n MILLISECOND: `000 (${this.MILLISECOND()})`,\n };\n\n const maskParts = selectedUnits.map((unit) => {\n return unitPatterns[unit];\n });\n\n let result: string;\n\n if (this.translationService.getActiveLang() === 'fa-IR') {\n result = maskParts.reverse().join(' : ');\n } else {\n result = maskParts.join(' : ');\n }\n\n this.maskOptions.set({ mask: result, eager: true });\n }\n}\n","<div class=\"ax-editor-container\">\n <ax-text-box\n [look]=\"look\"\n [placeholder]=\"maskOptions().mask\"\n [mask-options]=\"maskOptions()\"\n [(ngModel)]=\"inputValue\"\n (ngModelChange)=\"onInput($event)\"\n class=\"ax-time-duration-text\"\n [disabled]=\"disabled\"\n [tabIndex]=\"tabIndex\"\n [readonly]=\"readonly\"\n >\n </ax-text-box>\n <ng-content select=\"ax-validation-rule\"> </ng-content>\n</div>\n<div class=\"ax-error-container\"></div>\n","import { NgModule } from '@angular/core';\nimport { AXTimeDurationComponent } from './time-duration.component';\n\nconst COMPONENT = [AXTimeDurationComponent];\n\nconst MODULES = [];\n\n@NgModule({\n imports: [...MODULES, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXTimeDurationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/map/index.d.ts
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
import { OnDestroy } from '@angular/core';
|
2
|
-
import { AXMapControlPlace, AXMapData, AXMapMarker, AXMapPolygon } from './map.type';
|
2
|
+
import { AXMapControlPlace, AXMapData, AXMapMarker, AXMapPolygon, AXPoiMarker } from './map.type';
|
3
3
|
import * as i0 from "@angular/core";
|
4
4
|
/**
|
5
5
|
* @description
|
@@ -75,6 +75,12 @@ export declare class AXMapComponent implements OnDestroy {
|
|
75
75
|
* @default 'bottomright'
|
76
76
|
*/
|
77
77
|
locatePlace: import("@angular/core").InputSignal<AXMapControlPlace>;
|
78
|
+
/**
|
79
|
+
* @description
|
80
|
+
* Minimum zoom level at which POI markers become visible.
|
81
|
+
* @default 10
|
82
|
+
*/
|
83
|
+
poiMinZoom: import("@angular/core").InputSignal<number>;
|
78
84
|
/**
|
79
85
|
* @description
|
80
86
|
* Array or single marker location(s) to be placed on the map.
|
@@ -87,6 +93,12 @@ export declare class AXMapComponent implements OnDestroy {
|
|
87
93
|
* @default undefined
|
88
94
|
*/
|
89
95
|
polygons: import("@angular/core").InputSignal<AXMapPolygon | AXMapPolygon[]>;
|
96
|
+
/**
|
97
|
+
* @description
|
98
|
+
* Array or single POI marker(s) to be placed on the map.
|
99
|
+
* @default undefined
|
100
|
+
*/
|
101
|
+
pois: import("@angular/core").InputSignal<AXPoiMarker | AXPoiMarker[]>;
|
90
102
|
/**
|
91
103
|
* @description
|
92
104
|
* Event triggered when a new marker is added to the map.
|
@@ -112,6 +124,16 @@ export declare class AXMapComponent implements OnDestroy {
|
|
112
124
|
* Event triggered when a location is found via the location control.
|
113
125
|
*/
|
114
126
|
onLocationFound: import("@angular/core").OutputEmitterRef<AXMapMarker>;
|
127
|
+
/**
|
128
|
+
* @description
|
129
|
+
* Event triggered when POI positions are changed on the map.
|
130
|
+
*/
|
131
|
+
onPoiChanged: import("@angular/core").OutputEmitterRef<AXPoiMarker[]>;
|
132
|
+
/**
|
133
|
+
* @description
|
134
|
+
* Event triggered when a new POI is added to the map.
|
135
|
+
*/
|
136
|
+
onPoiAdded: import("@angular/core").OutputEmitterRef<AXPoiMarker>;
|
115
137
|
/**
|
116
138
|
* @description
|
117
139
|
* Event triggered map is loaded.
|
@@ -128,12 +150,14 @@ export declare class AXMapComponent implements OnDestroy {
|
|
128
150
|
private onMarkerAddedSubscription?;
|
129
151
|
private onPolygonChangedSubscription?;
|
130
152
|
private onPolygonAddedSubscription?;
|
153
|
+
private onPoiChangedSubscription?;
|
154
|
+
private onPoiAddedSubscription?;
|
131
155
|
/**
|
132
156
|
* @description
|
133
157
|
* Adds a marker to the specified location on the map.
|
134
158
|
* @param location - The location where the marker should be placed.
|
135
159
|
*/
|
136
|
-
addMarker(location: AXMapMarker | AXMapMarker[]): void
|
160
|
+
addMarker(location: AXMapMarker | AXMapMarker[]): Promise<void>;
|
137
161
|
/**
|
138
162
|
* @description
|
139
163
|
* Adds a polygon to the specified location on the map.
|
@@ -153,6 +177,12 @@ export declare class AXMapComponent implements OnDestroy {
|
|
153
177
|
* @returns An array of `AXMapPolygon` representing all polygons.
|
154
178
|
*/
|
155
179
|
getPolygons(): AXMapPolygon[];
|
180
|
+
/**
|
181
|
+
* @description
|
182
|
+
* Retrieves all POI markers currently placed on the map.
|
183
|
+
* @returns An array of `AXPoiMarker` representing all POI markers.
|
184
|
+
*/
|
185
|
+
getPois(): AXPoiMarker[];
|
156
186
|
/**
|
157
187
|
* @description
|
158
188
|
* Clear all markers and polygons
|
@@ -167,7 +197,7 @@ export declare class AXMapComponent implements OnDestroy {
|
|
167
197
|
* @description
|
168
198
|
* set markers and polygons
|
169
199
|
*/
|
170
|
-
setDrawItem(data: AXMapData): void
|
200
|
+
setDrawItem(data: AXMapData): Promise<void>;
|
171
201
|
/**
|
172
202
|
* Adjusts the map view to fit all markers and polygons currently on the map.
|
173
203
|
*/
|
@@ -205,10 +235,37 @@ export declare class AXMapComponent implements OnDestroy {
|
|
205
235
|
* Unsubscribe from draw events
|
206
236
|
*/
|
207
237
|
private unsubscribeFromDrawEvents;
|
238
|
+
/**
|
239
|
+
* @description
|
240
|
+
* Update popup for a specific marker
|
241
|
+
* @param marker - The marker to update
|
242
|
+
* @param popup - The new popup text
|
243
|
+
* @param open - Whether the popup should be opened after update
|
244
|
+
* @param closeButton - Whether the popup should have a close button
|
245
|
+
* @returns True if the update was successful, false otherwise
|
246
|
+
*/
|
247
|
+
updateMarkerPopup(marker: AXMapMarker, popup: string, open?: boolean, closeButton?: boolean): boolean;
|
248
|
+
/**
|
249
|
+
* @description
|
250
|
+
* Update popup for multiple markers
|
251
|
+
* @param updates - Array of marker popup updates
|
252
|
+
* @returns Number of markers successfully updated
|
253
|
+
*/
|
254
|
+
updateMarkersPopups(updates: {
|
255
|
+
marker: AXMapMarker;
|
256
|
+
popup: string;
|
257
|
+
open?: boolean;
|
258
|
+
closeButton?: boolean;
|
259
|
+
}[]): number;
|
260
|
+
/**
|
261
|
+
* @description
|
262
|
+
* Refreshes POIs from providers, clearing existing POIs first
|
263
|
+
*/
|
264
|
+
refreshPois(): Promise<void>;
|
208
265
|
/**
|
209
266
|
* Cleanup function that destroys the map and unsubscribes from all subscriptions.
|
210
267
|
*/
|
211
268
|
ngOnDestroy(): void;
|
212
269
|
static ɵfac: i0.ɵɵFactoryDeclaration<AXMapComponent, never>;
|
213
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<AXMapComponent, "ax-map", never, { "zoomLevel": { "alias": "zoomLevel"; "required": false; "isSignal": true; }; "latitude": { "alias": "latitude"; "required": false; "isSignal": true; }; "longitude": { "alias": "longitude"; "required": false; "isSignal": true; }; "maxMarker": { "alias": "maxMarker"; "required": false; "isSignal": true; }; "maxPolygon": { "alias": "maxPolygon"; "required": false; "isSignal": true; }; "hasDraw": { "alias": "hasDraw"; "required": false; "isSignal": true; }; "hasLocator": { "alias": "hasLocator"; "required": false; "isSignal": true; }; "fitToDraw": { "alias": "fitToDraw"; "required": false; "isSignal": true; }; "limitDraw": { "alias": "limitDraw"; "required": false; "isSignal": true; }; "markerPlace": { "alias": "markerPlace"; "required": false; "isSignal": true; }; "locatePlace": { "alias": "locatePlace"; "required": false; "isSignal": true; }; "markers": { "alias": "markers"; "required": false; "isSignal": true; }; "polygons": { "alias": "polygons"; "required": false; "isSignal": true; }; }, { "zoomLevel": "zoomLevelChange"; "latitude": "latitudeChange"; "longitude": "longitudeChange"; "onMarkerAdded": "onMarkerAdded"; "onMarkerChanged": "onMarkerChanged"; "onPolygonAdded": "onPolygonAdded"; "onPolygonChanged": "onPolygonChanged"; "onLocationFound": "onLocationFound"; "onMapReady": "onMapReady"; }, never, never, true, never>;
|
270
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AXMapComponent, "ax-map", never, { "zoomLevel": { "alias": "zoomLevel"; "required": false; "isSignal": true; }; "latitude": { "alias": "latitude"; "required": false; "isSignal": true; }; "longitude": { "alias": "longitude"; "required": false; "isSignal": true; }; "maxMarker": { "alias": "maxMarker"; "required": false; "isSignal": true; }; "maxPolygon": { "alias": "maxPolygon"; "required": false; "isSignal": true; }; "hasDraw": { "alias": "hasDraw"; "required": false; "isSignal": true; }; "hasLocator": { "alias": "hasLocator"; "required": false; "isSignal": true; }; "fitToDraw": { "alias": "fitToDraw"; "required": false; "isSignal": true; }; "limitDraw": { "alias": "limitDraw"; "required": false; "isSignal": true; }; "markerPlace": { "alias": "markerPlace"; "required": false; "isSignal": true; }; "locatePlace": { "alias": "locatePlace"; "required": false; "isSignal": true; }; "poiMinZoom": { "alias": "poiMinZoom"; "required": false; "isSignal": true; }; "markers": { "alias": "markers"; "required": false; "isSignal": true; }; "polygons": { "alias": "polygons"; "required": false; "isSignal": true; }; "pois": { "alias": "pois"; "required": false; "isSignal": true; }; }, { "zoomLevel": "zoomLevelChange"; "latitude": "latitudeChange"; "longitude": "longitudeChange"; "onMarkerAdded": "onMarkerAdded"; "onMarkerChanged": "onMarkerChanged"; "onPolygonAdded": "onPolygonAdded"; "onPolygonChanged": "onPolygonChanged"; "onLocationFound": "onLocationFound"; "onPoiChanged": "onPoiChanged"; "onPoiAdded": "onPoiAdded"; "onMapReady": "onMapReady"; }, never, never, true, never>;
|
214
271
|
}
|
package/map/lib/map.service.d.ts
CHANGED
@@ -1,21 +1,26 @@
|
|
1
1
|
import { EventEmitter } from '@angular/core';
|
2
|
-
import { AXMapControlPlace, AXMapData, AXMapLatLng, AXMapLocation, AXMapMarker, AXMapPolygon } from './map.type';
|
2
|
+
import { AXMapControlPlace, AXMapData, AXMapLatLng, AXMapLocation, AXMapMarker, AXMapPolygon, AXPoiMarker } from './map.type';
|
3
3
|
import * as i0 from "@angular/core";
|
4
4
|
/**
|
5
5
|
* Service for managing Leaflet maps and related functionalities.
|
6
6
|
*/
|
7
7
|
export declare class AXLeafletService {
|
8
8
|
private mapConfig;
|
9
|
-
private
|
9
|
+
private iconResolver;
|
10
|
+
private poiProviderService;
|
11
|
+
private defaultIcon;
|
10
12
|
private position;
|
11
13
|
private maxMarkers;
|
12
14
|
private maxPolygons;
|
13
15
|
private polygonColor;
|
16
|
+
private poiMinZoom;
|
17
|
+
private poiMarkers;
|
14
18
|
protected L: typeof import('leaflet');
|
15
19
|
private map?;
|
16
20
|
private drawControl?;
|
17
21
|
private locateControl?;
|
18
22
|
private drawnItems;
|
23
|
+
private poiLayer?;
|
19
24
|
private boundary;
|
20
25
|
private boundaryLayer;
|
21
26
|
/**
|
@@ -34,6 +39,14 @@ export declare class AXLeafletService {
|
|
34
39
|
* Emits when marker data changes.
|
35
40
|
*/
|
36
41
|
onMarkerChanged: EventEmitter<AXMapMarker[]>;
|
42
|
+
/**
|
43
|
+
* Emits when a poi is added.
|
44
|
+
*/
|
45
|
+
onPoiAdded: EventEmitter<AXPoiMarker>;
|
46
|
+
/**
|
47
|
+
* Emits when a poi is changed.
|
48
|
+
*/
|
49
|
+
onPoiChanged: EventEmitter<AXPoiMarker[]>;
|
37
50
|
/**
|
38
51
|
* Emits when a marker is added.
|
39
52
|
*/
|
@@ -63,6 +76,18 @@ export declare class AXLeafletService {
|
|
63
76
|
initMap(mapElement: HTMLElement, location: AXMapLatLng, zoom?: number): Promise<void>;
|
64
77
|
private handleZoomChange;
|
65
78
|
private handleCenterChange;
|
79
|
+
/**
|
80
|
+
* Creates a custom icon from SVG string or URL using the icon resolver if possible
|
81
|
+
* @param iconSrc Path to the icon, SVG string, or icon key
|
82
|
+
* @returns Leaflet icon
|
83
|
+
*/
|
84
|
+
setCustomIcon(iconSrc: string): Promise<any>;
|
85
|
+
/**
|
86
|
+
* Creates a Leaflet icon from SVG or URL
|
87
|
+
* @param iconSrc The icon source (SVG string or URL)
|
88
|
+
* @returns Leaflet icon
|
89
|
+
*/
|
90
|
+
private createLeafletIcon;
|
66
91
|
/**
|
67
92
|
* Gets the Leaflet map instance.
|
68
93
|
* @returns The Leaflet map instance, or undefined if not initialized.
|
@@ -91,17 +116,6 @@ export declare class AXLeafletService {
|
|
91
116
|
* @param duration The duration of the fly animation in seconds.
|
92
117
|
*/
|
93
118
|
flyTo(location: AXMapLatLng, zoom?: number, setMarker?: boolean, duration?: number): void;
|
94
|
-
/**
|
95
|
-
* Adds a marker or markers to the map.
|
96
|
-
* @param locations The marker or markers to add.
|
97
|
-
*/
|
98
|
-
addMarker(locations: AXMapMarker | AXMapMarker[]): void;
|
99
|
-
/**
|
100
|
-
* Adds a polygon or polygons to the map, respecting the boundary if set.
|
101
|
-
* @param polygons The polygon or polygons to add.
|
102
|
-
* @param clickCallback Optional callback function to be executed on polygon click.
|
103
|
-
*/
|
104
|
-
addPolygon(polygons: AXMapPolygon | AXMapPolygon[], clickCallback?: (event: L.LeafletMouseEvent) => void): void;
|
105
119
|
/**
|
106
120
|
* Gets all markers currently on the map.
|
107
121
|
* @returns An array of AXMapMarker objects.
|
@@ -112,6 +126,11 @@ export declare class AXLeafletService {
|
|
112
126
|
* @returns An array of AXMapPolygon objects.
|
113
127
|
*/
|
114
128
|
getPolygons(): AXMapPolygon[];
|
129
|
+
/**
|
130
|
+
* Gets POI markers from the POI layer.
|
131
|
+
* @returns Array of POI markers.
|
132
|
+
*/
|
133
|
+
getPois(): AXPoiMarker[];
|
115
134
|
/**
|
116
135
|
* Adds a draw control to the map for creating markers and polygons.
|
117
136
|
* @param position The position of the control on the map. Defaults to 'topleft'.
|
@@ -136,9 +155,10 @@ export declare class AXLeafletService {
|
|
136
155
|
*/
|
137
156
|
removeLocateControl(): void;
|
138
157
|
/**
|
139
|
-
* Clears all drawn items
|
158
|
+
* Clears all drawn items, including markers, polygons, and POIs.
|
159
|
+
* @param clearPois Whether to clear POI markers as well. Defaults to false.
|
140
160
|
*/
|
141
|
-
clearDrawItems(): void;
|
161
|
+
clearDrawItems(clearPois?: boolean): void;
|
142
162
|
/**
|
143
163
|
* Gets the current drawn items (markers and polygons).
|
144
164
|
* @returns An object containing arrays of markers and polygons.
|
@@ -148,7 +168,7 @@ export declare class AXLeafletService {
|
|
148
168
|
* Sets the drawn items (markers and polygons) on the map.
|
149
169
|
* @param data An object containing arrays of markers and polygons.
|
150
170
|
*/
|
151
|
-
setDrawItem(data: AXMapData): void
|
171
|
+
setDrawItem(data: AXMapData): Promise<void>;
|
152
172
|
/**
|
153
173
|
* Adjusts the map view to fit all markers, polygons, and boundaries currently on the map.
|
154
174
|
*/
|
@@ -167,6 +187,76 @@ export declare class AXLeafletService {
|
|
167
187
|
* Destroys the map instance and removes all event listeners.
|
168
188
|
*/
|
169
189
|
destroyMap(): void;
|
190
|
+
/**
|
191
|
+
* Updates a marker's popup text and options
|
192
|
+
* @param marker The marker to update
|
193
|
+
* @param popup The new popup text
|
194
|
+
* @param open Whether the popup should be opened after update
|
195
|
+
* @param closeButton Whether the popup should have a close button
|
196
|
+
* @returns True if the update was successful, false otherwise
|
197
|
+
*/
|
198
|
+
updateMarkerPopup(marker: AXMapMarker, popup: string, open?: boolean, closeButton?: boolean): boolean;
|
199
|
+
/**
|
200
|
+
* Finds a marker layer by its latitude and longitude
|
201
|
+
* @param marker The marker to find
|
202
|
+
* @returns The Leaflet marker layer or undefined if not found
|
203
|
+
*/
|
204
|
+
private findMarkerLayer;
|
205
|
+
/**
|
206
|
+
* Updates popups for multiple markers in a single operation
|
207
|
+
* @param updates Array of marker popup updates
|
208
|
+
* @returns Number of markers successfully updated
|
209
|
+
*/
|
210
|
+
updateMarkerPopups(updates: {
|
211
|
+
marker: AXMapMarker;
|
212
|
+
popup: string;
|
213
|
+
open?: boolean;
|
214
|
+
closeButton?: boolean;
|
215
|
+
}[]): number;
|
216
|
+
/**
|
217
|
+
* Adds a marker or markers to the map.
|
218
|
+
* @param locations The marker or markers to add.
|
219
|
+
*/
|
220
|
+
addMarker(locations: AXMapMarker | AXMapMarker[]): Promise<void>;
|
221
|
+
/**
|
222
|
+
* Adds a polygon or polygons to the map, respecting the boundary if set.
|
223
|
+
* @param polygons The polygon or polygons to add.
|
224
|
+
* @param clickCallback Optional callback function to be executed on polygon click.
|
225
|
+
*/
|
226
|
+
addPolygon(polygons: AXMapPolygon | AXMapPolygon[], clickCallback?: (event: L.LeafletMouseEvent) => void): void;
|
227
|
+
/**
|
228
|
+
* Adds a POI marker to the map.
|
229
|
+
* @param locations One or more POI markers to add.
|
230
|
+
*/
|
231
|
+
addPoi(locations: AXPoiMarker | AXPoiMarker[]): Promise<void>;
|
232
|
+
/**
|
233
|
+
* Updates the visibility of POI markers based on the current zoom level
|
234
|
+
* @param currentZoom The current zoom level of the map
|
235
|
+
*/
|
236
|
+
private updatePoiVisibility;
|
237
|
+
/**
|
238
|
+
* Sets the minimum zoom level at which POI markers become visible
|
239
|
+
* @param minZoom The minimum zoom level (default is 10)
|
240
|
+
*/
|
241
|
+
setPoiMinZoom(minZoom: number): void;
|
242
|
+
/**
|
243
|
+
* Gets the current minimum zoom level for POI visibility
|
244
|
+
* @returns The minimum zoom level
|
245
|
+
*/
|
246
|
+
getPoiMinZoom(): number;
|
247
|
+
/**
|
248
|
+
* Loads POIs from all registered providers
|
249
|
+
*/
|
250
|
+
loadPoisFromProviders(): Promise<void>;
|
251
|
+
/**
|
252
|
+
* Refreshes POIs from providers, clearing existing POIs first
|
253
|
+
*/
|
254
|
+
refreshPois(): Promise<void>;
|
255
|
+
/**
|
256
|
+
* Refreshes POIs from a specific provider by key
|
257
|
+
* @param providerKey The key of the provider to refresh
|
258
|
+
*/
|
259
|
+
refreshPoiByProvider(providerKey: string): Promise<void>;
|
170
260
|
static ɵfac: i0.ɵɵFactoryDeclaration<AXLeafletService, never>;
|
171
261
|
static ɵprov: i0.ɵɵInjectableDeclaration<AXLeafletService>;
|
172
262
|
}
|
package/map/lib/map.type.d.ts
CHANGED
@@ -2,8 +2,41 @@ export interface AXMapLatLng {
|
|
2
2
|
latitude: number;
|
3
3
|
longitude: number;
|
4
4
|
}
|
5
|
+
/**
|
6
|
+
* Represents a marker on the map with position and optional display properties.
|
7
|
+
*
|
8
|
+
* @example
|
9
|
+
* ```typescript
|
10
|
+
* const marker: AXMapMarker = {
|
11
|
+
* latitude: 51.505,
|
12
|
+
* longitude: -0.09,
|
13
|
+
* title: "London",
|
14
|
+
* popup: "Capital of UK",
|
15
|
+
* popupOpen: false,
|
16
|
+
* popupCloseButton: true,
|
17
|
+
* iconKey: "map-marker" // Icon key to be resolved by icon resolver service
|
18
|
+
* // OR
|
19
|
+
* icon: "<svg>...</svg>" // Direct SVG content or image URL
|
20
|
+
* };
|
21
|
+
* ```
|
22
|
+
*/
|
5
23
|
export interface AXMapMarker extends AXMapLatLng {
|
6
24
|
title?: string;
|
25
|
+
iconKey?: string;
|
26
|
+
popup?: string;
|
27
|
+
popupOpen?: boolean;
|
28
|
+
popupCloseButton?: boolean;
|
29
|
+
}
|
30
|
+
/**
|
31
|
+
* Represents a Point of Interest marker on the map with the same properties as AXMapMarker.
|
32
|
+
*/
|
33
|
+
export interface AXPoiMarker extends AXMapLatLng {
|
34
|
+
title?: string;
|
35
|
+
iconKey?: string;
|
36
|
+
popup?: string;
|
37
|
+
popupOpen?: boolean;
|
38
|
+
popupCloseButton?: boolean;
|
39
|
+
minZoom?: number;
|
7
40
|
}
|
8
41
|
export interface AXMapLocation extends AXMapMarker {
|
9
42
|
precision?: number;
|
@@ -16,5 +49,6 @@ export interface AXMapPolygon {
|
|
16
49
|
export interface AXMapData {
|
17
50
|
markers: AXMapMarker[];
|
18
51
|
polygons: AXMapPolygon[];
|
52
|
+
pois: AXPoiMarker[];
|
19
53
|
}
|
20
54
|
export type AXMapControlPlace = 'topleft' | 'topright' | 'bottomleft' | 'bottomright';
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
2
|
+
import { AXPoiMarker } from './map.type';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
export interface AXPoiProvider {
|
5
|
+
get key(): string;
|
6
|
+
provide(): Promise<AXPoiMarker[]>;
|
7
|
+
}
|
8
|
+
export declare const AX_MAP_POI_PROVIDER: InjectionToken<AXPoiProvider[]>;
|
9
|
+
export declare class AXPoiProviderService {
|
10
|
+
private providers;
|
11
|
+
private cache;
|
12
|
+
getList(): Promise<AXPoiMarker[]>;
|
13
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPoiProviderService, never>;
|
14
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AXPoiProviderService>;
|
15
|
+
}
|
package/package.json
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
{
|
2
2
|
"name": "@acorex/components",
|
3
|
-
"version": "19.15.0-next.
|
3
|
+
"version": "19.15.0-next.24",
|
4
4
|
"peerDependencies": {
|
5
|
-
"@angular/common": "
|
6
|
-
"@angular/core": "
|
7
|
-
"@angular/cdk": "
|
5
|
+
"@angular/common": "^19.0.0",
|
6
|
+
"@angular/core": "^19.0.0",
|
7
|
+
"@angular/cdk": "^19.0.0",
|
8
8
|
"polytype": ">=0.17.0",
|
9
9
|
"imask": ">=7.6.1",
|
10
10
|
"angular-imask": ">=7.6.1",
|
@@ -29,6 +29,14 @@
|
|
29
29
|
"types": "./action-sheet/index.d.ts",
|
30
30
|
"default": "./fesm2022/acorex-components-action-sheet.mjs"
|
31
31
|
},
|
32
|
+
"./alert": {
|
33
|
+
"types": "./alert/index.d.ts",
|
34
|
+
"default": "./fesm2022/acorex-components-alert.mjs"
|
35
|
+
},
|
36
|
+
"./audio-wave": {
|
37
|
+
"types": "./audio-wave/index.d.ts",
|
38
|
+
"default": "./fesm2022/acorex-components-audio-wave.mjs"
|
39
|
+
},
|
32
40
|
"./autocomplete": {
|
33
41
|
"types": "./autocomplete/index.d.ts",
|
34
42
|
"default": "./fesm2022/acorex-components-autocomplete.mjs"
|
@@ -41,18 +49,10 @@
|
|
41
49
|
"types": "./badge/index.d.ts",
|
42
50
|
"default": "./fesm2022/acorex-components-badge.mjs"
|
43
51
|
},
|
44
|
-
"./alert": {
|
45
|
-
"types": "./alert/index.d.ts",
|
46
|
-
"default": "./fesm2022/acorex-components-alert.mjs"
|
47
|
-
},
|
48
52
|
"./bottom-navigation": {
|
49
53
|
"types": "./bottom-navigation/index.d.ts",
|
50
54
|
"default": "./fesm2022/acorex-components-bottom-navigation.mjs"
|
51
55
|
},
|
52
|
-
"./audio-wave": {
|
53
|
-
"types": "./audio-wave/index.d.ts",
|
54
|
-
"default": "./fesm2022/acorex-components-audio-wave.mjs"
|
55
|
-
},
|
56
56
|
"./breadcrumbs": {
|
57
57
|
"types": "./breadcrumbs/index.d.ts",
|
58
58
|
"default": "./fesm2022/acorex-components-breadcrumbs.mjs"
|
@@ -85,6 +85,10 @@
|
|
85
85
|
"types": "./collapse/index.d.ts",
|
86
86
|
"default": "./fesm2022/acorex-components-collapse.mjs"
|
87
87
|
},
|
88
|
+
"./collapse2": {
|
89
|
+
"types": "./collapse2/index.d.ts",
|
90
|
+
"default": "./fesm2022/acorex-components-collapse2.mjs"
|
91
|
+
},
|
88
92
|
"./color-box": {
|
89
93
|
"types": "./color-box/index.d.ts",
|
90
94
|
"default": "./fesm2022/acorex-components-color-box.mjs"
|
@@ -137,14 +141,14 @@
|
|
137
141
|
"types": "./drawer/index.d.ts",
|
138
142
|
"default": "./fesm2022/acorex-components-drawer.mjs"
|
139
143
|
},
|
140
|
-
"./dropdown": {
|
141
|
-
"types": "./dropdown/index.d.ts",
|
142
|
-
"default": "./fesm2022/acorex-components-dropdown.mjs"
|
143
|
-
},
|
144
144
|
"./drawer-2": {
|
145
145
|
"types": "./drawer-2/index.d.ts",
|
146
146
|
"default": "./fesm2022/acorex-components-drawer-2.mjs"
|
147
147
|
},
|
148
|
+
"./dropdown": {
|
149
|
+
"types": "./dropdown/index.d.ts",
|
150
|
+
"default": "./fesm2022/acorex-components-dropdown.mjs"
|
151
|
+
},
|
148
152
|
"./dropdown-button": {
|
149
153
|
"types": "./dropdown-button/index.d.ts",
|
150
154
|
"default": "./fesm2022/acorex-components-dropdown-button.mjs"
|
@@ -157,14 +161,14 @@
|
|
157
161
|
"types": "./flow-chart/index.d.ts",
|
158
162
|
"default": "./fesm2022/acorex-components-flow-chart.mjs"
|
159
163
|
},
|
160
|
-
"./grid-layout-builder": {
|
161
|
-
"types": "./grid-layout-builder/index.d.ts",
|
162
|
-
"default": "./fesm2022/acorex-components-grid-layout-builder.mjs"
|
163
|
-
},
|
164
164
|
"./form": {
|
165
165
|
"types": "./form/index.d.ts",
|
166
166
|
"default": "./fesm2022/acorex-components-form.mjs"
|
167
167
|
},
|
168
|
+
"./grid-layout-builder": {
|
169
|
+
"types": "./grid-layout-builder/index.d.ts",
|
170
|
+
"default": "./fesm2022/acorex-components-grid-layout-builder.mjs"
|
171
|
+
},
|
168
172
|
"./image": {
|
169
173
|
"types": "./image/index.d.ts",
|
170
174
|
"default": "./fesm2022/acorex-components-image.mjs"
|