@planeasyinc/le-angular 0.0.1 → 0.0.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.
- package/dist/fesm2022/planeasyinc-le-angular.mjs +305 -25
- package/dist/fesm2022/planeasyinc-le-angular.mjs.map +1 -1
- package/dist/lib/components/container/container.component.d.ts +2 -1
- package/dist/lib/components/filters/filters.component.d.ts +54 -0
- package/dist/lib/directives/le-drawer.directive.d.ts +6 -2
- package/dist/lib/icons/icons-map.d.ts +5 -0
- package/dist/lib/icons/le-icon.component.d.ts +6 -1
- package/dist/lib/icons/svg/close.d.ts +5 -0
- package/dist/lib/services/le-filters.service.d.ts +33 -0
- package/dist/lib/views/table-view/table-view.component.d.ts +5 -0
- package/dist/styles/styles.scss +132 -6
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planeasyinc-le-angular.mjs","sources":["../../src/lib/tokens/http-context.token.ts","../../src/lib/constants/default-config.ts","../../src/lib/tokens/config.token.ts","../../src/lib/services/le-auth.service.ts","../../src/lib/services/le-api.service.ts","../../src/lib/services/le-data.service.ts","../../src/lib/directives/le-drawer-content.directive.ts","../../src/lib/directives/le-drawer-container.directive.ts","../../src/lib/directives/le-drawer.directive.ts","../../src/lib/icons/svg/chevron.ts","../../src/lib/icons/svg/arrow-down.ts","../../src/lib/icons/svg/sort.ts","../../src/lib/icons/icons-map.ts","../../src/lib/icons/le-icon.component.ts","../../src/lib/components/sidebar/sidebar.component.ts","../../src/lib/components/sidebar/sidebar.component.html","../../src/lib/views/chart-view/chart-view.component.ts","../../src/lib/views/chart-view/chart-view.component.html","../../src/lib/views/gird-view/grid-view.component.ts","../../src/lib/views/gird-view/grid-view.component.html","../../src/lib/views/table-view/table-data-sourse.ts","../../src/lib/views/table-view/table-view-pagination.component.ts","../../src/lib/views/table-view/table-view-pagination.component.html","../../src/lib/views/table-view/table-view.utils.ts","../../src/lib/views/loading-view/loading-view.component.ts","../../src/lib/views/loading-view/loading-view.component.html","../../src/lib/views/table-view/table-view-actions.component.ts","../../src/lib/templates/string.template.ts","../../src/lib/templates/reference.template.ts","../../src/lib/templates/json.template.ts","../../src/lib/templates/index.ts","../../src/lib/views/table-view/table-view-cell.directive.ts","../../src/lib/views/table-view/table-view.component.ts","../../src/lib/views/table-view/table-view.component.html","../../src/lib/views/form-view/form.adapter.ts","../../src/lib/views/form-view/form-renderer.component.ts","../../src/lib/views/form-view/form-renderer.component.html","../../src/lib/views/form-view/form-view.utils.ts","../../src/lib/components/toast-list/toast-list.component.ts","../../src/lib/components/toast-list/toast-list.component.html","../../src/lib/services/le-toast.service.ts","../../src/lib/views/form-view/form-view-attachment.utils.ts","../../src/lib/views/form-view/form-view-attachment.service.ts","../../src/lib/views/form-view/form-view.component.ts","../../src/lib/views/form-view/form-view.component.html","../../src/lib/views/section-view/section-view.component.ts","../../src/lib/views/section-view/section-view.component.html","../../src/lib/views/gird-col-view/grid-col-view.component.ts","../../src/lib/views/gird-col-view/grid-col-view.component.html","../../src/lib/components/node/node.component.ts","../../src/lib/components/node/node.component.html","../../src/lib/components/container/container.component.ts","../../src/lib/components/container/container.component.html","../../src/lib/providers/provideConfig.ts","../../src/lib/interceptors/le-auth.interceptor.ts","../../src/planeasyinc-le-angular.ts"],"sourcesContent":["import { HttpContextToken } from '@angular/common/http';\n\nexport const IS_LIBRARY_REQUEST = new HttpContextToken<boolean>(() => false);\n","import { LeConfig } from '../types/le-config';\n\nexport const defaultConfig: LeConfig = {\n apiUrl: '',\n messages: {\n tokenEmpty: 'No token provided',\n tokenExpired:\n 'Your session has expired for security reasons. Please log in again to continue where you left off.',\n },\n};\n","import { InjectionToken } from '@angular/core';\nimport { defaultConfig } from '../constants/default-config';\n\nexport const CONFIG_TOKEN = new InjectionToken('CONFIG', {\n factory: () => defaultConfig,\n});\n","import { inject, Injectable, signal } from '@angular/core';\nimport { decodeJwt } from '@planeasyinc/le-core';\nimport { CONFIG_TOKEN } from '../tokens/config.token';\n\nconst SECOND_IN_MS = 1000;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LEAuthService {\n private config = inject(CONFIG_TOKEN);\n private _token = signal<string | null>(null);\n private _apiUrl = signal<string>(this.config.apiUrl);\n private _isGuest = signal<boolean>(false);\n\n readonly token = this._token.asReadonly();\n readonly apiUrl = this._apiUrl.asReadonly();\n readonly isGuest = this._isGuest.asReadonly();\n\n setApiUrl(apiUrl: string): void {\n this._apiUrl.set(apiUrl);\n }\n\n setToken(token: string): void {\n this._token.set(token);\n }\n\n setGuestLogin(isGuest = true): void {\n this._isGuest.set(true);\n }\n\n validateToken(): void {\n const token = this._token();\n\n if (!token) {\n throw new Error(this.config.messages.tokenEmpty);\n }\n\n const decoded = decodeJwt<{ exp: number }>(token);\n\n if (decoded.exp * SECOND_IN_MS < Date.now()) {\n throw new Error(this.config.messages.tokenExpired);\n }\n }\n}\n","import { inject, Injectable, computed } from '@angular/core';\nimport { HttpClient, HttpContext, HttpEvent, HttpRequest } from '@angular/common/http';\nimport { map, Observable } from 'rxjs';\nimport { UrlFragmentBuilder } from '@planeasyinc/le-core';\nimport { IS_LIBRARY_REQUEST } from '../tokens/http-context.token';\nimport { LEAuthService } from './le-auth.service';\n\n@Injectable()\nexport class LEApiService {\n private http = inject(HttpClient);\n private authService = inject(LEAuthService);\n private apiUrl = computed(() => {\n return this.normalizeApiUrl(this.authService.apiUrl());\n })\n\n getConfig() {\n const url = new UrlFragmentBuilder(this.apiUrl())\n .setFragment('api/contrib/frontend-config/dashboard/config')\n .build();\n\n return this.http.get(url, { context: new HttpContext().set(IS_LIBRARY_REQUEST, true) });\n }\n\n getObject<IResponse>(className: string, query: string = ''): Observable<IResponse> {\n const url = new UrlFragmentBuilder(this.apiUrl())\n .setFragment('api/objects/')\n .setQuery(`class_name=${className}`)\n .setQuery(\n 'include_metadata=true&include_subclasses=true&load_references=false&file_optimized=true',\n )\n .setQuery(query)\n .build();\n\n return this.http.get<IResponse>(url, {\n context: new HttpContext().set(IS_LIBRARY_REQUEST, true),\n });\n }\n\n getObjectByAddress<IResponse>(\n address: string,\n includeVersions: boolean,\n includeMeta: boolean,\n ): Observable<IResponse> {\n const url = new UrlFragmentBuilder(this.apiUrl())\n .setFragment(`api/objects/${address}/`)\n .setQuery(\n `all_versions=${includeVersions}&include_metadata=${includeMeta}&load_references=false&file_optimized=true`,\n )\n .build();\n\n return this.http.get<IResponse>(url, {\n context: new HttpContext().set(IS_LIBRARY_REQUEST, true),\n });\n }\n\n executeTransaction<IResponse, IBody extends Record<string, unknown> = Record<string, unknown>>(\n name: string,\n body: IBody,\n query: string = '',\n ): Observable<IResponse> {\n const url = new UrlFragmentBuilder(this.apiUrl())\n .setFragment(`api/transactions/${name}/`)\n .setQuery(query)\n .build();\n\n return this.http.post<IResponse>(url, body ?? {}, {\n context: new HttpContext().set(IS_LIBRARY_REQUEST, true),\n });\n }\n\n request<IResponse, IBody extends object>(\n method: string,\n path: string,\n body?: IBody,\n ): Observable<HttpEvent<IResponse>> {\n const url = new UrlFragmentBuilder(this.apiUrl()).setFragment(path).build();\n const request = new HttpRequest(method, url, body, {\n responseType: 'json',\n context: new HttpContext().set(IS_LIBRARY_REQUEST, true),\n });\n\n return this.http.request<IResponse>(request);\n }\n\n getBlob(path: string): Observable<string> {\n return this.http\n .get(path, { responseType: 'blob', context: new HttpContext().set(IS_LIBRARY_REQUEST, true) })\n .pipe(map((blob) => URL.createObjectURL(blob)));\n }\n\n private normalizeApiUrl(url: string): string {\n if (url.endsWith('/')) {\n return url.slice(0, -1);\n }\n return url;\n }\n}\n","import { inject, Injectable, signal } from '@angular/core';\nimport { LeNode, normalizeConfig } from '@planeasyinc/le-core';\nimport { LEApiService } from './le-api.service';\nimport { filter, Observable } from 'rxjs';\nimport { HttpEventType, HttpResponse } from '@angular/common/http';\n\n@Injectable()\nexport class LEDataService {\n private apiService = inject(LEApiService);\n private _config = signal<LeNode | null>(null);\n private _view = signal<LeNode | null>(null);\n private _parentMenu = signal<LeNode | null>(null);\n private _customCss = signal<string | null>(null);\n\n readonly view = this._view.asReadonly();\n readonly parentMenu = this._parentMenu.asReadonly()\n readonly config = this._config.asReadonly();\n readonly customCss = this._customCss.asReadonly();\n\n setView(node: LeNode): void {\n this._view.set(node);\n }\n\n requestConfig(force?: boolean): void {\n if (this._config() && !force) {\n return;\n }\n\n this.apiService.getConfig().subscribe({\n next: (config) => {\n const normalizedConfig = normalizeConfig({ type: 'section', ...config });\n this._config.set(normalizedConfig);\n this._customCss.set((config as { custom_css: string }).custom_css);\n const initialView = this.getInitialView(normalizedConfig);\n this._view.set(initialView.node);\n this._parentMenu.set(initialView.parent);\n },\n error: (err) => {\n console.error(err);\n },\n });\n }\n\n request<IResponse, IBody extends object>(\n method: string,\n url: string,\n body?: IBody,\n ): Observable<HttpResponse<IResponse>> {\n return this.apiService\n .request<IResponse, IBody>(method, url, body)\n .pipe(filter((event) => HttpEventType.Response === event.type));\n }\n\n getObjectByClassName<IResponse>(className: string): Observable<IResponse> {\n return this.apiService.getObject<IResponse>(className);\n }\n\n navigateByNodeId(id: string): void {\n const node = this.getNodeById(id);\n\n if (node) {\n this._view.set(node);\n }\n }\n\n private getNodeById(id: string, node = this._config()): LeNode | null {\n if (node?.id) {\n if (node.id === id) {\n return node;\n }\n\n if ('children' in node) {\n for (const child of node.children) {\n const childNode = this.getNodeById(id, child);\n\n if (childNode) {\n return childNode;\n }\n }\n }\n }\n\n return null;\n }\n\n private getInitialView(node: LeNode): { node: LeNode, parent: LeNode } {\n if ('children' in node) {\n const child = node.children[0];\n\n if ('isParentMenu' in child && child.isParentMenu) {\n return this.getInitialView(child);\n } else {\n return {\n node: child,\n parent: node\n };\n }\n }\n\n throw new Error(`${node.type} is not a section`);\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[leDrawerContent]',\n host: {\n '[class.le-drawer-content]': 'true',\n }\n})\nexport class DrawerContentDirective {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[leDrawerContainer]',\n host: {\n '[class.le-drawer-container]': 'true'\n }\n})\nexport class DrawerContainerDirective {\n}\n","import {computed, Directive, input} from '@angular/core';\n\nconst DRAWER_OPENED_WIDTH = 300;\nconst DRAWER_CLOSED_WIDTH = 60;\n\n@Directive({\n selector: '[leDrawer]',\n host: {\n '[class.le-drawer]': 'true',\n '[class.le-drawer--open]': 'opened()',\n '[style.width.px]': '_width()'\n },\n})\nexport class LeDrawerDirective {\n opened = input(false);\n width = input(DRAWER_OPENED_WIDTH);\n hideOnClose = input(false);\n\n _width = computed(() => {\n if (this.opened()) {\n return this.width();\n }\n\n if (this.hideOnClose()) {\n return 0;\n }\n\n return DRAWER_CLOSED_WIDTH;\n });\n}\n","export const chevron = {\n name: 'chevron',\n viewBox: '0 -960 960 960',\n content: [\n 'M504-480 320-664l56-56 240 240-240 240-56-56 184-184Z'\n ]\n}\n","export const arrowDown = {\n name: 'arrow-down',\n viewBox: '0 -960 960 960',\n content: [\n 'M480-360 280-560h400L480-360Z'\n ]\n}\n","export const sort = {\n name: 'sort',\n viewBox: '0 -960 960 960',\n content: [\n 'M120-240v-80h240v80H120Zm0-200v-80h480v80H120Zm0-200v-80h720v80H120Z'\n ]\n}\n","import {chevron} from \"./svg/chevron\";\nimport {arrowDown} from \"./svg/arrow-down\";\nimport {sort} from \"./svg/sort\";\n\nexport const ICONS_MAP = {\n 'chevron': chevron,\n 'arrow-down': arrowDown,\n 'sort': sort\n} as const;\n","import {ChangeDetectionStrategy, Component, computed, input} from \"@angular/core\";\nimport { coerceNumberProperty } from '@angular/cdk/coercion'\nimport {ICONS_MAP} from \"./icons-map\";\n\n@Component({\n selector: 'le-icon',\n template: `\n @if (icon(); as icon) {\n <svg\n [attr.viewBox]=\"icon.viewBox\"\n [style.width.px]=\"icon.size\"\n [style.height.px]=\"icon.size\"\n fill=\"currentColor\"\n >\n @for (path of icon.content; track path) {\n <path [attr.d]=\"path\"></path>\n }\n </svg>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style.width.px]': 'size()',\n '[style.height.px]': 'size()',\n '[style.display]': '\"block\"',\n }\n})\nexport class LeIconComponent {\n name = input.required<keyof typeof ICONS_MAP>();\n size = input<string | number>(24);\n\n icon = computed(() => ({\n ...ICONS_MAP[this.name()],\n size: coerceNumberProperty(this.size()),\n }));\n}\n","import { Component, computed, inject, input, output, signal } from '@angular/core';\nimport { CdkDrag, CdkDragMove } from '@angular/cdk/drag-drop';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { distinctUntilChanged, map } from 'rxjs';\nimport { LeNode, LeSectionNode } from '@planeasyinc/le-core';\nimport { DrawerContentDirective } from '../../directives/le-drawer-content.directive';\nimport { DrawerContainerDirective } from '../../directives/le-drawer-container.directive';\nimport { LeDrawerDirective } from '../../directives/le-drawer.directive';\nimport {LeIconComponent} from \"../../icons/le-icon.component\";\n\n@Component({\n selector: 'le-sidebar',\n templateUrl: './sidebar.component.html',\n imports: [DrawerContentDirective, DrawerContainerDirective, LeDrawerDirective, CdkDrag, LeIconComponent],\n})\nexport class SidebarComponent {\n private breakpointObserver = inject(BreakpointObserver);\n\n config = input.required<LeNode>();\n view = input.required<LeNode>();\n\n selectionChange = output<LeNode>();\n\n private _expanded = signal<Set<LeNode>>(new Set());\n private _width = signal(300);\n private _isDrawerOpen = signal(true);\n private _isSmallScreen = signal(false);\n\n readonly menu = computed(() => {\n const config = this.config();\n\n return 'children' in config ? config.children : [];\n });\n readonly expanded = this._expanded.asReadonly();\n readonly width = this._width.asReadonly();\n readonly isDrawerOpen = this._isDrawerOpen.asReadonly();\n readonly isSmallScreen = this._isSmallScreen.asReadonly();\n\n constructor() {\n this.breakpointObserver\n .observe([Breakpoints.XSmall])\n .pipe(\n map((state) => state.matches),\n distinctUntilChanged(),\n takeUntilDestroyed(),\n )\n .subscribe({\n next: (matches) => {\n this._isSmallScreen.set(matches);\n this._isDrawerOpen.set(!matches);\n },\n });\n }\n\n protected isSection(item: LeNode): item is LeSectionNode {\n return item.type === 'section' && item.isParentMenu;\n }\n\n protected toggleExpanded(event: Event, item: LeNode): void {\n event.preventDefault();\n event.stopPropagation();\n\n this._expanded.update((expanded) => {\n if (expanded.has(item)) {\n expanded.delete(item);\n } else {\n expanded.add(item);\n }\n return new Set(expanded);\n });\n }\n\n setExpanded(item: LeNode): void {\n this._expanded.update((expanded) => {\n expanded.add(item);\n\n return new Set(expanded);\n });\n }\n\n onSidebarItemClick(event: Event, item: LeNode): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.selectionChange.emit(item);\n }\n\n onDrawerToggleClick(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n\n this._isDrawerOpen.update((val) => !val);\n }\n\n protected onDragMoved(event: CdkDragMove): void {\n this._width.set(event.pointerPosition.x);\n const element = event.source.element.nativeElement;\n element.style.transform = 'none';\n }\n}\n","<div leDrawerContainer>\n <aside leDrawer [opened]=\"isDrawerOpen()\" [width]=\"width()\" [hideOnClose]=\"isSmallScreen()\">\n <h3 class=\"le-sidebar-title\">\n <button\n class=\"le-sidebar-toggle\"\n (click)=\"onDrawerToggleClick($event)\"\n (keydown.enter)=\"onDrawerToggleClick($event)\"\n >\n @if (isDrawerOpen()) {\n {{ config().title }}\n }\n\n <le-icon name=\"chevron\"></le-icon>\n </button>\n </h3>\n\n @if (isDrawerOpen()) {\n <menu>\n @for (item of menu(); track item) {\n @if (isSection(item)) {\n <a\n class=\"le-menu-item\"\n tabindex=\"0\"\n [class.le-menu-item--expanded]=\"expanded().has(item)\"\n (click)=\"toggleExpanded($event, item)\"\n (keydown.enter)=\"toggleExpanded($event, item)\"\n >\n <div class=\"le-menu-title\">\n {{ item.title }}\n </div>\n\n <le-icon class=\"le-menu-chevron\" name=\"chevron\"></le-icon>\n </a>\n\n <div class=\"le-menu-group\" [class.le-menu-group--expanded]=\"expanded().has(item)\">\n @for (child of item.children; track child) {\n <a\n [tabindex]=\"expanded().has(item) ? 0 : -1\"\n class=\"le-menu-item\"\n [class.le-menu-item--selected]=\"view().id === child.id\"\n (click)=\"onSidebarItemClick($event, child)\"\n (keydown.enter)=\"onSidebarItemClick($event, child)\"\n >\n <div class=\"le-menu-title\">\n {{ child.title }}\n </div>\n </a>\n }\n </div>\n } @else {\n <a\n tabindex=\"0\"\n class=\"le-menu-item\"\n [class.le-menu-item--selected]=\"view().id === item.id\"\n (click)=\"onSidebarItemClick($event, item)\"\n (keydown.enter)=\"onSidebarItemClick($event, item)\"\n >\n <div class=\"le-menu-title\">\n {{ item.title }}\n </div>\n </a>\n }\n }\n </menu>\n\n <div class=\"le-drawer-resizer\" cdkDrag (cdkDragMoved)=\"onDragMoved($event)\">\n <span class=\"le-drag-icon\">⠿</span>\n </div>\n }\n </aside>\n\n <main leDrawerContent>\n <ng-content></ng-content>\n </main>\n</div>\n","import { Component, input } from '@angular/core';\nimport { LeChartNode } from '@planeasyinc/le-core';\n\n@Component({\n selector: 'chart-view',\n templateUrl: './chart-view.component.html',\n})\nexport class ChartViewComponent {\n node = input.required<LeChartNode>();\n}\n","<h2>{{ node()?.title }}</h2>\n","import { Component, forwardRef, input } from '@angular/core';\nimport { LeGridNode } from '@planeasyinc/le-core';\nimport { NodeComponent } from '../../components/node/node.component';\n\n@Component({\n selector: 'grid-view',\n templateUrl: './grid-view.component.html',\n imports: [forwardRef(() => NodeComponent)],\n})\nexport class GridComponent {\n node = input.required<LeGridNode>();\n}\n","@for (child of node().children; track child.id) {\n <le-node [node]=\"child\"></le-node>\n}\n","import { DataSource } from '@angular/cdk/table';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nexport class TableDataSource<IData> extends DataSource<IData> {\n private data: BehaviorSubject<IData[]>;\n\n get count(): number {\n return this.data.value.length;\n }\n\n constructor(data: IData[] = []) {\n super();\n this.data = new BehaviorSubject<IData[]>(data);\n }\n\n connect(): Observable<IData[]> {\n return this.data;\n }\n\n disconnect() {}\n}\n","import {ChangeDetectionStrategy, Component, computed, effect, input, output, signal, untracked} from '@angular/core';\nimport { PageChange } from './table-view.types';\nimport { CdkMenu, CdkMenuItem, CdkMenuTrigger } from '@angular/cdk/menu';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport {LeIconComponent} from \"../../icons/le-icon.component\";\n\n@Component({\n selector: 'table-view-pagination',\n templateUrl: './table-view-pagination.component.html',\n imports: [CdkMenuTrigger, CdkMenu, CdkMenuItem, A11yModule, LeIconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableViewPaginationComponent {\n pageSize = input.required<number>();\n pageSizeOptions = input.required<number[]>();\n entriesCount = input.required<number>();\n\n pageChange = output<PageChange>();\n\n protected selectedPageSize = signal<number>(0);\n protected selectedPageIndex = signal<number>(0);\n\n entriesRange = computed(() => {\n const selectedPageIndex = this.selectedPageIndex();\n const pageSize = this.pageSize();\n const count = this.entriesCount();\n const rangeStart = selectedPageIndex * pageSize;\n const rangeEnd = rangeStart + pageSize;\n\n return {\n start: rangeStart,\n end: rangeEnd > count ? count : rangeEnd,\n };\n });\n\n constructor() {\n this.setEffects();\n }\n\n onPageSizeChange(option: number): void {\n this.selectedPageSize.set(option);\n }\n\n onNavigateClick(param: 'next' | 'prev'): void {\n this.selectedPageIndex.update((index) => {\n if (param === 'prev' && this.canNavigatePrev(index)) {\n return index - 1;\n }\n\n if (param === 'next' && this.canNavigateNext(index)) {\n return index + 1;\n }\n\n return index;\n });\n }\n\n canNavigatePrev(index = this.selectedPageIndex()): boolean {\n return index > 0;\n }\n\n canNavigateNext(index = this.selectedPageIndex()): boolean {\n return index < this.getLastPageIndex();\n }\n\n private setEffects(): void {\n effect(() => {\n const pageSize = this.pageSize();\n\n untracked(() => {\n this.selectedPageSize.set(pageSize);\n });\n });\n\n effect(() => {\n const pageSize = this.selectedPageSize();\n\n untracked(() => {\n const selectedPageIndex = this.selectedPageIndex();\n const pageIndex = this.getPageIndexOnPageSizeChange();\n\n if (selectedPageIndex !== pageIndex) {\n this.selectedPageIndex.set(pageIndex);\n } else {\n this.pageChange.emit({\n pageSize: pageSize,\n pageIndex: pageIndex,\n });\n }\n });\n });\n\n effect(() => {\n const index = this.selectedPageIndex();\n\n untracked(() => {\n this.pageChange.emit({\n pageSize: this.selectedPageSize(),\n pageIndex: index,\n });\n });\n });\n }\n\n /**\n * @return page index or last available page index for selected page size\n */\n private getPageIndexOnPageSizeChange(): number {\n const selectedPageIndex = this.selectedPageIndex();\n const lasPageIndex = this.getLastPageIndex();\n\n return selectedPageIndex > lasPageIndex ? lasPageIndex : selectedPageIndex;\n }\n\n /**\n * @return last available page index\n */\n private getLastPageIndex(): number {\n const count = this.entriesCount();\n\n if (count === 0) return 0;\n\n return Math.ceil(count / this.selectedPageSize()) - 1;\n }\n}\n","<div class=\"le-pagination\">\n <div class=\"le-pagination-options\">\n <span>Items per page:</span>\n\n <button [cdkMenuTriggerFor]=\"optionsMenu\" class=\"le-button\">\n {{ selectedPageSize() }}\n\n <le-icon name=\"arrow-down\"></le-icon>\n </button>\n\n <ng-template #optionsMenu>\n <div class=\"le-pagination-option-list\" cdkMenu>\n @for (option of pageSizeOptions(); track option) {\n <button cdkMenuItem class=\"le-pagination-option-item\" (click)=\"onPageSizeChange(option)\">\n {{ option }}\n </button>\n }\n </div>\n </ng-template>\n </div>\n\n <div class=\"spacer\"></div>\n\n <div class=\"le-pagination-range\">\n {{ entriesRange().start }} - {{ entriesRange().end }} of {{ entriesCount() }}\n </div>\n\n <div class=\"le-pagination-navigation\">\n <button\n class=\"le-navigation le-navigation-prev\"\n [tabindex]=\"canNavigatePrev() ? 0 : -1\"\n [disabled]=\"!canNavigatePrev()\"\n (click)=\"onNavigateClick('prev')\"\n >\n <le-icon class=\"le-chevron le-chevron--left\" name=\"chevron\"></le-icon>\n </button>\n\n <button\n class=\"le-navigation le-navigation-next\"\n [tabindex]=\"canNavigateNext() ? 0 : -1\"\n [disabled]=\"!canNavigateNext()\"\n (click)=\"onNavigateClick('next')\"\n >\n <le-icon class=\"le-chevron le-chevron--right\" name=\"chevron\"></le-icon>\n </button>\n </div>\n</div>\n","import { RequestContext, TableParams } from './table-view.types';\n\nexport const isPlaceholder = (value: string): boolean => {\n return value.startsWith('{') && value.endsWith('}');\n};\n\nexport const mapSortStringToSort = (sort: string): [key: string, 'asc' | 'desc'] => {\n return sort.startsWith('-') ? [sort.slice(1), 'desc'] : [sort, 'desc'];\n};\n\nexport const mapSortStringListToSortMap = (sortList: string[]): Map<string, 'asc' | 'desc'> => {\n return sortList.reduce((acc: Map<string, 'asc' | 'desc'>, sort) => {\n const { 0: key, 1: value } = mapSortStringToSort(sort);\n acc.set(key, value);\n return acc;\n }, new Map());\n};\n\nexport const mapSortMapToSortStringList = (sortMap: Map<string, 'asc' | 'desc'>): string[] => {\n return [...sortMap].reduce((acc: string[], sort) => {\n const prefix = sort[1] === 'asc' ? '' : '-';\n acc.push(`${prefix}${sort[0]}`);\n return acc;\n }, []);\n};\n\nexport const mapFiltersToFilterString = (filters: Record<string, string>): string => {\n return Object.entries(filters)\n .reduce((acc: string[], filter) => {\n return acc.concat(`filter[${filter[0]}]=${filter[1]}`);\n }, [])\n .join('&');\n};\n\nexport const buildRequestContext = (\n params: TableParams,\n ctx: { isSortable: boolean; hasPagination: boolean },\n): RequestContext => {\n const requestContext: RequestContext = {};\n\n if (ctx.hasPagination && params.pageIndex !== undefined) {\n requestContext['pageIndex'] = params.pageIndex;\n requestContext['pageSize'] = params.pageSize;\n }\n\n if (ctx.isSortable && params.sort) {\n requestContext['sort'] = params.sort;\n }\n\n if (params.filters && Object.keys(params.filters).length > 0) {\n requestContext['filters'] = params.filters;\n }\n\n return requestContext;\n};\n\nexport const buildRequestBody = (params: RequestContext): Record<string, any> => {\n const body: Record<string, any> = {};\n\n if (params.sort?.length) {\n body['ordering'] = params.sort;\n }\n\n if (params.filters && Object.keys(params.filters).length > 0) {\n body['filters'] = params.filters;\n }\n\n if (params.pageIndex !== undefined) {\n body['page'] = params.pageIndex + 1;\n }\n\n if (params.pageSize) {\n body['page_size'] = params.pageSize;\n }\n\n return body;\n};\n\nexport const buildQueryString = (params: RequestContext): string => {\n const query: string[] = [];\n\n if (params.pageIndex !== undefined) {\n query.push(`page=${params.pageIndex + 1}`);\n }\n\n if (params.pageSize) {\n query.push(`page_size=${params.pageSize}`);\n }\n\n if (params.sort?.length) {\n query.push(`ordering=${params.sort.join(',')}`);\n }\n\n if (params.filters && Object.keys(params.filters).length > 0) {\n query.push(mapFiltersToFilterString(params.filters));\n }\n\n return query.filter((item) => !!item).join('&');\n};\n","import { Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'app-loading-view',\n templateUrl: './loading-view.component.html',\n styles: `\n .preloader {\n display: flex;\n flex-direction: column;\n width: 100%;\n gap: 8px;\n }\n\n .preloader-row {\n background: #f5f5f5 no-repeat;\n animation: pulse 1.5s cubic-bezier(0.4, 0, 0.2, 1) infinite;\n animation-delay: 0.5s;\n }\n\n @keyframes pulse {\n 0% {\n opacity: 1;\n }\n 50% {\n opacity: 0.5;\n }\n 100% {\n opacity: 1;\n }\n }\n `,\n})\nexport class LoadingViewComponent {\n headerHeight = input<number>(0);\n rowHeight = input<number>(40);\n rowCount = input<number>(1);\n\n protected rows = computed(() => {\n return new Array(this.rowCount()).fill(null).map((_, i) => i);\n });\n}\n","<div class=\"preloader\">\n @if (headerHeight()) {\n <div class=\"preloader-row\" [style.height.px]=\"headerHeight()\"></div>\n }\n\n @for (row of rows(); track row) {\n <div class=\"preloader-row\" [style.height.px]=\"rowHeight()\"></div>\n }\n</div>\n","import { Component, input, output } from '@angular/core';\nimport { LeTableAction } from '@planeasyinc/le-core';\n\n@Component({\n selector: 'table-view-actions',\n template: `\n @for (action of actions(); track action) {\n <button\n class=\"le-button le-button-flat le-button--success\"\n (click)=\"actionClicked.emit(action)\"\n >\n {{ action.label }}\n </button>\n }\n `,\n host: {\n '[class.le-table-view-actions]': 'true',\n },\n})\nexport class TableViewActions {\n actions = input<LeTableAction[]>();\n\n actionClicked = output<LeTableAction>();\n}\n","import { Component, input } from '@angular/core';\n\n@Component({\n template: `<span class=\"le-table-template le-template-string\">{{ data() ?? '–' }}</span>`,\n})\nexport class StringTemplate {\n data = input.required<string>();\n}\n","import { Component, input } from '@angular/core';\n\n@Component({\n template: `<span class=\"le-table-template le-template-reference\"></span>`,\n})\nexport class ReferenceTemplate {\n data = input.required<unknown>();\n}\n","import { Component, input } from '@angular/core';\nimport { JsonPipe } from '@angular/common';\n\n@Component({\n template: `<pre class=\"le-table-template le-template-json\">{{\n data() ? (data() | json) : '–'\n }}</pre>`,\n imports: [JsonPipe],\n})\nexport class JSONTemplate {\n data = input.required<string>();\n}\n","import { Type } from '@angular/core';\nimport { StringTemplate } from './string.template';\nimport { ReferenceTemplate } from './reference.template';\nimport { JSONTemplate } from './json.template';\n\nconst TABLE_SELL_TEMPLATE_NAMES = {\n StringTemplate: 'StringTemplate',\n ReferenceTemplate: 'ReferenceTemplate',\n JsonTemplate: 'JsonTemplate',\n} as const;\n\nexport type TableCellTemplateType =\n (typeof TABLE_SELL_TEMPLATE_NAMES)[keyof typeof TABLE_SELL_TEMPLATE_NAMES];\n\nexport const TABLE_CELL_TEMPLATES: Record<TableCellTemplateType, Type<unknown>> = {\n StringTemplate: StringTemplate,\n ReferenceTemplate: ReferenceTemplate,\n JsonTemplate: JSONTemplate,\n};\n","import {\n ComponentRef,\n Directive,\n effect,\n inject,\n input,\n untracked,\n ViewContainerRef,\n} from '@angular/core';\nimport { TABLE_CELL_TEMPLATES, TableCellTemplateType } from '../../templates';\n\n@Directive({\n selector: '[tableViewCell]',\n})\nexport class TableViewCellDirective {\n private vcr = inject(ViewContainerRef);\n private componentRef?: ComponentRef<unknown>;\n\n readonly type = input<string>();\n readonly data = input.required<unknown>();\n\n constructor() {\n this.setEffects();\n }\n\n private setEffects(): void {\n effect(() => {\n const type = this.type() as TableCellTemplateType | undefined;\n const data = this.data();\n\n untracked(() => {\n const component =\n (type && TABLE_CELL_TEMPLATES[type]) || TABLE_CELL_TEMPLATES['StringTemplate'];\n\n if (this.componentRef) {\n this.componentRef.destroy();\n }\n\n this.componentRef = this.vcr.createComponent(component);\n\n this.componentRef?.setInput('data', data);\n });\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n signal,\n untracked,\n} from '@angular/core';\nimport {\n CdkCell,\n CdkCellDef,\n CdkColumnDef,\n CdkHeaderCell,\n CdkHeaderCellDef,\n CdkHeaderRow,\n CdkHeaderRowDef,\n CdkRow,\n CdkRowDef,\n CdkTable,\n} from '@angular/cdk/table';\nimport { Subject, takeUntil, Observable } from 'rxjs';\n\nimport { LeTableAction, LeTableNode, LeSort, LePagination, LeAction } from '@planeasyinc/le-core';\n\nimport { LEApiService } from '../../services/le-api.service';\nimport { LEDataService } from '../../services/le-data.service';\nimport { TableDataSource } from './table-data-sourse';\nimport { TableViewPaginationComponent } from './table-view-pagination.component';\nimport { PageChange, RequestContext } from './table-view.types';\nimport {\n buildQueryString,\n buildRequestBody,\n buildRequestContext,\n isPlaceholder,\n mapSortMapToSortStringList,\n mapSortStringListToSortMap,\n} from './table-view.utils';\nimport { LeDataSource } from '@planeasyinc/le-core';\nimport { LoadingViewComponent } from '../loading-view/loading-view.component';\nimport { TableViewActions } from './table-view-actions.component';\nimport { TableViewCellDirective } from './table-view-cell.directive';\nimport {LeIconComponent} from \"../../icons/le-icon.component\";\n\ninterface ColumnModel {\n type: string;\n key: string;\n label: string;\n [key: string]: any;\n}\n\ninterface CellModel {\n [key: string]: any;\n}\n\ninterface TableDataModel {\n columns: ColumnModel[];\n rows: CellModel[];\n total: number;\n}\n\n@Component({\n selector: 'table-view',\n templateUrl: './table-view.component.html',\n imports: [\n CdkTable,\n CdkColumnDef,\n CdkHeaderCell,\n CdkHeaderCellDef,\n CdkCell,\n CdkCellDef,\n CdkHeaderRowDef,\n CdkHeaderRow,\n CdkRow,\n CdkRowDef,\n TableViewPaginationComponent,\n LoadingViewComponent,\n TableViewActions,\n TableViewCellDirective,\n LeIconComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableViewComponent {\n private apiService = inject(LEApiService);\n private dataService = inject(LEDataService);\n\n node = input.required<LeTableNode>();\n\n private _columns = signal<ColumnModel[]>([]);\n private _data = signal<TableDataSource<CellModel>>(new TableDataSource());\n private _total = signal(0);\n private _isLoading = signal(false);\n\n private _pageIndex = signal(0);\n private _pageSize = signal(0);\n private _pageSizeOptions = signal<number[]>([]);\n\n private _sortConfig = signal<LeSort | null>(null);\n private _sortMap = signal(new Map<string, 'asc' | 'desc'>());\n private _sortOrder = signal<Map<string, number>>(new Map());\n private _cancelRequest$ = new Subject<void>();\n\n readonly columns = this._columns.asReadonly();\n readonly data = this._data.asReadonly();\n readonly displayedColumns = computed(() => {\n return this.columns().map((column) => column.key);\n });\n readonly isLoading = this._isLoading.asReadonly();\n readonly pageIndex = this._pageIndex.asReadonly();\n readonly pageSize = this._pageSize.asReadonly();\n readonly pageSizeOptions = this._pageSizeOptions.asReadonly();\n readonly entriesCount = this._total.asReadonly();\n\n readonly sortMap = this._sortMap.asReadonly();\n readonly sortOrder = this._sortOrder.asReadonly();\n readonly isSortingEnabled = computed(() => {\n return !!this._sortConfig()?.fields.length;\n });\n readonly sortColumnKeys = computed(() => {\n return new Set(this._sortConfig()?.fields ?? []);\n });\n readonly hasRowClickAction = computed(() => {\n return !!this.node()?.actions?.onRowClick?.length;\n });\n\n constructor() {\n this.setEffects();\n }\n\n onPageChange(pageChange: PageChange): void {\n this._pageSize.set(pageChange.pageSize);\n this._pageIndex.set(pageChange.pageIndex);\n }\n\n onSortClick(event: Event, column: ColumnModel): void {\n event.stopPropagation();\n\n this._sortMap.update((sortMap) => {\n const direction = sortMap.get(column.key);\n if (direction === 'desc') {\n sortMap.delete(column.key);\n } else if (direction === 'asc') {\n sortMap.set(column.key, 'desc');\n } else {\n sortMap.set(column.key, 'asc');\n }\n\n return new Map(sortMap);\n });\n }\n\n onToolbarActionClick({ actions }: LeTableAction) {\n actions.forEach((action) => this.processTableAction(action));\n }\n\n onRowClick(row: CellModel): void {\n const actions = this.node().actions?.onRowClick ?? [];\n actions.forEach((action) => this.processTableAction(action, row));\n }\n\n private processTableAction(action: LeAction, row?: CellModel) {\n if (action.type === 'update_form') {\n const dataSource = action.dataSource as LeDataSource;\n\n this.dataService.setView({\n id: action.type,\n type: 'form',\n controlSource: {\n kind: dataSource.kind,\n entity: dataSource.entity,\n params: dataSource?.params\n ? this.interpolateRowValues(dataSource.params, row)\n : undefined,\n },\n });\n }\n }\n\n private setPagination(pagination?: LePagination): void {\n this._pageSize.set(pagination?.pageSize ?? 0);\n this._pageSizeOptions.set(pagination?.options ?? []);\n }\n\n private getTableData(node: LeTableNode, ctx: RequestContext): void {\n this._isLoading.set(true);\n this._cancelRequest$.next();\n\n this.buildRequest(node, ctx).subscribe({\n next: (response: TableDataModel) => {\n this.handleTableDataSuccessResponse(response);\n },\n error: (error) => {\n this.handleTableDataErrorResponse(error);\n },\n });\n }\n\n private buildRequest(node: LeTableNode, ctx: RequestContext): Observable<TableDataModel> {\n if (node.dataSource?.kind === 'class') {\n const query = buildQueryString(ctx);\n\n return this.apiService.getObject<TableDataModel>(node.dataSource.entity, query);\n }\n if (node.dataSource?.kind === 'transaction') {\n const body = Object.assign({}, node.dataSource.params, buildRequestBody(ctx));\n\n this.apiService.executeTransaction<TableDataModel>(node.dataSource.entity, body);\n }\n\n throw new Error(`Datasource type should be class or transaction. Received: ${node.dataSource?.kind}`);\n }\n\n private handleTableDataSuccessResponse(response: TableDataModel): void {\n this._columns.set(response.columns);\n this._data.set(new TableDataSource(response.rows));\n this._total.set(response.total ?? response.rows.length);\n this._isLoading.set(false);\n }\n\n private handleTableDataErrorResponse(error: unknown): void {\n console.error(error);\n this._columns.set([]);\n this._data.set(new TableDataSource());\n this._total.set(0);\n this._isLoading.set(false);\n }\n\n private interpolateRowValues(body: Record<string, unknown>, row: CellModel = {}) {\n const result: Record<string, any> = {};\n\n Object.entries(body).forEach(([key, value]: [string, unknown]) => {\n if (typeof value === 'string' && isPlaceholder(value)) {\n const valueKey = value.replace(/\\{row\\.(\\w+)\\}/g, '$1');\n\n if (row[valueKey]) {\n result[key] = row[valueKey];\n }\n } else {\n result[key] = value;\n }\n });\n\n return result;\n }\n\n private setEffects(): void {\n effect(() => {\n const node = this.node();\n\n this.setPagination(node.ui?.pagination);\n this._sortConfig.set(node?.ui?.sort ?? null);\n this._sortMap.set(mapSortStringListToSortMap(node?.ui?.sort?.default ?? []));\n });\n\n effect(() => {\n const node = this.node();\n const pageSize = this.pageSize();\n const pageIndex = this.pageIndex();\n const sort = this._sortMap();\n\n untracked(() => {\n if (node?.dataSource) {\n const ctx = buildRequestContext(\n {\n pageSize,\n pageIndex,\n sort: mapSortMapToSortStringList(sort),\n // filters,\n },\n {\n isSortable: this.isSortingEnabled(),\n hasPagination: !!this.pageSize(),\n },\n );\n\n this.getTableData(node, ctx);\n }\n });\n });\n\n effect(() => {\n const sortMap = this._sortMap();\n\n untracked(() => {\n this._sortOrder.update(() => {\n return [...sortMap].reduce((acc: Map<string, number>, item, index) => {\n return acc.set(item[0], index + 1);\n }, new Map());\n });\n });\n });\n }\n}\n","<div class=\"le-toolbar\">\n @if (node(); as node) {\n <h2>{{ node?.title }}</h2>\n\n @if (node.actions?.tableActions) {\n <table-view-actions\n [actions]=\"node.actions!.tableActions\"\n (actionClicked)=\"onToolbarActionClick($event)\"\n ></table-view-actions>\n }\n }\n</div>\n\n@if (pageSize()) {\n <table-view-pagination\n [pageSize]=\"pageSize()\"\n [pageSizeOptions]=\"pageSizeOptions()\"\n [entriesCount]=\"entriesCount()\"\n (pageChange)=\"onPageChange($event)\"\n ></table-view-pagination>\n}\n\n<div class=\"le-table-container\">\n @if (displayedColumns().length) {\n <table cdk-table [dataSource]=\"data()\" class=\"le-table\" [class.le-table--loading]=\"isLoading()\">\n @for (column of columns(); track column) {\n <ng-container [cdkColumnDef]=\"column.key\">\n <th\n class=\"le-table-header-cell\"\n cdk-header-cell\n *cdkHeaderCellDef\n [tabindex]=\"sortColumnKeys().has(column.key) ? 0 : -1\"\n [class.le-table-header-cell--sortable]=\"sortColumnKeys().has(column.key)\"\n (click)=\"sortColumnKeys().has(column.key) && onSortClick($event, column)\"\n >\n <div class=\"le-cell-content\">\n <ng-template\n tableViewCell\n [data]=\"column.label\"\n [type]=\"column.column_format?.headerTemplate\"\n ></ng-template>\n\n @if (sortColumnKeys().has(column.key)) {\n <div class=\"le-sort-container\">\n @if (sortMap().has(column.key)) {\n <div class=\"le-sort-icon\">\n <i\n class=\"le-sort-arrow\"\n [class.le-sort-arrow--asc]=\"sortMap().get(column.key) === 'asc'\"\n [class.le-sort-arrow--desc]=\"sortMap().get(column.key) === 'desc'\"\n ></i>\n </div>\n\n <div class=\"le-sort-order\">\n @if (sortOrder().has(column.key)) {\n <span>\n {{ sortOrder().get(column.key) }}\n </span>\n }\n </div>\n } @else {\n<!-- <div class=\"le-sort-icon le-sort-icon--unfold\">-->\n<!-- <span>⇅</span>-->\n<!-- </div>-->\n\n <le-icon name=\"sort\" class=\"le-sort-icon le-sort-icon--unfold\"></le-icon>\n }\n </div>\n }\n </div>\n </th>\n\n <td class=\"le-table-cell\" cdk-cell *cdkCellDef=\"let row\">\n <ng-template\n tableViewCell\n [data]=\"row[column.key]\"\n [type]=\"column.column_format?.cellTemplate\"\n ></ng-template>\n </td>\n </ng-container>\n }\n\n <tr cdk-header-row class=\"le-header-row\" *cdkHeaderRowDef=\"displayedColumns()\"></tr>\n <tr\n cdk-row\n class=\"le-table-row\"\n [tabindex]=\"0\"\n [class.le-table-row--clickable]=\"hasRowClickAction()\"\n *cdkRowDef=\"let row; columns: displayedColumns()\"\n (click)=\"onRowClick(row)\"\n ></tr>\n </table>\n }\n</div>\n\n@if (data().count === 0) {\n @if (isLoading()) {\n <app-loading-view [headerHeight]=\"65\" [rowCount]=\"pageSize() || 10\"></app-loading-view>\n } @else {\n <div class=\"no-entities\">\n <span>No Entities</span>\n </div>\n }\n}\n","import { adaptOld } from '@planeasyinc/fe-adapters-old';\nimport { adaptSections } from '@planeasyinc/fe-adapters-sections';\nimport type { FeForm } from '@planeasyinc/fe-core';\n\ninterface SectionsSchemaLike {\n control?: {\n type?: string;\n sections?: unknown;\n };\n meta?: {\n sections?: unknown;\n };\n sections?: unknown;\n}\n\nconst isSectionsSchema = (raw: unknown): raw is SectionsSchemaLike => {\n if (!raw || typeof raw !== 'object') return false;\n\n const r = raw as SectionsSchemaLike;\n\n return Boolean(\n r.sections || // direct sections array\n r.control?.type === 'sections' || // control.type === 'sections'\n r.control?.sections || // control.sections\n r.meta?.sections, // meta.sections\n );\n};\n\nexport const adaptForm = (raw: unknown): FeForm => {\n if (isSectionsSchema(raw)) {\n return adaptSections(raw);\n }\n\n return adaptOld(raw);\n};\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n input,\n Renderer2,\n} from '@angular/core';\nimport { FeFormEngine, FeSection, FeControlConfig } from '@planeasyinc/fe-core';\nimport { FeFieldHost } from '@planeasyinc/fe-angular';\n\n@Component({\n selector: 'le-form-renderer',\n templateUrl: './form-renderer.component.html',\n imports: [FeFieldHost],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormRendererComponent {\n private renderer = inject(Renderer2);\n private ref = inject(ElementRef);\n private destroyRef = inject(DestroyRef);\n private styleRef: HTMLStyleElement = this.renderer.createElement('style');\n\n engine = input.required<FeFormEngine>();\n sections = input.required<FeSection[]>();\n topLevelControls = input<FeControlConfig[]>([]);\n customCss = input<string>();\n\n constructor() {\n this.renderer.appendChild(this.ref.nativeElement, this.styleRef);\n\n this.destroyRef.onDestroy(() => {\n this.renderer.removeChild(this.ref.nativeElement, this.styleRef);\n });\n\n effect(() => {\n this.styleRef.textContent = this.customCss() ?? '';\n });\n }\n}\n","<div class=\"le-form-container\">\n @for (section of sections(); track section.id) {\n <section class=\"le-section\">\n <div class=\"le-section-title\">\n @if (section.label) {\n <h3>{{ section.label }}</h3>\n }\n </div>\n\n <div class=\"le-section-controls\">\n @for (control of section.controls; track control) {\n <fe-field [engine]=\"engine()\" [control]=\"control\"></fe-field>\n }\n </div>\n </section>\n }\n\n @if (topLevelControls()?.length) {\n <section class=\"le-top-level-controls\">\n @for (control of topLevelControls(); track control) {\n <fe-field [engine]=\"engine()\" [control]=\"control\"></fe-field>\n }\n </section>\n }\n</div>\n","/**\n * Handle placeholders in onSuccess callback.\n */\n\nexport const isPlaceholder = (value: unknown): boolean => {\n return typeof value === 'string' && value.startsWith('{') && value.endsWith('}');\n};\n\n/**\n * @param value \"{email_verification_code_field}\"\n * @returns \"email_verification_code_field\"\n */\nexport const getPlaceholderValue = (value: string): string => {\n return value.slice(1, -1);\n};\n\n/**\n * @param body {\"email_verification_code\": \"{email_verification_code_field}\"}\n * @returns [\"email_verification_code_field\"]\n */\nexport const mapActionBodyToFieldsArray = (body: Record<string, string>): string[] => {\n const result: string[] = [];\n\n for (const placeholder of Object.values(body)) {\n if (isPlaceholder(placeholder)) {\n result.push(getPlaceholderValue(placeholder));\n }\n }\n\n return result;\n};\n\n/**\n * @param body {\"email_verification_code\": \"{email_verification_code_field}\"}\n * @param errors {\"email_verification_code\": \"Invalid email verification code\"}\n * @returns true if body fields have errors\n */\nexport const isErrorCorrespondActionBody = (\n body: Record<string, string>,\n errors: Record<string, any>,\n): boolean => {\n const bodyFields = mapActionBodyToFieldsArray(body);\n\n return bodyFields.some((field) => errors[field] !== undefined);\n};\n\nconst getValueByPath = (obj: Record<string, any> = {}, path: string): any => {\n if (path.includes('.')) {\n return path.split('.').reduce((acc, key) => acc && acc[key], obj);\n }\n return obj[path];\n};\n\nexport const mapResponseToRequestBody = (\n bodyModel: Record<string, string> = {},\n values: Record<string, any> = {},\n) => {\n const result: Record<string, any> = {};\n\n for (const [key, placeholder] of Object.entries(bodyModel)) {\n if (isPlaceholder(placeholder)) {\n const path = getPlaceholderValue(placeholder);\n const value = getValueByPath(values, path);\n\n if (value !== null && value !== undefined && value !== '') {\n result[key] = value;\n }\n } else {\n result[key] = placeholder;\n }\n }\n\n return result;\n};\n","import { Component, inject } from '@angular/core';\nimport { LeToastButtonControl, LeToastService } from '../../services/le-toast.service';\n\n@Component({\n templateUrl: './toast-list.component.html',\n})\nexport class ToastListComponent {\n private toastService = inject(LeToastService);\n\n readonly toasts = this.toastService.toasts;\n\n onButtonClick(actions: LeToastButtonControl['actions']): void {\n actions.forEach((action) => this.toastService.processAction(action));\n }\n}\n","@if (toasts().length) {\n <div class=\"le-toast-list\">\n @for (toast of toasts(); track toast.id) {\n <div\n class=\"le-toast\"\n [class.le-toast--success]=\"toast.type === 'success'\"\n [class.le-toast--info]=\"toast.type === 'info'\"\n [class.le-toast--warning]=\"toast.type === 'warning'\"\n [class.le-toast--error]=\"toast.type === 'error'\"\n >\n <div class=\"le-toast-text-list\">\n @for (control of toast.controls; track control) {\n @if (control.type === 'text') {\n <p class=\"le-toast-text\">\n {{ control.value }}\n </p>\n }\n }\n </div>\n\n <div class=\"le-toast-button-list\">\n @for (control of toast.controls; track control) {\n @if (control.type === 'button') {\n <button\n class=\"le-button le-button-stroked\"\n [class.le-button--success]=\"toast.type === 'success'\"\n [class.le-button--info]=\"toast.type === 'info'\"\n [class.le-button--warning]=\"toast.type === 'warning'\"\n [class.le-button--error]=\"toast.type === 'error'\"\n (click)=\"onButtonClick(control.actions)\"\n >\n {{ control.label }}\n </button>\n }\n }\n </div>\n </div>\n }\n </div>\n}\n","import { effect, inject, Injectable, signal } from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ToastListComponent } from '../components/toast-list/toast-list.component';\n\nexport interface LeToastButtonControl {\n type: 'button';\n label: string;\n actions: Array<{ type: string; target: string }>;\n}\n\nexport interface LeToastTextControl {\n type: 'text';\n value: string;\n}\n\ntype LeToastType = 'success' | 'error' | 'info' | 'warning';\n\nexport interface LeToast {\n id: string;\n type: LeToastType;\n controls: Array<LeToastTextControl | LeToastButtonControl>;\n}\n\nlet ID = 100_000_000;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LeToastService {\n private overlayRef?: OverlayRef;\n private overlay = inject(Overlay);\n private _toasts = signal<LeToast[]>([]);\n\n readonly toasts = this._toasts.asReadonly();\n\n constructor() {\n effect(() => {\n const toasts = this._toasts();\n\n if (toasts.length > 0) {\n this.show();\n } else {\n this.hide();\n }\n });\n }\n\n notify(toast: LeToast): void {\n this._toasts.update((toasts) => [...toasts, toast]);\n }\n\n warn(...messages: string[]): void {\n this.notify(this.buildToast('warning', messages));\n }\n\n info(...messages: string[]): void {\n this.notify(this.buildToast('info', messages));\n }\n\n success(...messages: string[]): void {\n this.notify(this.buildToast('success', messages));\n }\n\n error(...messages: string[]): void {\n this.notify(this.buildToast('error', messages));\n }\n\n remove(id: string): void {\n this._toasts.update((toasts) => toasts.filter((toast) => toast.id !== id));\n }\n\n processAction(action: LeToastButtonControl['actions'][0]): void {\n if (action.type === 'close_popup') {\n this.remove(action.target);\n }\n }\n\n private show(): void {\n if (this.overlayRef) return;\n\n this.overlayRef = this.overlay.create({\n positionStrategy: this.overlay.position().global().right().top(),\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n });\n\n this.overlayRef.attach(new ComponentPortal(ToastListComponent));\n }\n\n private hide(): void {\n this.overlayRef?.dispose();\n this.overlayRef = undefined;\n }\n\n private buildToast(type: LeToastType, messages: string[]): LeToast {\n const id = `${type}_${ID++}`;\n\n const textControls: LeToastTextControl[] = messages.map((message) => ({\n type: 'text',\n value: message,\n }));\n const buttonControl: LeToastButtonControl = {\n type: 'button',\n label: 'Ok',\n actions: [{ type: 'close_popup', target: id }],\n };\n\n return {\n id,\n type,\n controls: [...textControls, buttonControl],\n };\n }\n}\n","/**\n * Add or update URL parameter\n */\nconst addUrlParameter = (url: string, paramName: string, paramValue: string): string => {\n try {\n const urlObj = new URL(url);\n urlObj.searchParams.set(paramName, paramValue);\n return urlObj.toString();\n } catch {\n // If URL parsing fails, try simple string manipulation\n const separator = url.includes('?') ? '&' : '?';\n return `${url}${separator}${paramName}=${encodeURIComponent(paramValue)}`;\n }\n};\n/**\n * Get preview URL for image (with disposition_type=inline)\n */\nexport const getPreviewUrl = (downloadUrl: string): string => {\n return addUrlParameter(downloadUrl, 'disposition_type', 'inline');\n};\n/**\n * Clear file data from 'unsafe:' prefix\n */\nexport const clearFileData = (data: string) => {\n return data.startsWith('unsafe:') ? data.substring(7) : data;\n};\n/**\n * If attachment is an image\n */\nexport const isImageAttachment = (attachment: any): boolean => {\n return !!(attachment.mimetype && attachment.mimetype.toLowerCase().includes('image'));\n};\n\nexport const isDownloadFileString = (str: string): boolean => {\n return isUrlString(str) && str.includes('/download-file/');\n};\n\nexport const isUrlString = (str: string): boolean => {\n return str.startsWith('http://') || str.startsWith('https://');\n};\n\nexport const isBase64String = (str: string): boolean => {\n return str.startsWith('base64,');\n};\n\nexport const isDataUrlString = (str: string): boolean => {\n return str.startsWith('data:');\n};\n/**\n * Is attachment reference\n */\nexport const isAttachmentRef = (attachment: any): boolean => {\n return (\n !!attachment.ref &&\n !!attachment.ref.resource &&\n !!attachment.ref.class_name &&\n !!attachment.ref.object_id &&\n !!attachment.ref.object_version\n );\n};\n/**\n * Get attachment url\n */\nexport const getAttachmentUrl = (attachment: any): string => {\n return `${attachment.ref.resource}%23${attachment.ref.class_name}%3A${attachment.ref.class_version}%3A${attachment.ref.object_id}%3A${attachment.ref.object_version}`;\n};\n","import { inject, Injectable } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport { LEApiService } from '../../services/le-api.service';\nimport {\n clearFileData,\n getAttachmentUrl,\n getPreviewUrl,\n isAttachmentRef,\n isBase64String,\n isDataUrlString,\n isDownloadFileString,\n isImageAttachment,\n isUrlString,\n} from './form-view-attachment.utils';\n\ninterface LeAttachment {\n data: string;\n filename: string;\n originalUrl?: string;\n isUrl: boolean;\n}\n\n@Injectable()\nexport class FormViewAttachmentService {\n private apiService = inject(LEApiService);\n private _cache = new Map<string, LeAttachment>();\n\n async resolve(attachment: any): Promise<string> {\n if (!attachment.ref) return '';\n\n const objectId = attachment.ref.object_id;\n\n if (!this._cache.has(objectId)) {\n const fileInfo = await this.fetchAttachmentData(attachment);\n\n if (typeof fileInfo?.data === 'string') {\n const normalized = await this.normalizeFileData(\n fileInfo.data,\n fileInfo.filename,\n attachment,\n );\n\n this._cache.set(objectId, normalized);\n }\n }\n\n return this._cache.get(objectId)?.data ?? '';\n }\n\n async download(attachment: any): Promise<void> {\n const fileInfo = await this.resolveAttachmentData(attachment);\n\n if (!fileInfo) return;\n\n const file = await firstValueFrom(this.apiService.getBlob(fileInfo.data));\n\n this.downloadWithAnchor(file, fileInfo.filename);\n }\n\n private async resolveAttachmentData(\n attachment: any,\n ): Promise<{ data: string; filename: string } | null> {\n if (!attachment?.ref?.object_id) return null;\n\n if (this._cache.has(attachment.ref.object_id)) {\n const cached = this._cache.get(attachment.ref.object_id) as LeAttachment;\n\n return {\n data: cached.originalUrl || cached.data,\n filename: cached.filename,\n };\n }\n\n if (isAttachmentRef(attachment)) {\n return this.fetchAttachmentData(attachment);\n }\n\n return null;\n }\n\n private async fetchAttachmentData(\n attachment: any,\n ): Promise<{ data: string; filename: string } | null> {\n const response = await firstValueFrom(\n this.apiService.getObjectByAddress<any>(getAttachmentUrl(attachment), false, false),\n );\n const row = response?.rows?.[0];\n if (!row?.data) return null;\n\n return {\n data: row.data,\n filename: row.filename || attachment.filename || 'file',\n };\n }\n\n private async normalizeFileData(\n data: string,\n filename: string,\n attachment: any,\n ): Promise<LeAttachment> {\n const cleanData = clearFileData(data);\n const result: LeAttachment = {\n data: '',\n filename: filename,\n isUrl: false,\n };\n\n if (isDownloadFileString(cleanData) && isImageAttachment(attachment)) {\n // For images with download-file URLs, create preview URL with disposition_type=inline\n result.data = await firstValueFrom(this.apiService.getBlob(getPreviewUrl(cleanData)));\n result.isUrl = true;\n result.originalUrl = cleanData;\n } else if (isUrlString(cleanData)) {\n // Regular URL (not download-file) - use directly\n result.data = cleanData;\n result.originalUrl = cleanData;\n result.isUrl = true;\n } else if (isDataUrlString(cleanData)) {\n // Already a data URL\n result.data = cleanData;\n } else if (isBase64String(cleanData)) {\n // Legacy format \"base64,actualdata\" (for backward compatibility)\n result.data = `data:${attachment.mimetype ?? 'application/octet-stream'};${cleanData}`;\n } else {\n // New format: pure base64 data without prefix (like in old integration)\n result.data = `data:${attachment.mimetype ?? 'application/octet-stream'};base64,${cleanData}`;\n }\n\n return result;\n }\n\n private downloadWithAnchor(file: string, filename?: string): void {\n const anchor = document.createElement('a');\n anchor.href = file;\n anchor.download = filename || 'File';\n anchor.click();\n\n URL.revokeObjectURL(file);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n signal,\n untracked,\n} from '@angular/core';\nimport { ViewportScroller } from '@angular/common';\nimport { LeFormNode } from '@planeasyinc/le-core';\nimport {\n catchError,\n concatMap,\n filter,\n finalize,\n firstValueFrom,\n from,\n map,\n Observable,\n of,\n tap,\n} from 'rxjs';\nimport { LEApiService } from '../../services/le-api.service';\nimport { LoadingViewComponent } from '../loading-view/loading-view.component';\nimport { adaptForm } from './form.adapter';\nimport {\n createEngine,\n FeControlAction,\n FeControlConfig,\n FeForm,\n FeFormEngine,\n FeFormEngineResolvers,\n FeSection,\n} from '@planeasyinc/fe-core';\nimport { FormRendererComponent } from './form-renderer.component';\nimport { LEDataService } from '../../services/le-data.service';\nimport {\n isErrorCorrespondActionBody,\n isPlaceholder,\n mapResponseToRequestBody,\n} from './form-view.utils';\nimport { LeToast, LeToastService } from '../../services/le-toast.service';\nimport { FormViewAttachmentService } from './form-view-attachment.service';\n\ninterface ActionResponse {\n details: Record<string, string>;\n message: string;\n success: boolean;\n}\n\n@Component({\n selector: 'form-view',\n templateUrl: './form-view.component.html',\n imports: [LoadingViewComponent, FormRendererComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [FormViewAttachmentService],\n})\nexport class FormViewComponent {\n private apiService = inject(LEApiService);\n private dataService = inject(LEDataService);\n private attachmentService = inject(FormViewAttachmentService);\n private viewportScroller = inject(ViewportScroller);\n private toastService = inject(LeToastService);\n private _isLoading = signal(false);\n private _form = signal<FeForm | null>(null);\n private _sections = signal<FeSection[]>([]);\n private _topLevelControls = signal<FeControlConfig[]>([]);\n private _engine = signal<FeFormEngine | null>(null);\n private _actionHandlers: {\n [K in FeControlAction['type']]: (\n action: Extract<FeControlAction, { type: K }>,\n response?: ActionResponse | null,\n ) => Observable<null>;\n } = {\n invoke: (action) => {\n const engine = this._engine();\n let body: Record<string, any> | null = {};\n\n if (!engine) {\n return of(null);\n }\n\n if (!action.async) {\n engine.markAllTouched();\n }\n\n engine.validate();\n\n const hasError = isErrorCorrespondActionBody(action.body ?? {}, engine.status.errors);\n\n if (hasError) {\n return of(null);\n }\n\n if (action.body) {\n body = mapResponseToRequestBody(action.body, engine.values.getAll());\n }\n\n if (!action.async) {\n this._isLoading.set(true);\n }\n\n return this.dataService\n .request<ActionResponse, Record<string, any>>(action.method, action.url, body)\n .pipe(\n tap((response) => {\n if (action.onSuccess && response.ok) {\n this.processActionList(action.onSuccess, response.body);\n } else if (action.onError && !response.ok) {\n this.processActionList(action.onError);\n } else {\n this._isLoading.set(false);\n }\n }),\n map(() => null),\n catchError(() => {\n if (action.onError) {\n this.processActionList(action.onError);\n }\n return of(null);\n }),\n );\n },\n update_form: (action) => {\n const node = this.mapUpdateFormActionToFormNode(action.control_source);\n\n if (node) {\n this.dataService.setView(node);\n }\n return of(null);\n },\n update_value: (action, response) => {\n return of(action).pipe(\n filter((action) => isPlaceholder(action.value)),\n map((action) =>\n mapResponseToRequestBody({ [action.field_id]: action.value }, { response }),\n ),\n tap((result) => {\n if (result[action.field_id]) {\n this._engine()?.values.set(action.field_id, result[action.field_id]);\n }\n }),\n map(() => null),\n );\n },\n scroll_top: () => {\n this.viewportScroller.scrollToPosition([0, 0]);\n\n return of(null);\n },\n show_popup: (action) => {\n this.toastService.notify({\n ...action.item,\n type: 'success',\n } as unknown as LeToast);\n\n return of(null);\n },\n open_url: (action) => {\n window.open(action.url, '_blank');\n\n return of(null);\n },\n download: (action) => {\n this.attachmentService.download(action.payload);\n\n return of(null);\n },\n navigate_to_section: (action) => {\n this.dataService.navigateByNodeId(action.section_id);\n\n return of(null);\n },\n };\n\n node = input.required<LeFormNode>();\n\n readonly isLoading = this._isLoading.asReadonly();\n readonly data = computed(() => {\n const engine = this._engine();\n const sections = this._sections();\n const topLevelControls = this._topLevelControls();\n const customCss = this.dataService.customCss() ?? '';\n\n if (!engine || !sections) return null;\n return {\n engine,\n sections,\n customCss,\n topLevelControls,\n };\n });\n\n constructor() {\n effect(() => {\n const node = this.node();\n\n if (node) {\n this.getFormData(node).subscribe();\n }\n });\n\n effect(() => {\n const form = this._form();\n\n if (!form) return;\n\n untracked(() => {\n this.init(form);\n });\n });\n }\n\n private init(form: FeForm): void {\n this._sections.set(this.sortSections(form.sections));\n this._topLevelControls.set(form.controls ?? []);\n\n const resolvers: FeFormEngineResolvers = {\n attachment: (value) => this.attachmentService.resolve(value),\n objectLatest: (className: string) =>\n firstValueFrom(this.dataService.getObjectByClassName(className)),\n };\n\n this._engine.set(createEngine(form, {}, resolvers));\n\n // this._engine()?.on('valueChanges', (value) => {\n // console.log('Value Changes', value);\n // // this.cdr.markForCheck();\n // });\n // this._engine()?.on('fieldStateChanges', (state) => {\n // console.log('Field State Changes', state);\n // // this.cdr.markForCheck();\n // });\n\n this._engine()?.on('action', ({ action }) => {\n this.processActionList((action as { actions: FeControlAction[] }).actions);\n });\n }\n\n private processAction<K extends FeControlAction['type']>(\n action: Extract<FeControlAction, { type: K }>,\n response?: ActionResponse | null,\n ): Observable<null> {\n return this._actionHandlers[action.type](action, response);\n }\n\n private sortSections(sections: FeSection[]): FeSection[] {\n return [...sections].sort((a, b) => {\n const orderA = a.order ?? 0;\n const orderB = b.order ?? 0;\n return orderA - orderB;\n });\n }\n\n private getFormData(node: LeFormNode): Observable<null> {\n if (node.controlSource?.kind === 'transaction') {\n this._isLoading.set(true);\n\n return this.apiService\n .executeTransaction(node.controlSource.entity, node.controlSource.params ?? {})\n .pipe(\n tap((response) => {\n this._form.set(adaptForm(response));\n this._isLoading.set(false);\n }),\n map(() => null),\n catchError((error) => {\n console.error(error);\n this._isLoading.set(false);\n return of(null);\n }),\n );\n }\n\n throw new Error(`Unsupported control source kind ${node.controlSource?.kind}`);\n }\n\n private mapUpdateFormActionToFormNode(source: any): LeFormNode | null {\n if (source.dynamic_value) {\n return {\n id: source.dynamic_value.entity_name,\n type: 'form',\n controlSource: {\n kind: source.dynamic_value.type,\n entity: source.dynamic_value.entity_name,\n params: source.dynamic_value.body ?? {},\n },\n };\n }\n\n return null;\n }\n\n private processActionList(items: FeControlAction[], response?: ActionResponse | null): void {\n from(items)\n .pipe(\n concatMap((a: FeControlAction) => this.processAction(a, response)),\n finalize(() => {\n this._isLoading.set(false);\n }),\n )\n .subscribe();\n }\n}\n","<h2>{{ node()?.title }}</h2>\n\n@if (isLoading()) {\n <app-loading-view [rowCount]=\"5\"></app-loading-view>\n} @else {\n @if (data(); as data) {\n <le-form-renderer\n [engine]=\"data.engine\"\n [sections]=\"data.sections\"\n [customCss]=\"data.customCss\"\n [topLevelControls]=\"data.topLevelControls\"\n ></le-form-renderer>\n }\n}\n","import { Component, forwardRef, input } from '@angular/core';\nimport { LeSectionNode } from '@planeasyinc/le-core';\nimport { NodeComponent } from '../../components/node/node.component';\n\n@Component({\n selector: 'section-view',\n templateUrl: './section-view.component.html',\n imports: [forwardRef(() => NodeComponent)],\n})\nexport class SectionComponent {\n node = input.required<LeSectionNode>();\n}\n","@for (child of node().children; track child.id) {\n <le-node [node]=\"child\"></le-node>\n}\n","import { Component, forwardRef, input } from '@angular/core';\nimport { LeGridColNode } from '@planeasyinc/le-core';\nimport { NodeComponent } from '../../components/node/node.component';\n\n@Component({\n selector: 'grid-col-view',\n templateUrl: './grid-col-view.component.html',\n imports: [forwardRef(() => NodeComponent)],\n})\nexport class GridColViewComponent {\n node = input.required<LeGridColNode>();\n}\n","@for (child of node().children; track child.id) {\n <le-node [node]=\"child\"></le-node>\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, input } from '@angular/core';\nimport { LeNode } from '@planeasyinc/le-core';\nimport { ChartViewComponent } from '../../views/chart-view/chart-view.component';\nimport { GridComponent } from '../../views/gird-view/grid-view.component';\nimport { TableViewComponent } from '../../views/table-view/table-view.component';\nimport { FormViewComponent } from '../../views/form-view/form-view.component';\nimport { SectionComponent } from '../../views/section-view/section-view.component';\nimport { GridColViewComponent } from '../../views/gird-col-view/grid-col-view.component';\n\n@Component({\n selector: 'le-node',\n templateUrl: './node.component.html',\n imports: [\n ChartViewComponent,\n GridComponent,\n TableViewComponent,\n FormViewComponent,\n GridColViewComponent,\n forwardRef(() => SectionComponent),\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NodeComponent {\n node = input.required<LeNode>();\n}\n","@if (node(); as node) {\n @switch (node.type) {\n @case ('section') {\n <section-view [node]=\"node\"></section-view>\n }\n @case ('grid') {\n <grid-view [node]=\"node\"></grid-view>\n }\n @case ('grid_col') {\n <grid-col-view [node]=\"node\"></grid-col-view>\n }\n @case ('table') {\n <table-view [node]=\"node\"></table-view>\n }\n @case ('chart') {\n <chart-view [node]=\"node\"></chart-view>\n }\n @case ('form') {\n <form-view [node]=\"node\"></form-view>\n }\n }\n}\n","import { Component, effect, inject, computed, untracked, viewChild} from '@angular/core';\nimport { LeNode } from '@planeasyinc/le-core';\nimport { LEApiService } from '../../services/le-api.service';\nimport { LEAuthService } from '../../services/le-auth.service';\nimport { LEDataService } from '../../services/le-data.service';\nimport { SidebarComponent } from '../sidebar/sidebar.component';\nimport { NodeComponent } from '../node/node.component';\n\n@Component({\n selector: 'le-container',\n templateUrl: './container.component.html',\n imports: [SidebarComponent, NodeComponent],\n providers: [LEDataService, LEApiService],\n})\nexport class LeContainerComponent {\n private auth = inject(LEAuthService);\n private dataService = inject(LEDataService);\n private sidebar = viewChild(SidebarComponent);\n\n readonly data = computed(() => {\n const config = this.dataService.config();\n const view = this.dataService.view();\n\n if (!config || !view) return null;\n\n return {\n config,\n view,\n };\n });\n\n constructor() {\n this.setEffects();\n }\n\n onSelectionChange(view: LeNode): void {\n this.dataService.setView(view);\n }\n\n private setEffects(): void {\n effect(() => {\n const token = this.auth.token();\n const isGuest = this.auth.isGuest();\n\n if (!token && !isGuest) return;\n\n untracked(() => {\n this.dataService.requestConfig();\n });\n });\n\n effect(() => {\n const parentMenu = this.dataService.parentMenu();\n const sidebar = this.sidebar();\n\n if (!(parentMenu && sidebar)) return;\n\n untracked(() => {\n sidebar.setExpanded(parentMenu);\n });\n });\n }\n}\n","@if (data(); as data) {\n <le-sidebar\n [config]=\"data.config\"\n [view]=\"data.view\"\n (selectionChange)=\"onSelectionChange($event)\"\n >\n <le-node [node]=\"data.view\"></le-node>\n </le-sidebar>\n}\n","import { CONFIG_TOKEN } from '../tokens/config.token';\nimport { LeConfig } from '../types/le-config';\nimport { defaultConfig } from '../constants/default-config';\n\nexport const provideConfig = (config: Partial<LeConfig>) => {\n return {\n provide: CONFIG_TOKEN,\n useValue: {\n ...defaultConfig,\n ...config,\n },\n };\n};\n","import { inject } from '@angular/core';\nimport { HttpEvent, HttpHandlerFn, HttpInterceptorFn, HttpRequest } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { IS_LIBRARY_REQUEST } from '../tokens/http-context.token';\nimport { LEAuthService } from '../services/le-auth.service';\nimport { LeToastService } from '../services/le-toast.service';\n\nexport const LEAuthInterceptor: HttpInterceptorFn = (\n req: HttpRequest<unknown>,\n next: HttpHandlerFn,\n): Observable<HttpEvent<unknown>> => {\n const authService = inject(LEAuthService);\n\n if (authService.isGuest()) {\n return next(req);\n }\n\n if (req.context.get(IS_LIBRARY_REQUEST)) {\n try {\n authService.validateToken();\n\n return next(req.clone({ setHeaders: { Authorization: authService.token() as string } }));\n } catch (e: any) {\n inject(LeToastService).error(e.message);\n console.error(e);\n }\n }\n\n return next(req);\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["isPlaceholder"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"planeasyinc-le-angular.mjs","sources":["../../src/lib/tokens/http-context.token.ts","../../src/lib/constants/default-config.ts","../../src/lib/tokens/config.token.ts","../../src/lib/services/le-auth.service.ts","../../src/lib/services/le-api.service.ts","../../src/lib/services/le-data.service.ts","../../src/lib/services/le-filters.service.ts","../../src/lib/directives/le-drawer-content.directive.ts","../../src/lib/directives/le-drawer-container.directive.ts","../../src/lib/directives/le-drawer.directive.ts","../../src/lib/icons/svg/chevron.ts","../../src/lib/icons/svg/arrow-down.ts","../../src/lib/icons/svg/sort.ts","../../src/lib/icons/svg/close.ts","../../src/lib/icons/icons-map.ts","../../src/lib/icons/le-icon.component.ts","../../src/lib/components/sidebar/sidebar.component.ts","../../src/lib/components/sidebar/sidebar.component.html","../../src/lib/views/chart-view/chart-view.component.ts","../../src/lib/views/chart-view/chart-view.component.html","../../src/lib/views/gird-view/grid-view.component.ts","../../src/lib/views/gird-view/grid-view.component.html","../../src/lib/views/table-view/table-data-sourse.ts","../../src/lib/views/table-view/table-view-pagination.component.ts","../../src/lib/views/table-view/table-view-pagination.component.html","../../src/lib/views/table-view/table-view.utils.ts","../../src/lib/views/loading-view/loading-view.component.ts","../../src/lib/views/loading-view/loading-view.component.html","../../src/lib/views/table-view/table-view-actions.component.ts","../../src/lib/templates/string.template.ts","../../src/lib/templates/reference.template.ts","../../src/lib/templates/json.template.ts","../../src/lib/templates/index.ts","../../src/lib/views/table-view/table-view-cell.directive.ts","../../src/lib/views/table-view/table-view.component.ts","../../src/lib/views/table-view/table-view.component.html","../../src/lib/views/form-view/form.adapter.ts","../../src/lib/views/form-view/form-renderer.component.ts","../../src/lib/views/form-view/form-renderer.component.html","../../src/lib/views/form-view/form-view.utils.ts","../../src/lib/components/toast-list/toast-list.component.ts","../../src/lib/components/toast-list/toast-list.component.html","../../src/lib/services/le-toast.service.ts","../../src/lib/views/form-view/form-view-attachment.utils.ts","../../src/lib/views/form-view/form-view-attachment.service.ts","../../src/lib/views/form-view/form-view.component.ts","../../src/lib/views/form-view/form-view.component.html","../../src/lib/views/section-view/section-view.component.ts","../../src/lib/views/section-view/section-view.component.html","../../src/lib/views/gird-col-view/grid-col-view.component.ts","../../src/lib/views/gird-col-view/grid-col-view.component.html","../../src/lib/components/node/node.component.ts","../../src/lib/components/node/node.component.html","../../src/lib/components/filters/filters.component.ts","../../src/lib/components/filters/filters.component.html","../../src/lib/components/container/container.component.ts","../../src/lib/components/container/container.component.html","../../src/lib/providers/provideConfig.ts","../../src/lib/interceptors/le-auth.interceptor.ts","../../src/planeasyinc-le-angular.ts"],"sourcesContent":["import { HttpContextToken } from '@angular/common/http';\n\nexport const IS_LIBRARY_REQUEST = new HttpContextToken<boolean>(() => false);\n","import { LeConfig } from '../types/le-config';\n\nexport const defaultConfig: LeConfig = {\n apiUrl: '',\n messages: {\n tokenEmpty: 'No token provided',\n tokenExpired:\n 'Your session has expired for security reasons. Please log in again to continue where you left off.',\n },\n};\n","import { InjectionToken } from '@angular/core';\nimport { defaultConfig } from '../constants/default-config';\n\nexport const CONFIG_TOKEN = new InjectionToken('CONFIG', {\n factory: () => defaultConfig,\n});\n","import { inject, Injectable, signal } from '@angular/core';\nimport { decodeJwt } from '@planeasyinc/le-core';\nimport { CONFIG_TOKEN } from '../tokens/config.token';\n\nconst SECOND_IN_MS = 1000;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LEAuthService {\n private config = inject(CONFIG_TOKEN);\n private _token = signal<string | null>(null);\n private _apiUrl = signal<string>(this.config.apiUrl);\n private _isGuest = signal<boolean>(false);\n\n readonly token = this._token.asReadonly();\n readonly apiUrl = this._apiUrl.asReadonly();\n readonly isGuest = this._isGuest.asReadonly();\n\n setApiUrl(apiUrl: string): void {\n this._apiUrl.set(apiUrl);\n }\n\n setToken(token: string): void {\n this._token.set(token);\n }\n\n setGuestLogin(isGuest = true): void {\n this._isGuest.set(true);\n }\n\n validateToken(): void {\n const token = this._token();\n\n if (!token) {\n throw new Error(this.config.messages.tokenEmpty);\n }\n\n const decoded = decodeJwt<{ exp: number }>(token);\n\n if (decoded.exp * SECOND_IN_MS < Date.now()) {\n throw new Error(this.config.messages.tokenExpired);\n }\n }\n}\n","import { inject, Injectable, computed } from '@angular/core';\nimport { HttpClient, HttpContext, HttpEvent, HttpRequest } from '@angular/common/http';\nimport { map, Observable } from 'rxjs';\nimport { UrlFragmentBuilder } from '@planeasyinc/le-core';\nimport { IS_LIBRARY_REQUEST } from '../tokens/http-context.token';\nimport { LEAuthService } from './le-auth.service';\n\n@Injectable()\nexport class LEApiService {\n private http = inject(HttpClient);\n private authService = inject(LEAuthService);\n private apiUrl = computed(() => {\n return this.normalizeApiUrl(this.authService.apiUrl());\n })\n\n getConfig() {\n const url = new UrlFragmentBuilder(this.apiUrl())\n .setFragment('api/contrib/frontend-config/dashboard/config')\n .build();\n\n return this.http.get(url, { context: new HttpContext().set(IS_LIBRARY_REQUEST, true) });\n }\n\n getObject<IResponse>(className: string, query: string = ''): Observable<IResponse> {\n const url = new UrlFragmentBuilder(this.apiUrl())\n .setFragment('api/objects/')\n .setQuery(`class_name=${className}`)\n .setQuery(\n 'include_metadata=true&include_subclasses=true&load_references=false&file_optimized=true',\n )\n .setQuery(query)\n .build();\n\n return this.http.get<IResponse>(url, {\n context: new HttpContext().set(IS_LIBRARY_REQUEST, true),\n });\n }\n\n getObjectByAddress<IResponse>(\n address: string,\n includeVersions: boolean,\n includeMeta: boolean,\n ): Observable<IResponse> {\n const url = new UrlFragmentBuilder(this.apiUrl())\n .setFragment(`api/objects/${address}/`)\n .setQuery(\n `all_versions=${includeVersions}&include_metadata=${includeMeta}&load_references=false&file_optimized=true`,\n )\n .build();\n\n return this.http.get<IResponse>(url, {\n context: new HttpContext().set(IS_LIBRARY_REQUEST, true),\n });\n }\n\n executeTransaction<IResponse, IBody extends Record<string, unknown> = Record<string, unknown>>(\n name: string,\n body: IBody,\n query: string = '',\n ): Observable<IResponse> {\n const url = new UrlFragmentBuilder(this.apiUrl())\n .setFragment(`api/transactions/${name}/`)\n .setQuery(query)\n .build();\n\n return this.http.post<IResponse>(url, body ?? {}, {\n context: new HttpContext().set(IS_LIBRARY_REQUEST, true),\n });\n }\n\n request<IResponse, IBody extends object>(\n method: string,\n path: string,\n body?: IBody,\n ): Observable<HttpEvent<IResponse>> {\n const url = new UrlFragmentBuilder(this.apiUrl()).setFragment(path).build();\n const request = new HttpRequest(method, url, body, {\n responseType: 'json',\n context: new HttpContext().set(IS_LIBRARY_REQUEST, true),\n });\n\n return this.http.request<IResponse>(request);\n }\n\n getBlob(path: string): Observable<string> {\n return this.http\n .get(path, { responseType: 'blob', context: new HttpContext().set(IS_LIBRARY_REQUEST, true) })\n .pipe(map((blob) => URL.createObjectURL(blob)));\n }\n\n private normalizeApiUrl(url: string): string {\n if (url.endsWith('/')) {\n return url.slice(0, -1);\n }\n return url;\n }\n}\n","import { inject, Injectable, signal } from '@angular/core';\nimport { LeNode, normalizeConfig } from '@planeasyinc/le-core';\nimport { LEApiService } from './le-api.service';\nimport { filter, Observable } from 'rxjs';\nimport { HttpEventType, HttpResponse } from '@angular/common/http';\n\n@Injectable()\nexport class LEDataService {\n private apiService = inject(LEApiService);\n private _config = signal<LeNode | null>(null);\n private _view = signal<LeNode | null>(null);\n private _parentMenu = signal<LeNode | null>(null);\n private _customCss = signal<string | null>(null);\n\n readonly view = this._view.asReadonly();\n readonly parentMenu = this._parentMenu.asReadonly()\n readonly config = this._config.asReadonly();\n readonly customCss = this._customCss.asReadonly();\n\n setView(node: LeNode): void {\n this._view.set(node);\n }\n\n requestConfig(force?: boolean): void {\n if (this._config() && !force) {\n return;\n }\n\n this.apiService.getConfig().subscribe({\n next: (config) => {\n const normalizedConfig = normalizeConfig({ type: 'section', ...config });\n this._config.set(normalizedConfig);\n this._customCss.set((config as { custom_css: string }).custom_css);\n const initialView = this.getInitialView(normalizedConfig);\n this._view.set(initialView.node);\n this._parentMenu.set(initialView.parent);\n },\n error: (err) => {\n console.error(err);\n },\n });\n }\n\n request<IResponse, IBody extends object>(\n method: string,\n url: string,\n body?: IBody,\n ): Observable<HttpResponse<IResponse>> {\n return this.apiService\n .request<IResponse, IBody>(method, url, body)\n .pipe(filter((event) => HttpEventType.Response === event.type));\n }\n\n getObjectByClassName<IResponse>(className: string): Observable<IResponse> {\n return this.apiService.getObject<IResponse>(className);\n }\n\n navigateByNodeId(id: string): void {\n const node = this.getNodeById(id);\n\n if (node) {\n this._view.set(node);\n }\n }\n\n private getNodeById(id: string, node = this._config()): LeNode | null {\n if (node?.id) {\n if (node.id === id) {\n return node;\n }\n\n if ('children' in node) {\n for (const child of node.children) {\n const childNode = this.getNodeById(id, child);\n\n if (childNode) {\n return childNode;\n }\n }\n }\n }\n\n return null;\n }\n\n private getInitialView(node: LeNode): { node: LeNode, parent: LeNode } {\n if ('children' in node) {\n const child = node.children[0];\n\n if ('isParentMenu' in child && child.isParentMenu) {\n return this.getInitialView(child);\n } else {\n return {\n node: child,\n parent: node\n };\n }\n }\n\n throw new Error(`${node.type} is not a section`);\n }\n}\n","import { Injectable, signal } from '@angular/core';\n\ntype filterType = 'EQ' | 'NEQ' | 'GT' | 'GTE' | 'LT' | 'LTE';\n\nexport interface FilterModel {\n type: filterType;\n control: {\n key: string;\n type: string;\n label: string;\n options?: string[]\n };\n}\n\nexport interface ColumnFilterModel {\n label: string;\n name: string;\n filters: FilterModel[];\n}\n\n@Injectable()\nexport class LEFiltersService {\n private _shown = signal<boolean>(false);\n private _options = signal<ColumnFilterModel[]>([], {\n equal: (a, b) => this.isEqual(a, b),\n });\n private _selection = signal<Record<string, string>>(\n {},\n {\n equal: (a, b) => this.isEqual(a, b),\n },\n );\n\n readonly shown = this._shown.asReadonly();\n readonly options = this._options.asReadonly();\n readonly selection = this._selection.asReadonly();\n\n open(): void {\n this._shown.set(true);\n }\n\n close(): void {\n this._shown.set(false);\n }\n\n updateSelection(value: Record<string, string>): void {\n this._selection.set(this.filterValues(value));\n }\n\n setOptions(options: ColumnFilterModel[]): void {\n this._options.set(options);\n }\n\n private filterValues(value: Record<string, string>) {\n const clone = Object.assign({}, value);\n\n for (const key in clone) {\n if (!clone[key]) {\n delete clone[key];\n }\n }\n\n return clone;\n }\n\n private isEqual<T>(a: T, b: T): boolean {\n return JSON.stringify(a) === JSON.stringify(b);\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[leDrawerContent]',\n host: {\n '[class.le-drawer-content]': 'true',\n }\n})\nexport class DrawerContentDirective {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[leDrawerContainer]',\n host: {\n '[class.le-drawer-container]': 'true'\n }\n})\nexport class DrawerContainerDirective {\n}\n","import {computed, Directive, input} from '@angular/core';\n\ntype leDrawerType = 'side' | 'over';\n\nconst DRAWER_OPENED_WIDTH = 300;\nconst DRAWER_CLOSED_WIDTH = 60;\n\n@Directive({\n selector: '[leDrawer]',\n host: {\n '[class.le-drawer]': 'true',\n '[class.le-drawer--open]': 'opened()',\n '[style.width.px]': '_width()',\n '[style.position]': '_position()',\n '[style.min-height]' : '\"100%\"',\n '[style.left]': '0',\n '[style.top]': '0',\n },\n})\nexport class LeDrawerDirective {\n opened = input(false);\n width = input(DRAWER_OPENED_WIDTH);\n hideOnClose = input(false);\n type = input<leDrawerType>('side');\n\n protected _width = computed(() => {\n if (this.opened()) {\n return this.width();\n }\n\n if (this.hideOnClose()) {\n return 0;\n }\n\n return DRAWER_CLOSED_WIDTH;\n });\n\n protected _position = computed(() => {\n return this.type() === 'over' ? 'absolute' : 'relative';\n });\n}\n","export const chevron = {\n name: 'chevron',\n viewBox: '0 -960 960 960',\n content: [\n 'M504-480 320-664l56-56 240 240-240 240-56-56 184-184Z'\n ]\n}\n","export const arrowDown = {\n name: 'arrow-down',\n viewBox: '0 -960 960 960',\n content: [\n 'M480-360 280-560h400L480-360Z'\n ]\n}\n","export const sort = {\n name: 'sort',\n viewBox: '0 -960 960 960',\n content: [\n 'M120-240v-80h240v80H120Zm0-200v-80h480v80H120Zm0-200v-80h720v80H120Z'\n ]\n}\n","export const close = {\n name: 'close',\n viewBox: '0 -960 960 960',\n content: [\n 'm256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z',\n ],\n};\n","import { chevron } from \"./svg/chevron\";\nimport { arrowDown } from \"./svg/arrow-down\";\nimport { sort } from \"./svg/sort\";\nimport { close } from './svg/close';\n\nexport const ICONS_MAP = {\n chevron: chevron,\n 'arrow-down': arrowDown,\n sort: sort,\n close: close,\n} as const;\n","import {ChangeDetectionStrategy, Component, computed, input} from \"@angular/core\";\nimport { coerceNumberProperty } from '@angular/cdk/coercion'\nimport {ICONS_MAP} from \"./icons-map\";\n\n@Component({\n selector: 'le-icon',\n template: `\n @if (icon(); as icon) {\n <svg\n [attr.viewBox]=\"icon.viewBox\"\n [style.width.px]=\"icon.size\"\n [style.height.px]=\"icon.size\"\n fill=\"currentColor\"\n >\n @for (path of icon.content; track path) {\n <path [attr.d]=\"path\"></path>\n }\n </svg>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style.width.px]': 'size()',\n '[style.height.px]': 'size()',\n '[style.display]': '\"flex\"',\n }\n})\nexport class LeIconComponent {\n name = input.required<keyof typeof ICONS_MAP>();\n size = input<string | number>(24);\n\n icon = computed(() => {\n return {\n ...ICONS_MAP[this.name()],\n size: coerceNumberProperty(this.size()),\n }\n });\n}\n","import { Component, computed, inject, input, output, signal } from '@angular/core';\nimport { CdkDrag, CdkDragMove } from '@angular/cdk/drag-drop';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { distinctUntilChanged, map } from 'rxjs';\nimport { LeNode, LeSectionNode } from '@planeasyinc/le-core';\nimport { DrawerContentDirective } from '../../directives/le-drawer-content.directive';\nimport { DrawerContainerDirective } from '../../directives/le-drawer-container.directive';\nimport { LeDrawerDirective } from '../../directives/le-drawer.directive';\nimport {LeIconComponent} from \"../../icons/le-icon.component\";\n\n@Component({\n selector: 'le-sidebar',\n templateUrl: './sidebar.component.html',\n imports: [DrawerContentDirective, DrawerContainerDirective, LeDrawerDirective, CdkDrag, LeIconComponent],\n})\nexport class SidebarComponent {\n private breakpointObserver = inject(BreakpointObserver);\n\n config = input.required<LeNode>();\n view = input.required<LeNode>();\n\n selectionChange = output<LeNode>();\n\n private _expanded = signal<Set<LeNode>>(new Set());\n private _width = signal(300);\n private _isDrawerOpen = signal(true);\n private _isSmallScreen = signal(false);\n\n readonly menu = computed(() => {\n const config = this.config();\n\n return 'children' in config ? config.children : [];\n });\n readonly expanded = this._expanded.asReadonly();\n readonly width = this._width.asReadonly();\n readonly isDrawerOpen = this._isDrawerOpen.asReadonly();\n readonly isSmallScreen = this._isSmallScreen.asReadonly();\n\n constructor() {\n this.breakpointObserver\n .observe([Breakpoints.XSmall])\n .pipe(\n map((state) => state.matches),\n distinctUntilChanged(),\n takeUntilDestroyed(),\n )\n .subscribe({\n next: (matches) => {\n this._isSmallScreen.set(matches);\n this._isDrawerOpen.set(!matches);\n },\n });\n }\n\n protected isSection(item: LeNode): item is LeSectionNode {\n return item.type === 'section' && item.isParentMenu;\n }\n\n protected toggleExpanded(event: Event, item: LeNode): void {\n event.preventDefault();\n event.stopPropagation();\n\n this._expanded.update((expanded) => {\n if (expanded.has(item)) {\n expanded.delete(item);\n } else {\n expanded.add(item);\n }\n return new Set(expanded);\n });\n }\n\n setExpanded(item: LeNode): void {\n this._expanded.update((expanded) => {\n expanded.add(item);\n\n return new Set(expanded);\n });\n }\n\n onSidebarItemClick(event: Event, item: LeNode): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.selectionChange.emit(item);\n }\n\n onDrawerToggleClick(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n\n this._isDrawerOpen.update((val) => !val);\n }\n\n protected onDragMoved(event: CdkDragMove): void {\n this._width.set(event.pointerPosition.x);\n const element = event.source.element.nativeElement;\n element.style.transform = 'none';\n }\n}\n","<div leDrawerContainer>\n <aside leDrawer [opened]=\"isDrawerOpen()\" [width]=\"width()\" [hideOnClose]=\"isSmallScreen()\">\n <h3 class=\"le-sidebar-title\">\n <button\n class=\"le-sidebar-toggle\"\n (click)=\"onDrawerToggleClick($event)\"\n (keydown.enter)=\"onDrawerToggleClick($event)\"\n >\n @if (isDrawerOpen()) {\n {{ config().title }}\n }\n\n <le-icon name=\"chevron\"></le-icon>\n </button>\n </h3>\n\n @if (isDrawerOpen()) {\n <menu>\n @for (item of menu(); track item) {\n @if (isSection(item)) {\n <a\n class=\"le-menu-item\"\n tabindex=\"0\"\n [class.le-menu-item--expanded]=\"expanded().has(item)\"\n (click)=\"toggleExpanded($event, item)\"\n (keydown.enter)=\"toggleExpanded($event, item)\"\n >\n <div class=\"le-menu-title\">\n {{ item.title }}\n </div>\n\n <le-icon class=\"le-menu-chevron\" name=\"chevron\"></le-icon>\n </a>\n\n <div class=\"le-menu-group\" [class.le-menu-group--expanded]=\"expanded().has(item)\">\n @for (child of item.children; track child) {\n <a\n [tabindex]=\"expanded().has(item) ? 0 : -1\"\n class=\"le-menu-item\"\n [class.le-menu-item--selected]=\"view().id === child.id\"\n (click)=\"onSidebarItemClick($event, child)\"\n (keydown.enter)=\"onSidebarItemClick($event, child)\"\n >\n <div class=\"le-menu-title\">\n {{ child.title }}\n </div>\n </a>\n }\n </div>\n } @else {\n <a\n tabindex=\"0\"\n class=\"le-menu-item\"\n [class.le-menu-item--selected]=\"view().id === item.id\"\n (click)=\"onSidebarItemClick($event, item)\"\n (keydown.enter)=\"onSidebarItemClick($event, item)\"\n >\n <div class=\"le-menu-title\">\n {{ item.title }}\n </div>\n </a>\n }\n }\n </menu>\n\n <div class=\"le-drawer-resizer\" cdkDrag (cdkDragMoved)=\"onDragMoved($event)\">\n <span class=\"le-drag-icon\">⠿</span>\n </div>\n }\n </aside>\n\n <main leDrawerContent>\n <ng-content></ng-content>\n </main>\n</div>\n","import { Component, input } from '@angular/core';\nimport { LeChartNode } from '@planeasyinc/le-core';\n\n@Component({\n selector: 'chart-view',\n templateUrl: './chart-view.component.html',\n})\nexport class ChartViewComponent {\n node = input.required<LeChartNode>();\n}\n","<h2>{{ node()?.title }}</h2>\n","import { Component, forwardRef, input } from '@angular/core';\nimport { LeGridNode } from '@planeasyinc/le-core';\nimport { NodeComponent } from '../../components/node/node.component';\n\n@Component({\n selector: 'grid-view',\n templateUrl: './grid-view.component.html',\n imports: [forwardRef(() => NodeComponent)],\n host: {\n '[class.le-gird-view]': 'true',\n '[style.grid-template-columns]': 'node().layout.columns ?? 1',\n },\n})\nexport class GridComponent {\n node = input.required<LeGridNode>();\n}\n","@for (child of node().children; track child.id) {\n <le-node [node]=\"child\"></le-node>\n}\n","import { DataSource } from '@angular/cdk/table';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nexport class TableDataSource<IData> extends DataSource<IData> {\n private data: BehaviorSubject<IData[]>;\n\n get count(): number {\n return this.data.value.length;\n }\n\n constructor(data: IData[] = []) {\n super();\n this.data = new BehaviorSubject<IData[]>(data);\n }\n\n connect(): Observable<IData[]> {\n return this.data;\n }\n\n disconnect() {}\n}\n","import {ChangeDetectionStrategy, Component, computed, effect, input, output, signal, untracked} from '@angular/core';\nimport { PageChange } from './table-view.types';\nimport { CdkMenu, CdkMenuItem, CdkMenuTrigger } from '@angular/cdk/menu';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport {LeIconComponent} from \"../../icons/le-icon.component\";\n\n@Component({\n selector: 'table-view-pagination',\n templateUrl: './table-view-pagination.component.html',\n imports: [CdkMenuTrigger, CdkMenu, CdkMenuItem, A11yModule, LeIconComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableViewPaginationComponent {\n pageSize = input.required<number>();\n pageSizeOptions = input.required<number[]>();\n entriesCount = input.required<number>();\n\n pageChange = output<PageChange>();\n\n protected selectedPageSize = signal<number>(0);\n protected selectedPageIndex = signal<number>(0);\n\n entriesRange = computed(() => {\n const selectedPageIndex = this.selectedPageIndex();\n const pageSize = this.pageSize();\n const count = this.entriesCount();\n const rangeStart = selectedPageIndex * pageSize;\n const rangeEnd = rangeStart + pageSize;\n\n return {\n start: rangeStart,\n end: rangeEnd > count ? count : rangeEnd,\n };\n });\n\n constructor() {\n this.setEffects();\n }\n\n onPageSizeChange(option: number): void {\n this.selectedPageSize.set(option);\n }\n\n onNavigateClick(param: 'next' | 'prev'): void {\n this.selectedPageIndex.update((index) => {\n if (param === 'prev' && this.canNavigatePrev(index)) {\n return index - 1;\n }\n\n if (param === 'next' && this.canNavigateNext(index)) {\n return index + 1;\n }\n\n return index;\n });\n }\n\n canNavigatePrev(index = this.selectedPageIndex()): boolean {\n return index > 0;\n }\n\n canNavigateNext(index = this.selectedPageIndex()): boolean {\n return index < this.getLastPageIndex();\n }\n\n private setEffects(): void {\n effect(() => {\n const pageSize = this.pageSize();\n\n untracked(() => {\n this.selectedPageSize.set(pageSize);\n });\n });\n\n effect(() => {\n const pageSize = this.selectedPageSize();\n\n untracked(() => {\n const selectedPageIndex = this.selectedPageIndex();\n const pageIndex = this.getPageIndexOnPageSizeChange();\n\n if (selectedPageIndex !== pageIndex) {\n this.selectedPageIndex.set(pageIndex);\n } else {\n this.pageChange.emit({\n pageSize: pageSize,\n pageIndex: pageIndex,\n });\n }\n });\n });\n\n effect(() => {\n const index = this.selectedPageIndex();\n\n untracked(() => {\n this.pageChange.emit({\n pageSize: this.selectedPageSize(),\n pageIndex: index,\n });\n });\n });\n }\n\n /**\n * @return page index or last available page index for selected page size\n */\n private getPageIndexOnPageSizeChange(): number {\n const selectedPageIndex = this.selectedPageIndex();\n const lasPageIndex = this.getLastPageIndex();\n\n return selectedPageIndex > lasPageIndex ? lasPageIndex : selectedPageIndex;\n }\n\n /**\n * @return last available page index\n */\n private getLastPageIndex(): number {\n const count = this.entriesCount();\n\n if (count === 0) return 0;\n\n return Math.ceil(count / this.selectedPageSize()) - 1;\n }\n}\n","<div class=\"le-pagination\">\n <div class=\"le-pagination-options\">\n <span>Items per page:</span>\n\n <button [cdkMenuTriggerFor]=\"optionsMenu\" class=\"le-button\">\n {{ selectedPageSize() }}\n\n <le-icon name=\"arrow-down\"></le-icon>\n </button>\n\n <ng-template #optionsMenu>\n <div class=\"le-pagination-option-list\" cdkMenu>\n @for (option of pageSizeOptions(); track option) {\n <button cdkMenuItem class=\"le-pagination-option-item\" (click)=\"onPageSizeChange(option)\">\n {{ option }}\n </button>\n }\n </div>\n </ng-template>\n </div>\n\n <div class=\"spacer\"></div>\n\n <div class=\"le-pagination-range\">\n {{ entriesRange().start }} - {{ entriesRange().end }} of {{ entriesCount() }}\n </div>\n\n <div class=\"le-pagination-navigation\">\n <button\n class=\"le-navigation le-navigation-prev\"\n [tabindex]=\"canNavigatePrev() ? 0 : -1\"\n [disabled]=\"!canNavigatePrev()\"\n (click)=\"onNavigateClick('prev')\"\n >\n <le-icon class=\"le-chevron le-chevron--left\" name=\"chevron\"></le-icon>\n </button>\n\n <button\n class=\"le-navigation le-navigation-next\"\n [tabindex]=\"canNavigateNext() ? 0 : -1\"\n [disabled]=\"!canNavigateNext()\"\n (click)=\"onNavigateClick('next')\"\n >\n <le-icon class=\"le-chevron le-chevron--right\" name=\"chevron\"></le-icon>\n </button>\n </div>\n</div>\n","import { RequestContext, TableParams } from './table-view.types';\n\nexport const isPlaceholder = (value: string): boolean => {\n return value.startsWith('{') && value.endsWith('}');\n};\n\nexport const mapSortStringToSort = (sort: string): [key: string, 'asc' | 'desc'] => {\n return sort.startsWith('-') ? [sort.slice(1), 'desc'] : [sort, 'desc'];\n};\n\nexport const mapSortStringListToSortMap = (sortList: string[]): Map<string, 'asc' | 'desc'> => {\n return sortList.reduce((acc: Map<string, 'asc' | 'desc'>, sort) => {\n const { 0: key, 1: value } = mapSortStringToSort(sort);\n acc.set(key, value);\n return acc;\n }, new Map());\n};\n\nexport const mapSortMapToSortStringList = (sortMap: Map<string, 'asc' | 'desc'>): string[] => {\n return [...sortMap].reduce((acc: string[], sort) => {\n const prefix = sort[1] === 'asc' ? '' : '-';\n acc.push(`${prefix}${sort[0]}`);\n return acc;\n }, []);\n};\n\nexport const mapFiltersToFilterString = (filters: Record<string, string>): string => {\n return Object.entries(filters)\n .reduce((acc: string[], filter) => {\n return acc.concat(`filter[${filter[0]}]=${filter[1]}`);\n }, [])\n .join('&');\n};\n\nexport const buildRequestContext = (\n params: TableParams,\n ctx: { isSortable: boolean; hasPagination: boolean },\n): RequestContext => {\n const requestContext: RequestContext = {};\n\n if (ctx.hasPagination && params.pageIndex !== undefined) {\n requestContext['pageIndex'] = params.pageIndex;\n requestContext['pageSize'] = params.pageSize;\n }\n\n if (ctx.isSortable && params.sort) {\n requestContext['sort'] = params.sort;\n }\n\n if (params.filters && Object.keys(params.filters).length > 0) {\n requestContext['filters'] = params.filters;\n }\n\n return requestContext;\n};\n\nexport const buildRequestBody = (params: RequestContext): Record<string, any> => {\n const body: Record<string, any> = {};\n\n if (params.sort?.length) {\n body['ordering'] = params.sort;\n }\n\n if (params.filters && Object.keys(params.filters).length > 0) {\n body['filters'] = params.filters;\n }\n\n if (params.pageIndex !== undefined) {\n body['page'] = params.pageIndex + 1;\n }\n\n if (params.pageSize) {\n body['page_size'] = params.pageSize;\n }\n\n return body;\n};\n\nexport const buildQueryString = (params: RequestContext): string => {\n const query: string[] = [];\n\n if (params.pageIndex !== undefined) {\n query.push(`page=${params.pageIndex + 1}`);\n }\n\n if (params.pageSize) {\n query.push(`page_size=${params.pageSize}`);\n }\n\n if (params.sort?.length) {\n query.push(`ordering=${params.sort.join(',')}`);\n }\n\n if (params.filters && Object.keys(params.filters).length > 0) {\n query.push(mapFiltersToFilterString(params.filters));\n }\n\n return query.filter((item) => !!item).join('&');\n};\n","import { Component, computed, input } from '@angular/core';\n\n@Component({\n selector: 'app-loading-view',\n templateUrl: './loading-view.component.html',\n styles: `\n .preloader {\n display: flex;\n flex-direction: column;\n width: 100%;\n gap: 8px;\n }\n\n .preloader-row {\n background: #f5f5f5 no-repeat;\n animation: pulse 1.5s cubic-bezier(0.4, 0, 0.2, 1) infinite;\n animation-delay: 0.5s;\n }\n\n @keyframes pulse {\n 0% {\n opacity: 1;\n }\n 50% {\n opacity: 0.5;\n }\n 100% {\n opacity: 1;\n }\n }\n `,\n})\nexport class LoadingViewComponent {\n headerHeight = input<number>(0);\n rowHeight = input<number>(40);\n rowCount = input<number>(1);\n\n protected rows = computed(() => {\n return new Array(this.rowCount()).fill(null).map((_, i) => i);\n });\n}\n","<div class=\"preloader\">\n @if (headerHeight()) {\n <div class=\"preloader-row\" [style.height.px]=\"headerHeight()\"></div>\n }\n\n @for (row of rows(); track row) {\n <div class=\"preloader-row\" [style.height.px]=\"rowHeight()\"></div>\n }\n</div>\n","import { Component, input, output } from '@angular/core';\nimport { LeTableAction } from '@planeasyinc/le-core';\n\n@Component({\n selector: 'table-view-actions',\n template: `\n @for (action of actions(); track action) {\n <button\n class=\"le-button le-button-flat le-button--success\"\n (click)=\"actionClicked.emit(action)\"\n >\n {{ action.label }}\n </button>\n }\n `,\n host: {\n '[class.le-table-view-actions]': 'true',\n },\n})\nexport class TableViewActions {\n actions = input<LeTableAction[]>();\n\n actionClicked = output<LeTableAction>();\n}\n","import { Component, input } from '@angular/core';\n\n@Component({\n template: `<span class=\"le-table-template le-template-string\">{{ data() ?? '–' }}</span>`,\n})\nexport class StringTemplate {\n data = input.required<string>();\n}\n","import { Component, input } from '@angular/core';\n\n@Component({\n template: `<span class=\"le-table-template le-template-reference\"></span>`,\n})\nexport class ReferenceTemplate {\n data = input.required<unknown>();\n}\n","import { Component, input } from '@angular/core';\nimport { JsonPipe } from '@angular/common';\n\n@Component({\n template: `<pre class=\"le-table-template le-template-json\">{{\n data() ? (data() | json) : '–'\n }}</pre>`,\n imports: [JsonPipe],\n})\nexport class JSONTemplate {\n data = input.required<string>();\n}\n","import { Type } from '@angular/core';\nimport { StringTemplate } from './string.template';\nimport { ReferenceTemplate } from './reference.template';\nimport { JSONTemplate } from './json.template';\n\nconst TABLE_SELL_TEMPLATE_NAMES = {\n StringTemplate: 'StringTemplate',\n ReferenceTemplate: 'ReferenceTemplate',\n JsonTemplate: 'JsonTemplate',\n} as const;\n\nexport type TableCellTemplateType =\n (typeof TABLE_SELL_TEMPLATE_NAMES)[keyof typeof TABLE_SELL_TEMPLATE_NAMES];\n\nexport const TABLE_CELL_TEMPLATES: Record<TableCellTemplateType, Type<unknown>> = {\n StringTemplate: StringTemplate,\n ReferenceTemplate: ReferenceTemplate,\n JsonTemplate: JSONTemplate,\n};\n","import {\n ComponentRef,\n Directive,\n effect,\n inject,\n input,\n untracked,\n ViewContainerRef,\n} from '@angular/core';\nimport { TABLE_CELL_TEMPLATES, TableCellTemplateType } from '../../templates';\n\n@Directive({\n selector: '[tableViewCell]',\n})\nexport class TableViewCellDirective {\n private vcr = inject(ViewContainerRef);\n private componentRef?: ComponentRef<unknown>;\n\n readonly type = input<string>();\n readonly data = input.required<unknown>();\n\n constructor() {\n this.setEffects();\n }\n\n private setEffects(): void {\n effect(() => {\n const type = this.type() as TableCellTemplateType | undefined;\n const data = this.data();\n\n untracked(() => {\n const component =\n (type && TABLE_CELL_TEMPLATES[type]) || TABLE_CELL_TEMPLATES['StringTemplate'];\n\n if (this.componentRef) {\n this.componentRef.destroy();\n }\n\n this.componentRef = this.vcr.createComponent(component);\n\n this.componentRef?.setInput('data', data);\n });\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n signal,\n untracked,\n} from '@angular/core';\nimport {\n CdkCell,\n CdkCellDef,\n CdkColumnDef,\n CdkHeaderCell,\n CdkHeaderCellDef,\n CdkHeaderRow,\n CdkHeaderRowDef,\n CdkRow,\n CdkRowDef,\n CdkTable,\n} from '@angular/cdk/table';\nimport { Subject, takeUntil, Observable } from 'rxjs';\n\nimport { LeTableAction, LeTableNode, LeSort, LePagination, LeAction } from '@planeasyinc/le-core';\n\nimport { LEApiService } from '../../services/le-api.service';\nimport { LEDataService } from '../../services/le-data.service';\nimport { TableDataSource } from './table-data-sourse';\nimport { TableViewPaginationComponent } from './table-view-pagination.component';\nimport { PageChange, RequestContext } from './table-view.types';\nimport {\n buildQueryString,\n buildRequestBody,\n buildRequestContext,\n isPlaceholder,\n mapSortMapToSortStringList,\n mapSortStringListToSortMap,\n} from './table-view.utils';\nimport { LeDataSource } from '@planeasyinc/le-core';\nimport { LoadingViewComponent } from '../loading-view/loading-view.component';\nimport { TableViewActions } from './table-view-actions.component';\nimport { TableViewCellDirective } from './table-view-cell.directive';\nimport {LeIconComponent} from \"../../icons/le-icon.component\";\nimport { ColumnFilterModel, LEFiltersService } from '../../services/le-filters.service';\n\ninterface ColumnModel {\n type: string;\n key: string;\n label: string;\n [key: string]: any;\n}\n\ninterface CellModel {\n [key: string]: any;\n}\n\ninterface TableDataModel {\n columns: ColumnModel[];\n rows: CellModel[];\n total: number;\n}\n\n@Component({\n selector: 'table-view',\n templateUrl: './table-view.component.html',\n imports: [\n CdkTable,\n CdkColumnDef,\n CdkHeaderCell,\n CdkHeaderCellDef,\n CdkCell,\n CdkCellDef,\n CdkHeaderRowDef,\n CdkHeaderRow,\n CdkRow,\n CdkRowDef,\n TableViewPaginationComponent,\n LoadingViewComponent,\n TableViewActions,\n TableViewCellDirective,\n LeIconComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableViewComponent {\n private apiService = inject(LEApiService);\n private dataService = inject(LEDataService);\n private filtersService = inject(LEFiltersService);\n\n node = input.required<LeTableNode>();\n\n private _columns = signal<ColumnModel[]>([]);\n private _data = signal<TableDataSource<CellModel>>(new TableDataSource());\n private _total = signal(0);\n private _isLoading = signal(false);\n\n private _pageIndex = signal(0);\n private _pageSize = signal(0);\n private _pageSizeOptions = signal<number[]>([]);\n\n private _sortConfig = signal<LeSort | null>(null);\n private _sortMap = signal(new Map<string, 'asc' | 'desc'>());\n private _sortOrder = signal<Map<string, number>>(new Map());\n private _cancelRequest$ = new Subject<void>();\n\n readonly columns = this._columns.asReadonly();\n readonly data = this._data.asReadonly();\n readonly displayedColumns = computed(() => {\n return this.columns().map((column) => column.key);\n });\n readonly isLoading = this._isLoading.asReadonly();\n readonly pageIndex = this._pageIndex.asReadonly();\n readonly pageSize = this._pageSize.asReadonly();\n readonly pageSizeOptions = this._pageSizeOptions.asReadonly();\n readonly entriesCount = this._total.asReadonly();\n\n readonly sortMap = this._sortMap.asReadonly();\n readonly sortOrder = this._sortOrder.asReadonly();\n readonly isSortingEnabled = computed(() => {\n return !!this._sortConfig()?.fields.length;\n });\n readonly sortColumnKeys = computed(() => {\n return new Set(this._sortConfig()?.fields ?? []);\n });\n readonly hasRowClickAction = computed(() => {\n return !!this.node()?.actions?.onRowClick?.length;\n });\n\n readonly filters = this.filtersService.options\n\n constructor() {\n this.setEffects();\n }\n\n onPageChange(pageChange: PageChange): void {\n this._pageSize.set(pageChange.pageSize);\n this._pageIndex.set(pageChange.pageIndex);\n }\n\n onSortClick(event: Event, column: ColumnModel): void {\n event.stopPropagation();\n\n this._sortMap.update((sortMap) => {\n const direction = sortMap.get(column.key);\n if (direction === 'desc') {\n sortMap.delete(column.key);\n } else if (direction === 'asc') {\n sortMap.set(column.key, 'desc');\n } else {\n sortMap.set(column.key, 'asc');\n }\n\n return new Map(sortMap);\n });\n }\n\n onFiltersClick(event: Event): void {\n event.stopPropagation();\n\n this.filtersService.open();\n }\n\n onToolbarActionClick({ actions }: LeTableAction) {\n actions.forEach((action) => this.processTableAction(action));\n }\n\n onRowClick(row: CellModel): void {\n const actions = this.node().actions?.onRowClick ?? [];\n actions.forEach((action) => this.processTableAction(action, row));\n }\n\n private processTableAction(action: LeAction, row?: CellModel) {\n if (action.type === 'update_form') {\n const dataSource = action.dataSource as LeDataSource;\n\n this.dataService.setView({\n id: action.type,\n type: 'form',\n controlSource: {\n kind: dataSource.kind,\n entity: dataSource.entity,\n params: dataSource?.params\n ? this.interpolateRowValues(dataSource.params, row)\n : undefined,\n },\n });\n }\n }\n\n private setPagination(pagination?: LePagination): void {\n this._pageSize.set(pagination?.pageSize ?? 0);\n this._pageSizeOptions.set(pagination?.options ?? []);\n }\n\n private getTableData(node: LeTableNode, ctx: RequestContext): void {\n this._isLoading.set(true);\n this._cancelRequest$.next();\n\n this.buildRequest(node, ctx).subscribe({\n next: (response: TableDataModel) => {\n this.handleTableDataSuccessResponse(response);\n },\n error: (error) => {\n this.handleTableDataErrorResponse(error);\n },\n });\n }\n\n private buildRequest(node: LeTableNode, ctx: RequestContext): Observable<TableDataModel> {\n if (node.dataSource?.kind === 'class') {\n const query = buildQueryString(ctx);\n\n return this.apiService.getObject<TableDataModel>(node.dataSource.entity, query);\n }\n if (node.dataSource?.kind === 'transaction') {\n const body = Object.assign({}, node.dataSource.params, buildRequestBody(ctx));\n\n this.apiService.executeTransaction<TableDataModel>(node.dataSource.entity, body);\n }\n\n throw new Error(\n `Datasource type should be class or transaction. Received: ${node.dataSource?.kind}`,\n );\n }\n\n private handleTableDataSuccessResponse(response: TableDataModel): void {\n this._columns.set(response.columns);\n this._data.set(new TableDataSource(response.rows));\n this._total.set(response.total ?? response.rows.length);\n this._isLoading.set(false);\n this.filtersService.setOptions(this.getFilters(response.columns));\n }\n\n private handleTableDataErrorResponse(error: unknown): void {\n console.error(error);\n this._columns.set([]);\n this._data.set(new TableDataSource());\n this._total.set(0);\n this._isLoading.set(false);\n // this.filtersService.setOptions(this.getFilters([]));\n }\n\n private getFilters(columns: ColumnModel[]): ColumnFilterModel[] {\n return columns.reduce((acc: ColumnFilterModel[], column) => {\n if (column.filters) {\n acc.push(column.filters);\n }\n return acc;\n }, []);\n }\n\n private interpolateRowValues(body: Record<string, unknown>, row: CellModel = {}) {\n const result: Record<string, any> = {};\n\n Object.entries(body).forEach(([key, value]: [string, unknown]) => {\n if (typeof value === 'string' && isPlaceholder(value)) {\n const valueKey = value.replace(/\\{row\\.(\\w+)\\}/g, '$1');\n\n if (row[valueKey]) {\n result[key] = row[valueKey];\n }\n } else {\n result[key] = value;\n }\n });\n\n return result;\n }\n\n private setEffects(): void {\n effect(() => {\n const node = this.node();\n\n untracked(() => {\n this.filtersService.updateSelection({});\n this.filtersService.setOptions([]);\n this.setPagination(node.ui?.pagination);\n this._sortConfig.set(node?.ui?.sort ?? null);\n this._sortMap.set(mapSortStringListToSortMap(node?.ui?.sort?.default ?? []));\n })\n });\n\n effect(() => {\n const node = this.node();\n const pageSize = this.pageSize();\n const pageIndex = this.pageIndex();\n const sort = this._sortMap();\n const filters = this.filtersService.selection();\n\n untracked(() => {\n if (node?.dataSource) {\n const ctx = buildRequestContext(\n {\n pageSize,\n pageIndex,\n sort: mapSortMapToSortStringList(sort),\n filters,\n },\n {\n isSortable: this.isSortingEnabled(),\n hasPagination: !!this.pageSize(),\n },\n );\n\n this.getTableData(node, ctx);\n }\n });\n });\n\n effect(() => {\n const sortMap = this._sortMap();\n\n untracked(() => {\n this._sortOrder.update(() => {\n return [...sortMap].reduce((acc: Map<string, number>, item, index) => {\n return acc.set(item[0], index + 1);\n }, new Map());\n });\n });\n });\n }\n}\n","<div class=\"le-toolbar\">\n @if (node(); as node) {\n <h2>{{ node?.title }}</h2>\n\n\n <span class=\"spacer\"></span>\n\n @if (filters().length) {\n <button class=\"le-button\" (click)=\"onFiltersClick($event)\">Filters</button>\n }\n\n @if (node.actions?.tableActions) {\n <table-view-actions\n [actions]=\"node.actions!.tableActions\"\n (actionClicked)=\"onToolbarActionClick($event)\"\n ></table-view-actions>\n }\n }\n</div>\n\n@if (pageSize()) {\n <table-view-pagination\n [pageSize]=\"pageSize()\"\n [pageSizeOptions]=\"pageSizeOptions()\"\n [entriesCount]=\"entriesCount()\"\n (pageChange)=\"onPageChange($event)\"\n ></table-view-pagination>\n}\n\n<div class=\"le-table-container\">\n @if (displayedColumns().length) {\n <table cdk-table [dataSource]=\"data()\" class=\"le-table\" [class.le-table--loading]=\"isLoading()\">\n @for (column of columns(); track column) {\n <ng-container [cdkColumnDef]=\"column.key\">\n <th\n class=\"le-table-header-cell\"\n cdk-header-cell\n *cdkHeaderCellDef\n [tabindex]=\"sortColumnKeys().has(column.key) ? 0 : -1\"\n [class.le-table-header-cell--sortable]=\"sortColumnKeys().has(column.key)\"\n (click)=\"sortColumnKeys().has(column.key) && onSortClick($event, column)\"\n >\n <div class=\"le-cell-content\">\n <ng-template\n tableViewCell\n [data]=\"column.label\"\n [type]=\"column.column_format?.headerTemplate\"\n ></ng-template>\n\n @if (sortColumnKeys().has(column.key)) {\n <div class=\"le-sort-container\">\n @if (sortMap().has(column.key)) {\n <div class=\"le-sort-icon\">\n <i\n class=\"le-sort-arrow\"\n [class.le-sort-arrow--asc]=\"sortMap().get(column.key) === 'asc'\"\n [class.le-sort-arrow--desc]=\"sortMap().get(column.key) === 'desc'\"\n ></i>\n </div>\n\n <div class=\"le-sort-order\">\n @if (sortOrder().has(column.key)) {\n <span>\n {{ sortOrder().get(column.key) }}\n </span>\n }\n </div>\n } @else {\n<!-- <div class=\"le-sort-icon le-sort-icon--unfold\">-->\n<!-- <span>⇅</span>-->\n<!-- </div>-->\n\n <le-icon name=\"sort\" class=\"le-sort-icon le-sort-icon--unfold\"></le-icon>\n }\n </div>\n }\n </div>\n </th>\n\n <td class=\"le-table-cell\" cdk-cell *cdkCellDef=\"let row\">\n <ng-template\n tableViewCell\n [data]=\"row[column.key]\"\n [type]=\"column.column_format?.cellTemplate\"\n ></ng-template>\n </td>\n </ng-container>\n }\n\n <tr cdk-header-row class=\"le-header-row\" *cdkHeaderRowDef=\"displayedColumns()\"></tr>\n <tr\n cdk-row\n class=\"le-table-row\"\n [tabindex]=\"0\"\n [class.le-table-row--clickable]=\"hasRowClickAction()\"\n *cdkRowDef=\"let row; columns: displayedColumns()\"\n (click)=\"onRowClick(row)\"\n ></tr>\n </table>\n }\n</div>\n\n@if (data().count === 0) {\n @if (isLoading()) {\n <app-loading-view [headerHeight]=\"65\" [rowCount]=\"pageSize() || 10\"></app-loading-view>\n } @else {\n <div class=\"no-entities\">\n <span>No Entities</span>\n </div>\n }\n}\n","import { adaptOld } from '@planeasyinc/fe-adapters-old';\nimport { adaptSections } from '@planeasyinc/fe-adapters-sections';\nimport type { FeForm } from '@planeasyinc/fe-core';\n\ninterface SectionsSchemaLike {\n control?: {\n type?: string;\n sections?: unknown;\n };\n meta?: {\n sections?: unknown;\n };\n sections?: unknown;\n}\n\nconst isSectionsSchema = (raw: unknown): raw is SectionsSchemaLike => {\n if (!raw || typeof raw !== 'object') return false;\n\n const r = raw as SectionsSchemaLike;\n\n return Boolean(\n r.sections || // direct sections array\n r.control?.type === 'sections' || // control.type === 'sections'\n r.control?.sections || // control.sections\n r.meta?.sections, // meta.sections\n );\n};\n\nexport const adaptForm = (raw: unknown): FeForm => {\n if (isSectionsSchema(raw)) {\n return adaptSections(raw);\n }\n\n return adaptOld(raw);\n};\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n input,\n Renderer2,\n} from '@angular/core';\nimport { FeFormEngine, FeSection, FeControlConfig } from '@planeasyinc/fe-core';\nimport { FeFieldHost } from '@planeasyinc/fe-angular';\n\n@Component({\n selector: 'le-form-renderer',\n templateUrl: './form-renderer.component.html',\n imports: [FeFieldHost],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormRendererComponent {\n private renderer = inject(Renderer2);\n private ref = inject(ElementRef);\n private destroyRef = inject(DestroyRef);\n private styleRef: HTMLStyleElement = this.renderer.createElement('style');\n\n engine = input.required<FeFormEngine>();\n sections = input.required<FeSection[]>();\n topLevelControls = input<FeControlConfig[]>([]);\n customCss = input<string>();\n\n constructor() {\n this.renderer.appendChild(this.ref.nativeElement, this.styleRef);\n\n this.destroyRef.onDestroy(() => {\n this.renderer.removeChild(this.ref.nativeElement, this.styleRef);\n });\n\n effect(() => {\n this.styleRef.textContent = this.customCss() ?? '';\n });\n }\n}\n","<div class=\"le-form-container\">\n @for (section of sections(); track section.id) {\n <section class=\"le-section\">\n <div class=\"le-section-title\">\n @if (section.label) {\n <h3>{{ section.label }}</h3>\n }\n </div>\n\n <div class=\"le-section-controls\">\n @for (control of section.controls; track control) {\n <fe-field [engine]=\"engine()\" [control]=\"control\"></fe-field>\n }\n </div>\n </section>\n }\n\n @if (topLevelControls()?.length) {\n <section class=\"le-top-level-controls\">\n @for (control of topLevelControls(); track control) {\n <fe-field [engine]=\"engine()\" [control]=\"control\"></fe-field>\n }\n </section>\n }\n</div>\n","/**\n * Handle placeholders in onSuccess callback.\n */\n\nexport const isPlaceholder = (value: unknown): boolean => {\n return typeof value === 'string' && value.startsWith('{') && value.endsWith('}');\n};\n\n/**\n * @param value \"{email_verification_code_field}\"\n * @returns \"email_verification_code_field\"\n */\nexport const getPlaceholderValue = (value: string): string => {\n return value.slice(1, -1);\n};\n\n/**\n * @param body {\"email_verification_code\": \"{email_verification_code_field}\"}\n * @returns [\"email_verification_code_field\"]\n */\nexport const mapActionBodyToFieldsArray = (body: Record<string, string>): string[] => {\n const result: string[] = [];\n\n for (const placeholder of Object.values(body)) {\n if (isPlaceholder(placeholder)) {\n result.push(getPlaceholderValue(placeholder));\n }\n }\n\n return result;\n};\n\n/**\n * @param body {\"email_verification_code\": \"{email_verification_code_field}\"}\n * @param errors {\"email_verification_code\": \"Invalid email verification code\"}\n * @returns true if body fields have errors\n */\nexport const isErrorCorrespondActionBody = (\n body: Record<string, string>,\n errors: Record<string, any>,\n): boolean => {\n const bodyFields = mapActionBodyToFieldsArray(body);\n\n return bodyFields.some((field) => errors[field] !== undefined);\n};\n\nconst getValueByPath = (obj: Record<string, any> = {}, path: string): any => {\n if (path.includes('.')) {\n return path.split('.').reduce((acc, key) => acc && acc[key], obj);\n }\n return obj[path];\n};\n\nexport const mapResponseToRequestBody = (\n bodyModel: Record<string, string> = {},\n values: Record<string, any> = {},\n) => {\n const result: Record<string, any> = {};\n\n for (const [key, placeholder] of Object.entries(bodyModel)) {\n if (isPlaceholder(placeholder)) {\n const path = getPlaceholderValue(placeholder);\n const value = getValueByPath(values, path);\n\n if (value !== null && value !== undefined && value !== '') {\n result[key] = value;\n } else {\n result[key] = null;\n }\n } else {\n result[key] = placeholder;\n }\n }\n\n return result;\n};\n","import { Component, inject } from '@angular/core';\nimport { LeToastButtonControl, LeToastService } from '../../services/le-toast.service';\n\n@Component({\n templateUrl: './toast-list.component.html',\n})\nexport class ToastListComponent {\n private toastService = inject(LeToastService);\n\n readonly toasts = this.toastService.toasts;\n\n onButtonClick(actions: LeToastButtonControl['actions']): void {\n actions.forEach((action) => this.toastService.processAction(action));\n }\n}\n","@if (toasts().length) {\n <div class=\"le-toast-list\">\n @for (toast of toasts(); track toast.id) {\n <div\n class=\"le-toast\"\n [class.le-toast--success]=\"toast.type === 'success'\"\n [class.le-toast--info]=\"toast.type === 'info'\"\n [class.le-toast--warning]=\"toast.type === 'warning'\"\n [class.le-toast--error]=\"toast.type === 'error'\"\n >\n <div class=\"le-toast-text-list\">\n @for (control of toast.controls; track control) {\n @if (control.type === 'text') {\n <p class=\"le-toast-text\">\n {{ control.value }}\n </p>\n }\n }\n </div>\n\n <div class=\"le-toast-button-list\">\n @for (control of toast.controls; track control) {\n @if (control.type === 'button') {\n <button\n class=\"le-button le-button-stroked\"\n [class.le-button--success]=\"toast.type === 'success'\"\n [class.le-button--info]=\"toast.type === 'info'\"\n [class.le-button--warning]=\"toast.type === 'warning'\"\n [class.le-button--error]=\"toast.type === 'error'\"\n (click)=\"onButtonClick(control.actions)\"\n >\n {{ control.label }}\n </button>\n }\n }\n </div>\n </div>\n }\n </div>\n}\n","import { effect, inject, Injectable, signal } from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ToastListComponent } from '../components/toast-list/toast-list.component';\n\nexport interface LeToastButtonControl {\n type: 'button';\n label: string;\n actions: Array<{ type: string; target: string }>;\n}\n\nexport interface LeToastTextControl {\n type: 'text';\n value: string;\n}\n\ntype LeToastType = 'success' | 'error' | 'info' | 'warning';\n\nexport interface LeToast {\n id: string;\n type: LeToastType;\n controls: Array<LeToastTextControl | LeToastButtonControl>;\n}\n\nlet ID = 100_000_000;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LeToastService {\n private overlayRef?: OverlayRef;\n private overlay = inject(Overlay);\n private _toasts = signal<LeToast[]>([]);\n\n readonly toasts = this._toasts.asReadonly();\n\n constructor() {\n effect(() => {\n const toasts = this._toasts();\n\n if (toasts.length > 0) {\n this.show();\n } else {\n this.hide();\n }\n });\n }\n\n notify(toast: LeToast): void {\n this._toasts.update((toasts) => [...toasts, toast]);\n }\n\n warn(...messages: string[]): void {\n this.notify(this.buildToast('warning', messages));\n }\n\n info(...messages: string[]): void {\n this.notify(this.buildToast('info', messages));\n }\n\n success(...messages: string[]): void {\n this.notify(this.buildToast('success', messages));\n }\n\n error(...messages: string[]): void {\n this.notify(this.buildToast('error', messages));\n }\n\n remove(id: string): void {\n this._toasts.update((toasts) => toasts.filter((toast) => toast.id !== id));\n }\n\n processAction(action: LeToastButtonControl['actions'][0]): void {\n if (action.type === 'close_popup') {\n this.remove(action.target);\n }\n }\n\n private show(): void {\n if (this.overlayRef) return;\n\n this.overlayRef = this.overlay.create({\n positionStrategy: this.overlay.position().global().right().top(),\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n });\n\n this.overlayRef.attach(new ComponentPortal(ToastListComponent));\n }\n\n private hide(): void {\n this.overlayRef?.dispose();\n this.overlayRef = undefined;\n }\n\n private buildToast(type: LeToastType, messages: string[]): LeToast {\n const id = `${type}_${ID++}`;\n\n const textControls: LeToastTextControl[] = messages.map((message) => ({\n type: 'text',\n value: message,\n }));\n const buttonControl: LeToastButtonControl = {\n type: 'button',\n label: 'Ok',\n actions: [{ type: 'close_popup', target: id }],\n };\n\n return {\n id,\n type,\n controls: [...textControls, buttonControl],\n };\n }\n}\n","/**\n * Add or update URL parameter\n */\nconst addUrlParameter = (url: string, paramName: string, paramValue: string): string => {\n try {\n const urlObj = new URL(url);\n urlObj.searchParams.set(paramName, paramValue);\n return urlObj.toString();\n } catch {\n // If URL parsing fails, try simple string manipulation\n const separator = url.includes('?') ? '&' : '?';\n return `${url}${separator}${paramName}=${encodeURIComponent(paramValue)}`;\n }\n};\n/**\n * Get preview URL for image (with disposition_type=inline)\n */\nexport const getPreviewUrl = (downloadUrl: string): string => {\n return addUrlParameter(downloadUrl, 'disposition_type', 'inline');\n};\n/**\n * Clear file data from 'unsafe:' prefix\n */\nexport const clearFileData = (data: string) => {\n return data.startsWith('unsafe:') ? data.substring(7) : data;\n};\n/**\n * If attachment is an image\n */\nexport const isImageAttachment = (attachment: any): boolean => {\n return !!(attachment.mimetype && attachment.mimetype.toLowerCase().includes('image'));\n};\n\nexport const isDownloadFileString = (str: string): boolean => {\n return isUrlString(str) && str.includes('/download-file/');\n};\n\nexport const isUrlString = (str: string): boolean => {\n return str.startsWith('http://') || str.startsWith('https://');\n};\n\nexport const isBase64String = (str: string): boolean => {\n return str.startsWith('base64,');\n};\n\nexport const isDataUrlString = (str: string): boolean => {\n return str.startsWith('data:');\n};\n/**\n * Is attachment reference\n */\nexport const isAttachmentRef = (attachment: any): boolean => {\n return (\n !!attachment.ref &&\n !!attachment.ref.resource &&\n !!attachment.ref.class_name &&\n !!attachment.ref.object_id &&\n !!attachment.ref.object_version\n );\n};\n/**\n * Get attachment url\n */\nexport const getAttachmentUrl = (attachment: any): string => {\n return `${attachment.ref.resource}%23${attachment.ref.class_name}%3A${attachment.ref.class_version}%3A${attachment.ref.object_id}%3A${attachment.ref.object_version}`;\n};\n","import { inject, Injectable } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport { LEApiService } from '../../services/le-api.service';\nimport {\n clearFileData,\n getAttachmentUrl,\n getPreviewUrl,\n isAttachmentRef,\n isBase64String,\n isDataUrlString,\n isDownloadFileString,\n isImageAttachment,\n isUrlString,\n} from './form-view-attachment.utils';\n\ninterface LeAttachment {\n data: string;\n filename: string;\n originalUrl?: string;\n isUrl: boolean;\n}\n\n@Injectable()\nexport class FormViewAttachmentService {\n private apiService = inject(LEApiService);\n private _cache = new Map<string, LeAttachment>();\n\n async resolve(attachment: any): Promise<string> {\n if (!attachment.ref) return '';\n\n const objectId = attachment.ref.object_id;\n\n if (!this._cache.has(objectId)) {\n const fileInfo = await this.fetchAttachmentData(attachment);\n\n if (typeof fileInfo?.data === 'string') {\n const normalized = await this.normalizeFileData(\n fileInfo.data,\n fileInfo.filename,\n attachment,\n );\n\n this._cache.set(objectId, normalized);\n }\n }\n\n return this._cache.get(objectId)?.data ?? '';\n }\n\n async download(attachment: any): Promise<void> {\n const fileInfo = await this.resolveAttachmentData(attachment);\n\n if (!fileInfo) return;\n\n const file = await firstValueFrom(this.apiService.getBlob(fileInfo.data));\n\n this.downloadWithAnchor(file, fileInfo.filename);\n }\n\n private async resolveAttachmentData(\n attachment: any,\n ): Promise<{ data: string; filename: string } | null> {\n if (!attachment?.ref?.object_id) return null;\n\n if (this._cache.has(attachment.ref.object_id)) {\n const cached = this._cache.get(attachment.ref.object_id) as LeAttachment;\n\n return {\n data: cached.originalUrl || cached.data,\n filename: cached.filename,\n };\n }\n\n if (isAttachmentRef(attachment)) {\n return this.fetchAttachmentData(attachment);\n }\n\n return null;\n }\n\n private async fetchAttachmentData(\n attachment: any,\n ): Promise<{ data: string; filename: string } | null> {\n const response = await firstValueFrom(\n this.apiService.getObjectByAddress<any>(getAttachmentUrl(attachment), false, false),\n );\n const row = response?.rows?.[0];\n if (!row?.data) return null;\n\n return {\n data: row.data,\n filename: row.filename || attachment.filename || 'file',\n };\n }\n\n private async normalizeFileData(\n data: string,\n filename: string,\n attachment: any,\n ): Promise<LeAttachment> {\n const cleanData = clearFileData(data);\n const result: LeAttachment = {\n data: '',\n filename: filename,\n isUrl: false,\n };\n\n if (isDownloadFileString(cleanData) && isImageAttachment(attachment)) {\n // For images with download-file URLs, create preview URL with disposition_type=inline\n result.data = await firstValueFrom(this.apiService.getBlob(getPreviewUrl(cleanData)));\n result.isUrl = true;\n result.originalUrl = cleanData;\n } else if (isUrlString(cleanData)) {\n // Regular URL (not download-file) - use directly\n result.data = cleanData;\n result.originalUrl = cleanData;\n result.isUrl = true;\n } else if (isDataUrlString(cleanData)) {\n // Already a data URL\n result.data = cleanData;\n } else if (isBase64String(cleanData)) {\n // Legacy format \"base64,actualdata\" (for backward compatibility)\n result.data = `data:${attachment.mimetype ?? 'application/octet-stream'};${cleanData}`;\n } else {\n // New format: pure base64 data without prefix (like in old integration)\n result.data = `data:${attachment.mimetype ?? 'application/octet-stream'};base64,${cleanData}`;\n }\n\n return result;\n }\n\n private downloadWithAnchor(file: string, filename?: string): void {\n const anchor = document.createElement('a');\n anchor.href = file;\n anchor.download = filename || 'File';\n anchor.click();\n\n URL.revokeObjectURL(file);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n signal,\n untracked,\n} from '@angular/core';\nimport { ViewportScroller } from '@angular/common';\nimport { LeFormNode } from '@planeasyinc/le-core';\nimport {\n catchError,\n concatMap,\n filter,\n finalize,\n firstValueFrom,\n from,\n map,\n Observable,\n of,\n tap,\n} from 'rxjs';\nimport { LEApiService } from '../../services/le-api.service';\nimport { LoadingViewComponent } from '../loading-view/loading-view.component';\nimport { adaptForm } from './form.adapter';\nimport {\n createEngine,\n FeControlAction,\n FeControlConfig,\n FeForm,\n FeFormEngine,\n FeFormEngineResolvers,\n FeSection,\n} from '@planeasyinc/fe-core';\nimport { FormRendererComponent } from './form-renderer.component';\nimport { LEDataService } from '../../services/le-data.service';\nimport {\n isErrorCorrespondActionBody,\n isPlaceholder,\n mapResponseToRequestBody,\n} from './form-view.utils';\nimport { LeToast, LeToastService } from '../../services/le-toast.service';\nimport { FormViewAttachmentService } from './form-view-attachment.service';\n\ninterface ActionResponse {\n details: Record<string, string>;\n message: string;\n success: boolean;\n}\n\n@Component({\n selector: 'form-view',\n templateUrl: './form-view.component.html',\n imports: [LoadingViewComponent, FormRendererComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [FormViewAttachmentService],\n})\nexport class FormViewComponent {\n private apiService = inject(LEApiService);\n private dataService = inject(LEDataService);\n private attachmentService = inject(FormViewAttachmentService);\n private viewportScroller = inject(ViewportScroller);\n private toastService = inject(LeToastService);\n private _isLoading = signal(false);\n private _form = signal<FeForm | null>(null);\n private _sections = signal<FeSection[]>([]);\n private _topLevelControls = signal<FeControlConfig[]>([]);\n private _engine = signal<FeFormEngine | null>(null);\n private _actionHandlers: {\n [K in FeControlAction['type']]: (\n action: Extract<FeControlAction, { type: K }>,\n response?: ActionResponse | null,\n ) => Observable<null>;\n } = {\n invoke: (action) => {\n const engine = this._engine();\n let body: Record<string, any> | null = {};\n\n if (!engine) {\n return of(null);\n }\n\n if (!action.async) {\n engine.markAllTouched();\n }\n\n engine.validate();\n\n const hasError = isErrorCorrespondActionBody(action.body ?? {}, engine.status.errors);\n\n if (hasError) {\n return of(null);\n }\n\n if (action.body) {\n body = mapResponseToRequestBody(action.body, engine.values.getAll());\n }\n\n if (!action.async) {\n this._isLoading.set(true);\n }\n\n return this.dataService\n .request<ActionResponse, Record<string, any>>(action.method, action.url, body)\n .pipe(\n tap((response) => {\n if (action.onSuccess && response.ok) {\n this.processActionList(action.onSuccess, response.body);\n } else if (action.onError && !response.ok) {\n this.processActionList(action.onError);\n } else {\n this._isLoading.set(false);\n }\n }),\n map(() => null),\n catchError(() => {\n if (action.onError) {\n this.processActionList(action.onError);\n }\n return of(null);\n }),\n );\n },\n update_form: (action) => {\n const node = this.mapUpdateFormActionToFormNode(action.control_source);\n\n if (node) {\n this.dataService.setView(node);\n }\n return of(null);\n },\n update_value: (action, response) => {\n return of(action).pipe(\n filter((action) => isPlaceholder(action.value)),\n map((action) =>\n mapResponseToRequestBody({ [action.field_id]: action.value }, { response }),\n ),\n tap((result) => {\n if (result[action.field_id]) {\n this._engine()?.values.set(action.field_id, result[action.field_id]);\n }\n }),\n map(() => null),\n );\n },\n scroll_top: () => {\n this.viewportScroller.scrollToPosition([0, 0]);\n\n return of(null);\n },\n show_popup: (action) => {\n this.toastService.notify({\n ...action.item,\n type: 'success',\n } as unknown as LeToast);\n\n return of(null);\n },\n open_url: (action) => {\n window.open(action.url, '_blank');\n\n return of(null);\n },\n download: (action) => {\n this.attachmentService.download(action.payload);\n\n return of(null);\n },\n navigate_to_section: (action) => {\n this.dataService.navigateByNodeId(action.section_id);\n\n return of(null);\n },\n };\n\n node = input.required<LeFormNode>();\n\n readonly isLoading = this._isLoading.asReadonly();\n readonly data = computed(() => {\n const engine = this._engine();\n const sections = this._sections();\n const topLevelControls = this._topLevelControls();\n const customCss = this.dataService.customCss() ?? '';\n\n if (!engine || !sections) return null;\n return {\n engine,\n sections,\n customCss,\n topLevelControls,\n };\n });\n\n constructor() {\n effect(() => {\n const node = this.node();\n\n if (node) {\n this.getFormData(node).subscribe();\n }\n });\n\n effect(() => {\n const form = this._form();\n\n if (!form) return;\n\n untracked(() => {\n this.init(form);\n });\n });\n }\n\n private init(form: FeForm): void {\n this._sections.set(this.sortSections(form.sections));\n this._topLevelControls.set(form.controls ?? []);\n\n const resolvers: FeFormEngineResolvers = {\n attachment: (value) => this.attachmentService.resolve(value),\n objectLatest: (className: string) =>\n firstValueFrom(this.dataService.getObjectByClassName(className)),\n };\n\n this._engine.set(createEngine(form, {}, resolvers));\n\n // this._engine()?.on('valueChanges', (value) => {\n // console.log('Value Changes', value);\n // // this.cdr.markForCheck();\n // });\n // this._engine()?.on('fieldStateChanges', (state) => {\n // console.log('Field State Changes', state);\n // // this.cdr.markForCheck();\n // });\n\n this._engine()?.on('action', ({ action }) => {\n this.processActionList((action as { actions: FeControlAction[] }).actions);\n });\n }\n\n private processAction<K extends FeControlAction['type']>(\n action: Extract<FeControlAction, { type: K }>,\n response?: ActionResponse | null,\n ): Observable<null> {\n return this._actionHandlers[action.type](action, response);\n }\n\n private sortSections(sections: FeSection[]): FeSection[] {\n return [...sections].sort((a, b) => {\n const orderA = a.order ?? 0;\n const orderB = b.order ?? 0;\n return orderA - orderB;\n });\n }\n\n private getFormData(node: LeFormNode): Observable<null> {\n if (node.controlSource?.kind === 'transaction') {\n this._isLoading.set(true);\n\n return this.apiService\n .executeTransaction(node.controlSource.entity, node.controlSource.params ?? {})\n .pipe(\n tap((response) => {\n this._form.set(adaptForm(response));\n this._isLoading.set(false);\n }),\n map(() => null),\n catchError((error) => {\n console.error(error);\n this._isLoading.set(false);\n return of(null);\n }),\n );\n }\n\n throw new Error(`Unsupported control source kind ${node.controlSource?.kind}`);\n }\n\n private mapUpdateFormActionToFormNode(source: any): LeFormNode | null {\n if (source.dynamic_value) {\n return {\n id: source.dynamic_value.entity_name,\n type: 'form',\n controlSource: {\n kind: source.dynamic_value.type,\n entity: source.dynamic_value.entity_name,\n params: source.dynamic_value.body ?? {},\n },\n };\n }\n\n return null;\n }\n\n private processActionList(items: FeControlAction[], response?: ActionResponse | null): void {\n from(items)\n .pipe(\n concatMap((a: FeControlAction) => this.processAction(a, response)),\n finalize(() => {\n this._isLoading.set(false);\n }),\n )\n .subscribe();\n }\n}\n","<h2>{{ node()?.title }}</h2>\n\n@if (isLoading()) {\n <app-loading-view [rowCount]=\"5\"></app-loading-view>\n} @else {\n @if (data(); as data) {\n <le-form-renderer\n [engine]=\"data.engine\"\n [sections]=\"data.sections\"\n [customCss]=\"data.customCss\"\n [topLevelControls]=\"data.topLevelControls\"\n ></le-form-renderer>\n }\n}\n","import { Component, forwardRef, input } from '@angular/core';\nimport { LeSectionNode } from '@planeasyinc/le-core';\nimport { NodeComponent } from '../../components/node/node.component';\n\n@Component({\n selector: 'section-view',\n templateUrl: './section-view.component.html',\n imports: [forwardRef(() => NodeComponent)],\n})\nexport class SectionComponent {\n node = input.required<LeSectionNode>();\n}\n","@for (child of node().children; track child.id) {\n <le-node [node]=\"child\"></le-node>\n}\n","import { Component, forwardRef, input } from '@angular/core';\nimport { LeGridColNode } from '@planeasyinc/le-core';\nimport { NodeComponent } from '../../components/node/node.component';\n\n@Component({\n selector: 'grid-col-view',\n templateUrl: './grid-col-view.component.html',\n imports: [forwardRef(() => NodeComponent)],\n})\nexport class GridColViewComponent {\n node = input.required<LeGridColNode>();\n}\n","@for (child of node().children; track child.id) {\n <le-node [node]=\"child\"></le-node>\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, input } from '@angular/core';\nimport { LeNode } from '@planeasyinc/le-core';\nimport { ChartViewComponent } from '../../views/chart-view/chart-view.component';\nimport { GridComponent } from '../../views/gird-view/grid-view.component';\nimport { TableViewComponent } from '../../views/table-view/table-view.component';\nimport { FormViewComponent } from '../../views/form-view/form-view.component';\nimport { SectionComponent } from '../../views/section-view/section-view.component';\nimport { GridColViewComponent } from '../../views/gird-col-view/grid-col-view.component';\n\n@Component({\n selector: 'le-node',\n templateUrl: './node.component.html',\n imports: [\n ChartViewComponent,\n GridComponent,\n TableViewComponent,\n FormViewComponent,\n GridColViewComponent,\n forwardRef(() => SectionComponent),\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NodeComponent {\n node = input.required<LeNode>();\n}\n","@if (node(); as node) {\n @switch (node.type) {\n @case ('section') {\n <section-view [node]=\"node\"></section-view>\n }\n @case ('grid') {\n <grid-view [node]=\"node\"></grid-view>\n }\n @case ('grid_col') {\n <grid-col-view [node]=\"node\"></grid-col-view>\n }\n @case ('table') {\n <table-view [node]=\"node\"></table-view>\n }\n @case ('chart') {\n <chart-view [node]=\"node\"></chart-view>\n }\n @case ('form') {\n <form-view [node]=\"node\"></form-view>\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n effect,\n ElementRef,\n inject,\n OnDestroy,\n OnInit,\n signal,\n TemplateRef,\n untracked,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { fromEvent, map, startWith, Subject, takeUntil } from 'rxjs';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { DrawerContainerDirective } from '../../directives/le-drawer-container.directive';\nimport { DrawerContentDirective } from '../../directives/le-drawer-content.directive';\nimport { LeDrawerDirective } from '../../directives/le-drawer.directive';\nimport { FilterModel, ColumnFilterModel, LEFiltersService } from '../../services/le-filters.service';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { LeIconComponent } from '../../icons/le-icon.component';\n\n@Component({\n selector: 'le-filters',\n templateUrl: './filters.component.html',\n imports: [\n DrawerContentDirective,\n DrawerContainerDirective,\n LeDrawerDirective,\n ReactiveFormsModule,\n LeIconComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FiltersComponent implements OnDestroy, OnDestroy {\n private filtersService = inject(LEFiltersService);\n private overlay = inject(Overlay);\n private viewContainerRef = inject(ViewContainerRef);\n private _filteredOptions = signal<ColumnFilterModel[]>([]);\n private _isDropdownOpened = signal(false);\n private overlayRef: OverlayRef | null = null;\n private destroy$ = new Subject<void>();\n\n readonly isOpened = this.filtersService.shown;\n readonly options = this.filtersService.options;\n readonly filteredOptions = this._filteredOptions.asReadonly();\n readonly isDropdownOpened = this._isDropdownOpened.asReadonly();\n\n protected inputEl = viewChild<ElementRef<HTMLInputElement>>('inputEl');\n protected inputContainerEl = viewChild<ElementRef<HTMLInputElement>>('inputContainerEl');\n protected dropdownTpl = viewChild<TemplateRef<unknown>>('autocompleteDropdownTpl');\n protected contentTpl = viewChild<ElementRef<HTMLDivElement>>('contentEl');\n protected search = new FormControl();\n protected selectedFilters = new SelectionModel<FilterModel['control']>(true);\n protected filtersForm = new FormGroup({});\n\n constructor() {\n this.initFilters();\n this.listenSearchChanges();\n this.listenSelectionChanges();\n this.listenDropdownState();\n }\n\n ngAfterViewInit() {\n fromEvent(this.contentTpl()!.nativeElement, 'click')\n .pipe(takeUntil(this.destroy$))\n .subscribe({\n next: () => this.filtersService.close()\n })\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n onApplyClick(event: Event): void {\n event.stopPropagation();\n\n this.filtersService.updateSelection(this.filtersForm.getRawValue());\n }\n\n onResetClick(event: Event): void {\n event.stopPropagation();\n\n this.clearSelection();\n }\n\n onCloseClick(event: Event): void {\n event.stopPropagation();\n\n this.closeDropdown();\n this.filtersService.close();\n }\n\n onInput(event: Event): void {\n event.stopPropagation();\n\n this.search.setValue((event.target as unknown as { value: string }).value);\n }\n\n onInputClearClick(event: Event): void {\n event.stopPropagation();\n\n this.search.setValue('');\n }\n\n onFocus(event: Event): void {\n event.stopPropagation();\n\n this.showDropdown();\n }\n\n onBlur(event: Event): void {\n event.stopPropagation();\n }\n\n onOptionClick(control: FilterModel['control']): void {\n this.selectedFilters.toggle(control);\n this.closeDropdown();\n this.search.setValue('');\n }\n\n onFilterRemoveClick(control: FilterModel['control']): void {\n this.selectedFilters.toggle(control);\n }\n\n private closePanel(): void {\n this.overlayRef?.detach();\n this.overlayRef?.dispose();\n this.overlayRef = null;\n }\n\n private openPanel(): void {\n if (this.overlayRef !== null) return;\n\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.inputContainerEl()!)\n .withPositions([\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\n ])\n .withPush(false);\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n width: this.inputContainerEl()!.nativeElement.offsetWidth,\n hasBackdrop: false,\n });\n\n this.overlayRef.attach(new TemplatePortal(this.dropdownTpl()!, this.viewContainerRef));\n\n this.overlayRef\n .outsidePointerEvents()\n .pipe(takeUntil(this.destroy$))\n .subscribe((event) => {\n if (!this.inputContainerEl()!.nativeElement.contains(event.target as Node)) {\n this.closeDropdown();\n }\n });\n }\n\n private showDropdown(): void {\n this._isDropdownOpened.set(true);\n }\n\n private closeDropdown(): void {\n this._isDropdownOpened.set(false);\n }\n\n private clearSelection(): void {\n this.selectedFilters.clear();\n this.filtersService.updateSelection({});\n }\n\n private initFilters(): void {\n effect(() => {\n const options = this.options();\n\n untracked(() => {\n this._filteredOptions.set(options);\n this.selectedFilters.clear();\n });\n });\n }\n\n private listenSearchChanges(): void {\n this.search.valueChanges\n .pipe(\n startWith(''),\n map((value) => this.filter(value)),\n takeUntilDestroyed(),\n )\n .subscribe((filters) => {\n this._filteredOptions.set(filters);\n console.log(filters);\n });\n }\n\n private listenSelectionChanges(): void {\n this.selectedFilters.changed.pipe(takeUntilDestroyed()).subscribe(({ added, removed }) => {\n added.forEach((option) => {\n this.filtersForm.addControl(option.key, new FormControl(''));\n });\n\n removed.forEach((option) => {\n this.filtersForm.removeControl(option.key);\n });\n });\n }\n\n private listenDropdownState(): void {\n effect(() => {\n const isDropdownOpened = this.isDropdownOpened();\n\n untracked(() => {\n if (isDropdownOpened) {\n this.openPanel();\n } else {\n this.closePanel();\n }\n });\n });\n }\n\n private filter(value: string): ColumnFilterModel[] {\n const options = this.options();\n\n try {\n const filterValue = value.toLowerCase();\n\n return options.reduce((acc: ColumnFilterModel[], option) => {\n const filters = option.filters.filter((filter) => {\n return filter.control.label.toLowerCase().includes(filterValue.toLowerCase());\n });\n if (filters.length) {\n acc.push({ ...option, filters });\n }\n return acc;\n }, []);\n } catch {\n return options;\n }\n }\n}\n","<div leDrawerContainer>\n <div leDrawer type=\"over\" [opened]=\"isOpened()\" [width]=\"320\" [hideOnClose]=\"true\" [style.z-index]=\"100\">\n <div class=\"le-filters-container\">\n <div class=\"le-filters-title\">Filters</div>\n\n <div class=\"le-divider le-divider-horizontal\"></div>\n\n <div class=\"le-filters-actions\">\n <button class=\"le-button le-button-flat le-button--success\" (click)=\"onApplyClick($event)\">Apply</button>\n\n <button class=\"le-button le-button-basic\" (click)=\"onResetClick($event)\">Reset</button>\n\n <button class=\"le-button le-button-basic\" (click)=\"onCloseClick($event)\">Close</button>\n </div>\n\n <div #inputContainerEl class=\"le-autocomplete-container\">\n <input\n #inputEl\n class=\"le-autocomplete-input\"\n type=\"text\"\n placeholder=\"Select filters\"\n [value]=\"search.value\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n autocomplete=\"off\"\n role=\"combobox\"\n [attr.aria-expanded]=\"isDropdownOpened()\"\n aria-haspopup=\"listbox\"\n aria-autocomplete=\"list\"\n >\n\n <button type=\"button\" class=\"le-button-icon\" (click)=\"onInputClearClick($event)\">\n <le-icon size=\"16\" class=\"le-icon-clear\" name=\"close\"></le-icon>\n </button>\n </div>\n\n <div>\n <form [formGroup]=\"filtersForm\" class=\"le-filters-list\">\n @for (control of selectedFilters.selected; track control.key) {\n <div class=\"le-filters-list-item\">\n <label class=\"le-filters-list-label\" [for]=\"control.key\">{{control.label}}</label>\n\n <div class=\"le-filters-list-input\">\n @switch (control.type) {\n @case ('single_select') {\n <select [id]=\"control.key\" [formControlName]=\"control.key\">\n @for (option of control.options; track option) {\n <option [value]=\"option\">{{option}}</option>\n }\n </select>\n }\n @case ('multi_select') {\n <select [id]=\"control.key\" [formControlName]=\"control.key\" multiple>\n @for (option of control.options; track option) {\n <option [value]=\"option\">{{option}}</option>\n }\n </select>\n }\n @case ('dateTime') {\n <input type=\"datetime-local\" [id]=\"control.key\" [formControlName]=\"control.key\">\n }\n @case ('date') {\n <input type=\"date\" [id]=\"control.key\" [formControlName]=\"control.key\">\n }\n @default {\n <input\n type=\"text\"\n [id]=\"control.key\"\n [formControlName]=\"control.key\"\n (keydown.enter)=\"onApplyClick($event)\"\n >\n }\n }\n\n <button type=\"button\" class=\"le-button-icon\" (click)=\"onFilterRemoveClick(control)\">\n <le-icon size=\"16\" class=\"le-icon-clear\" name=\"close\"></le-icon>\n </button>\n </div>\n </div>\n }\n </form>\n </div>\n </div>\n </div>\n\n <div #contentEl leDrawerContent>\n <ng-content></ng-content>\n </div>\n</div>\n\n\n<ng-template #autocompleteDropdownTpl>\n <div class=\"le-autocomplete-panel\" role=\"listbox\">\n @for (option of filteredOptions(); track option) {\n <div class=\"le-autocomplete-label\">{{option.label}}</div>\n\n <div>\n @for (item of option.filters; track item) {\n <div\n role=\"option\"\n class=\"le-autocomplete-option\"\n [class.le-autocomplete-option--selected]=\"selectedFilters.isSelected(item.control)\"\n [attr.aria-selected]=\"selectedFilters.isSelected(item.control)\"\n (click)=\"onOptionClick(item.control)\"\n >{{item.control.label}}</div>\n }\n </div>\n }\n </div>\n</ng-template>\n","import { Component, effect, inject, computed, untracked, viewChild} from '@angular/core';\nimport { LeNode } from '@planeasyinc/le-core';\nimport { LEApiService } from '../../services/le-api.service';\nimport { LEAuthService } from '../../services/le-auth.service';\nimport { LEDataService } from '../../services/le-data.service';\nimport { LEFiltersService } from '../../services/le-filters.service';\nimport { SidebarComponent } from '../sidebar/sidebar.component';\nimport { NodeComponent } from '../node/node.component';\nimport { FiltersComponent } from '../filters/filters.component';\n\n@Component({\n selector: 'le-container',\n templateUrl: './container.component.html',\n imports: [SidebarComponent, NodeComponent, FiltersComponent],\n providers: [LEDataService, LEApiService, LEFiltersService],\n})\nexport class LeContainerComponent {\n private auth = inject(LEAuthService);\n private dataService = inject(LEDataService);\n private sidebar = viewChild(SidebarComponent);\n\n readonly data = computed(() => {\n const config = this.dataService.config();\n const view = this.dataService.view();\n\n if (!config || !view) return null;\n\n return {\n config,\n view,\n };\n });\n\n constructor() {\n this.listenAuthState();\n this.listenPageInit();\n }\n\n onSelectionChange(view: LeNode): void {\n this.dataService.setView(view);\n }\n\n private listenAuthState(): void {\n effect(() => {\n const token = this.auth.token();\n const isGuest = this.auth.isGuest();\n\n if (!token && !isGuest) return;\n\n untracked(() => {\n this.dataService.requestConfig();\n });\n });\n }\n\n private listenPageInit(): void {\n effect(() => {\n const parentMenu = this.dataService.parentMenu();\n const sidebar = this.sidebar();\n\n if (!(parentMenu && sidebar)) return;\n\n untracked(() => {\n sidebar.setExpanded(parentMenu);\n });\n });\n }\n}\n","@if (data(); as data) {\n <le-sidebar\n [config]=\"data.config\"\n [view]=\"data.view\"\n (selectionChange)=\"onSelectionChange($event)\"\n >\n <le-filters>\n <le-node [node]=\"data.view\"></le-node>\n </le-filters>\n </le-sidebar>\n}\n","import { CONFIG_TOKEN } from '../tokens/config.token';\nimport { LeConfig } from '../types/le-config';\nimport { defaultConfig } from '../constants/default-config';\n\nexport const provideConfig = (config: Partial<LeConfig>) => {\n return {\n provide: CONFIG_TOKEN,\n useValue: {\n ...defaultConfig,\n ...config,\n },\n };\n};\n","import { inject } from '@angular/core';\nimport { HttpEvent, HttpHandlerFn, HttpInterceptorFn, HttpRequest } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { IS_LIBRARY_REQUEST } from '../tokens/http-context.token';\nimport { LEAuthService } from '../services/le-auth.service';\nimport { LeToastService } from '../services/le-toast.service';\n\nexport const LEAuthInterceptor: HttpInterceptorFn = (\n req: HttpRequest<unknown>,\n next: HttpHandlerFn,\n): Observable<HttpEvent<unknown>> => {\n const authService = inject(LEAuthService);\n\n if (authService.isGuest()) {\n return next(req);\n }\n\n if (req.context.get(IS_LIBRARY_REQUEST)) {\n try {\n authService.validateToken();\n\n return next(req.clone({ setHeaders: { Authorization: authService.token() as string } }));\n } catch (e: any) {\n inject(LeToastService).error(e.message);\n console.error(e);\n }\n }\n\n return next(req);\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["isPlaceholder"],"mappings":"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"}
|