@sdcorejs/angular 21.1.2 → 21.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/README.md +124 -807
  2. package/fesm2022/sdcorejs-angular-components-form-generic.mjs +150 -60
  3. package/fesm2022/sdcorejs-angular-components-form-generic.mjs.map +1 -1
  4. package/fesm2022/sdcorejs-angular-components-import-excel.mjs +2 -7
  5. package/fesm2022/sdcorejs-angular-components-import-excel.mjs.map +1 -1
  6. package/fesm2022/sdcorejs-angular-components-query-bar.mjs +7 -15
  7. package/fesm2022/sdcorejs-angular-components-query-bar.mjs.map +1 -1
  8. package/fesm2022/sdcorejs-angular-components-query-builder.mjs +1 -1
  9. package/fesm2022/sdcorejs-angular-components-query-builder.mjs.map +1 -1
  10. package/fesm2022/sdcorejs-angular-components-tab-router.mjs +60 -30
  11. package/fesm2022/sdcorejs-angular-components-tab-router.mjs.map +1 -1
  12. package/fesm2022/sdcorejs-angular-components-table.mjs +32 -31
  13. package/fesm2022/sdcorejs-angular-components-table.mjs.map +1 -1
  14. package/fesm2022/sdcorejs-angular-components-tree.mjs +2 -1
  15. package/fesm2022/sdcorejs-angular-components-tree.mjs.map +1 -1
  16. package/fesm2022/sdcorejs-angular-components-upload-file.mjs +2 -1
  17. package/fesm2022/sdcorejs-angular-components-upload-file.mjs.map +1 -1
  18. package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs +2 -1
  19. package/fesm2022/sdcorejs-angular-forms-autocomplete.mjs.map +1 -1
  20. package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs +2 -1
  21. package/fesm2022/sdcorejs-angular-forms-chip-calendar.mjs.map +1 -1
  22. package/fesm2022/sdcorejs-angular-forms-chip.mjs +2 -1
  23. package/fesm2022/sdcorejs-angular-forms-chip.mjs.map +1 -1
  24. package/fesm2022/sdcorejs-angular-forms-date-range.mjs +2 -1
  25. package/fesm2022/sdcorejs-angular-forms-date-range.mjs.map +1 -1
  26. package/fesm2022/sdcorejs-angular-forms-date.mjs +6 -5
  27. package/fesm2022/sdcorejs-angular-forms-date.mjs.map +1 -1
  28. package/fesm2022/sdcorejs-angular-forms-datetime.mjs +14 -465
  29. package/fesm2022/sdcorejs-angular-forms-datetime.mjs.map +1 -1
  30. package/fesm2022/sdcorejs-angular-forms-input-color.mjs +5 -3
  31. package/fesm2022/sdcorejs-angular-forms-input-color.mjs.map +1 -1
  32. package/fesm2022/sdcorejs-angular-forms-input-number.mjs +9 -6
  33. package/fesm2022/sdcorejs-angular-forms-input-number.mjs.map +1 -1
  34. package/fesm2022/sdcorejs-angular-forms-input.mjs +10 -6
  35. package/fesm2022/sdcorejs-angular-forms-input.mjs.map +1 -1
  36. package/fesm2022/sdcorejs-angular-forms-select.mjs +2 -1
  37. package/fesm2022/sdcorejs-angular-forms-select.mjs.map +1 -1
  38. package/fesm2022/sdcorejs-angular-forms-textarea.mjs +2 -1
  39. package/fesm2022/sdcorejs-angular-forms-textarea.mjs.map +1 -1
  40. package/fesm2022/sdcorejs-angular-modules-icon.mjs.map +1 -1
  41. package/fesm2022/sdcorejs-angular-modules-layout.mjs +1 -1
  42. package/fesm2022/sdcorejs-angular-modules-layout.mjs.map +1 -1
  43. package/fesm2022/sdcorejs-angular-modules.mjs +0 -1
  44. package/fesm2022/sdcorejs-angular-modules.mjs.map +1 -1
  45. package/fesm2022/sdcorejs-angular-pipes.mjs.map +1 -1
  46. package/fesm2022/sdcorejs-angular-services-loading.mjs +23 -14
  47. package/fesm2022/sdcorejs-angular-services-loading.mjs.map +1 -1
  48. package/package.json +2 -5
  49. package/types/sdcorejs-angular-components-form-generic.d.ts +25 -2
  50. package/types/sdcorejs-angular-forms-date.d.ts +1 -1
  51. package/types/sdcorejs-angular-forms-datetime.d.ts +1 -1
  52. package/types/sdcorejs-angular-forms-input-color.d.ts +3 -1
  53. package/types/sdcorejs-angular-forms-input-number.d.ts +3 -1
  54. package/types/sdcorejs-angular-forms-input.d.ts +3 -1
  55. package/types/sdcorejs-angular-modules-icon.d.ts +2 -3
  56. package/types/sdcorejs-angular-modules.d.ts +0 -1
  57. package/types/sdcorejs-angular-services-loading.d.ts +1 -1
  58. package/fesm2022/sdcorejs-angular-modules-authom.mjs +0 -360
  59. package/fesm2022/sdcorejs-angular-modules-authom.mjs.map +0 -1
  60. package/types/sdcorejs-angular-modules-authom.d.ts +0 -70
@@ -488,7 +488,8 @@ class SdTree {
488
488
  }
489
489
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SdTree, decorators: [{
490
490
  type: Component,
491
- args: [{ selector: 'sd-tree', standalone: true, imports: [SdIcon,
491
+ args: [{ selector: 'sd-tree', standalone: true, imports: [
492
+ SdIcon,
492
493
  CommonModule,
493
494
  MatButtonModule,
494
495
  MatCheckboxModule,
@@ -1 +1 @@
1
- {"version":3,"file":"sdcorejs-angular-components-tree.mjs","sources":["../../../projects/sdcorejs-angular/components/tree/src/tree-item-def.directive.ts","../../../projects/sdcorejs-angular/components/tree/src/tree.component.ts","../../../projects/sdcorejs-angular/components/tree/src/tree.component.html","../../../projects/sdcorejs-angular/components/tree/sdcorejs-angular-components-tree.ts"],"sourcesContent":["import { Directive, TemplateRef, inject } from '@angular/core';\nimport { SdTreeItemContext } from './tree.model';\n\n@Directive({\n selector: '[sdTreeItemDef]',\n standalone: true,\n})\nexport class SdTreeItemDefDirective<T = any> {\n static ngTemplateContextGuard<T>(_dir: SdTreeItemDefDirective<T>, ctx: unknown): ctx is SdTreeItemContext<T> {\n return true;\n }\n\n readonly templateRef: TemplateRef<SdTreeItemContext<T>> = inject(TemplateRef);\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n booleanAttribute,\n computed,\n contentChild,\n effect,\n input,\n isSignal,\n output,\n signal,\n untracked,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { SdButton } from '@sdcorejs/angular/components/button';\nimport { SdQuickAction } from '@sdcorejs/angular/components/quick-action';\nimport { SdTreeItemDefDirective } from './tree-item-def.directive';\nimport { SdIcon } from '@sdcorejs/angular/modules/icon';\nimport {\n SdTreeCommand,\n SdTreeDataSource,\n SdTreeComponentOption,\n SdTreeItem,\n SdTreeItemContext,\n SdTreeItemLazy,\n SdTreeNode,\n SdTreeOption,\n SdTreeSelectionAction,\n SdTreeSelectionEvent,\n SdTreeSelectorOption,\n SdTreeToggleEvent,\n} from './tree.model';\n\nexport type SdTreeAutoIdPart = 'row' | 'toggle' | 'checkbox' | 'icon' | 'label' | 'command';\n\nexport interface SdTreeNodeAutoIds {\n row?: string;\n toggle?: string;\n checkbox?: string;\n icon?: string;\n label?: string;\n command?: string;\n}\n\nexport interface SdTreeViewCommand<T = any> {\n key: string;\n command: SdTreeCommand<T>;\n title: string;\n icon: string;\n color: SdTreeCommand<T>['color'];\n fontSet: SdTreeCommand<T>['fontSet'];\n disabled: boolean;\n autoId?: string;\n defaultColor: boolean;\n}\n\nexport interface SdTreeViewNode<T = any> extends SdTreeNode<T> {\n icon?: string;\n selected: boolean;\n selectionDisabled: boolean;\n toggleDisabled: boolean;\n toggleLabel: string;\n ariaExpanded: boolean | null;\n autoIds: SdTreeNodeAutoIds;\n commands: SdTreeViewCommand<T>[];\n context: SdTreeItemContext<T>;\n}\n\nexport interface SdTreeSelectionActionView<T = any> {\n action: SdTreeSelectionAction<T>;\n autoId: string | null;\n}\n\nconst DEFAULT_STATIC_TREE: SdTreeOption<any> = { loadType: 'static' };\nconst EMPTY_TREE_ITEMS: SdTreeItem<any>[] = [];\n\n@Component({\n selector: 'sd-tree',\n standalone: true,\n imports: [SdIcon,\n CommonModule,\n MatButtonModule,\n MatCheckboxModule,\n MatMenuModule,\n MatProgressSpinnerModule,\n MatTooltipModule,\n SdButton,\n SdQuickAction,\n ],\n templateUrl: './tree.component.html',\n styleUrl: './tree.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.data-autoid]': 'autoId()',\n },\n})\nexport class SdTree<T = any> {\n readonly autoIdInput = input<string | undefined | null>(undefined, { alias: 'autoId' });\n readonly option = input<SdTreeComponentOption<T> | undefined>(undefined);\n\n /** Migration bridge. New usage should put the data source in `option.items`. */\n readonly items = input<SdTreeDataSource<SdTreeItem<T>> | undefined>(undefined);\n /** Migration bridge. New usage should put static/lazy config in `option.tree`. */\n readonly tree = input<SdTreeOption<T> | undefined>(DEFAULT_STATIC_TREE);\n readonly selectedItemsInput = input<T[] | undefined | null>(undefined, { alias: 'selectedItems' });\n readonly commands = input<SdTreeCommand<T>[] | undefined | null>([]);\n readonly selectable = input(true, { transform: booleanAttribute });\n readonly selector = input<SdTreeSelectorOption<T> | undefined | null>(undefined);\n readonly itemTemplate = input<TemplateRef<SdTreeItemContext<T>> | undefined | null>(undefined);\n\n readonly selectedItemsChange = output<T[]>();\n readonly selectChange = output<SdTreeSelectionEvent<T>>();\n readonly expandChange = output<SdTreeToggleEvent<T>>();\n readonly collapseChange = output<SdTreeToggleEvent<T>>();\n\n readonly itemDef = contentChild(SdTreeItemDefDirective<T>);\n readonly resolvedItemsSource = computed<SdTreeDataSource<SdTreeItem<T>>>(() => {\n return this.option()?.items ?? this.items() ?? (EMPTY_TREE_ITEMS as SdTreeItem<T>[]);\n });\n readonly resolvedTree = computed<SdTreeOption<T>>(() => this.option()?.tree ?? this.tree() ?? (DEFAULT_STATIC_TREE as SdTreeOption<T>));\n readonly resolvedSelector = computed(() => this.option()?.selector ?? this.selector());\n readonly resolvedCommands = computed(() => this.option()?.commands ?? this.commands() ?? []);\n readonly resolvedSelectable = computed(() => this.option()?.selectable ?? this.selectable());\n readonly autoId = computed(() => {\n const scope = this.option()?.autoId ?? this.autoIdInput();\n return scope ? `components-tree-${scope}` : undefined;\n });\n readonly resolvedItemTemplate = computed<TemplateRef<SdTreeItemContext<T>> | undefined>(() => {\n return this.itemDef()?.templateRef || this.option()?.itemTemplate || this.itemTemplate() || undefined;\n });\n readonly indentSize = computed(() => this.resolvedTree().indentSize ?? 20);\n\n readonly #rootItems = signal<SdTreeItem<T>[]>([]);\n readonly #expandedState = signal<Record<string, boolean>>({});\n readonly #loadingState = signal<Record<string, boolean>>({});\n readonly #lazyChildren = signal<Record<string, SdTreeItemLazy<T>[]>>({});\n readonly #selectedIds = signal<Set<string>>(new Set());\n readonly #filterText = signal('');\n readonly #reloadTick = signal(0);\n\n #rootLoadId = 0;\n #lastSource?: SdTreeDataSource<SdTreeItem<T>>;\n #lastSourceValue?: SdTreeItem<T>[];\n #lastReloadTick = -1;\n\n readonly normalizedFilterText = computed(() => normalizeText(this.#filterText()));\n readonly selectionVisible = computed(() => this.resolvedSelectable() && this.resolvedSelector()?.visible === true);\n readonly selectedIdSet = computed(() => {\n const selectedItems = this.option()?.selectedItems ?? this.selectedItemsInput();\n return selectedItems ? this.#idsFromSelectedItems(selectedItems) : this.#selectedIds();\n });\n\n readonly rootNodes = computed<SdTreeNode<T>[]>(() => this.#buildNodes(this.#rootItems(), 0, null));\n\n readonly visibleNodes = computed<SdTreeNode<T>[]>(() => {\n const filterText = this.normalizedFilterText();\n const result: SdTreeNode<T>[] = [];\n\n const walk = (nodes: SdTreeNode<T>[]) => {\n for (const node of nodes) {\n const nodeOrDescendantMatches = this.#subtreeMatches(node, filterText);\n if (!filterText || nodeOrDescendantMatches) {\n result.push(node);\n }\n\n const shouldShowChildren = filterText ? nodeOrDescendantMatches : node.isExpanded;\n if (shouldShowChildren) {\n walk(node.children);\n }\n }\n };\n\n walk(this.rootNodes());\n return result;\n });\n readonly selectedItems = computed(() => this.#selectedItemsFromIds(this.selectedIdSet()));\n readonly selectedCount = computed(() => this.selectedItems().length);\n readonly selectionMessage = computed(() => {\n const items = this.selectedItems();\n const message = this.resolvedSelector()?.message;\n if (typeof message === 'function') return message(items);\n return message || `Đã chọn ${items.length} mục`;\n });\n readonly visibleSelectionActions = computed(() => {\n const items = this.selectedItems();\n return (this.resolvedSelector()?.actions || []).filter(action => {\n const hidden = typeof action.hidden === 'function' ? action.hidden(items) : action.hidden;\n return !hidden;\n });\n });\n readonly selectionActionViews = computed<SdTreeSelectionActionView<T>[]>(() => {\n return this.visibleSelectionActions().map((action, index) => ({\n action,\n autoId: this.#selectionActionAutoId(index),\n }));\n });\n readonly clearSelectionAutoId = computed(() => {\n const base = this.autoId();\n return base ? `${base}-clear-selection` : null;\n });\n\n /**\n * Template-facing row model. Expensive/variable values are resolved once per\n * signal recomputation so the HTML does not call helper methods for every CD pass.\n */\n readonly visibleViewNodes = computed<SdTreeViewNode<T>[]>(() => {\n const selectedIds = this.selectedIdSet();\n const selectedItems = this.selectedItems();\n const selector = this.resolvedSelector();\n const commands = this.resolvedCommands();\n return this.visibleNodes().map(node => this.#toViewNode(node, selectedIds, selectedItems, selector, commands));\n });\n\n readonly trackByNode = (_index: number, node: SdTreeNode<T>): string => node.id;\n\n constructor() {\n effect(() => {\n const source = this.resolvedItemsSource();\n const reloadTick = this.#reloadTick();\n\n // Data sources can be arrays, signals, sync loaders, or async loaders.\n // The effect normalizes them into #rootItems; `reload()` only bumps the tick.\n if (isSignal(source)) {\n const items = source();\n untracked(() => this.#applySignalSource(source, items, reloadTick));\n return;\n }\n\n untracked(() => {\n if (source === this.#lastSource && reloadTick === this.#lastReloadTick) return;\n\n this.#lastSource = source;\n this.#lastSourceValue = undefined;\n this.#lastReloadTick = reloadTick;\n this.#loadRootItems(source);\n });\n });\n }\n\n reload(): void {\n this.#reloadTick.update(value => value + 1);\n }\n\n filter(searchText: string | undefined | null): void {\n this.#filterText.set(searchText ?? '');\n }\n\n isSelected(node: SdTreeNode<T>): boolean {\n return this.selectedIdSet().has(node.id);\n }\n\n nodeIcon(node: SdTreeNode<T>): string | undefined {\n return this.#iconOf(node);\n }\n\n visibleCommands(node: SdTreeNode<T>): SdTreeCommand<T>[] {\n return this.resolvedCommands().filter(command => !this.#resolveBoolean(command.hidden, node.data));\n }\n\n isSelectionDisabled(node: SdTreeNode<T>): boolean {\n const disabled = this.resolvedSelector()?.disabled;\n return disabled ? disabled(node.data, this.selectedItems()) : false;\n }\n\n commandTitle(command: SdTreeCommand<T>, item: T): string {\n return typeof command.title === 'function' ? command.title(item) : command.title;\n }\n\n commandIcon(command: SdTreeCommand<T>, item: T): string {\n const icon = typeof command.icon === 'function' ? command.icon(item) : command.icon;\n return icon || 'more_horiz';\n }\n\n isCommandDisabled(command: SdTreeCommand<T>, item: T): boolean {\n return this.#resolveBoolean(command.disabled, item);\n }\n\n async toggle(node: SdTreeNode<T>, event?: Event): Promise<void> {\n event?.stopPropagation();\n const currentNode = this.#findNode(node.id) ?? node;\n if (!currentNode.hasChildren || currentNode.isLoading) return;\n\n if (currentNode.isExpanded) {\n this.#expandedState.update(state => ({ ...state, [currentNode.id]: false }));\n const toggleEvent = { item: currentNode.data, expanded: false, node: { ...currentNode, isExpanded: false } };\n this.option()?.onCollapse?.(toggleEvent);\n this.collapseChange.emit(toggleEvent);\n return;\n }\n\n await this.#ensureLazyChildren(currentNode);\n const nextNode = this.#findNode(currentNode.id) ?? currentNode;\n if (!nextNode.hasChildren) return;\n\n this.#expandedState.update(state => ({ ...state, [currentNode.id]: true }));\n const toggleEvent = { item: currentNode.data, expanded: true, node: { ...nextNode, isExpanded: true } };\n this.option()?.onExpand?.(toggleEvent);\n this.expandChange.emit(toggleEvent);\n }\n\n toggleSelection(node: SdTreeNode<T>, event?: Event): void {\n event?.stopPropagation();\n if (!this.selectionVisible() || this.isSelectionDisabled(node)) return;\n\n const selectedIds = new Set(this.selectedIdSet());\n const nextSelected = !selectedIds.has(node.id);\n if (nextSelected) {\n selectedIds.add(node.id);\n } else {\n selectedIds.delete(node.id);\n }\n\n this.#selectedIds.set(selectedIds);\n const selectedItems = this.#selectedItemsFromIds(selectedIds);\n this.option()?.onSelectedItemsChange?.(selectedItems);\n this.selectedItemsChange.emit(selectedItems);\n const selectionEvent = { item: node.data, selected: nextSelected, selectedItems };\n this.option()?.onSelect?.(selectionEvent);\n this.selectChange.emit(selectionEvent);\n }\n\n clearSelection(): void {\n this.#selectedIds.set(new Set());\n this.option()?.onSelectedItemsChange?.([]);\n this.selectedItemsChange.emit([]);\n }\n\n onSelectionAction(action: SdTreeSelectionAction<T>): void {\n action.click(this.selectedItems());\n }\n\n createContext(node: SdTreeNode<T>): SdTreeItemContext<T> {\n return this.#createContext(node, this.isSelected(node));\n }\n\n nodeAutoId(node: SdTreeNode<T>, part: SdTreeAutoIdPart): string | undefined {\n const base = this.autoId();\n return base ? `${base}-${part}-${sanitizeId(node.id)}` : undefined;\n }\n\n commandAutoId(node: SdTreeNode<T>, command: SdTreeCommand<T>): string | undefined {\n const base = this.nodeAutoId(node, 'command');\n return base ? `${base}-${sanitizeId(command.key)}` : undefined;\n }\n\n #applySignalSource(source: SdTreeDataSource<SdTreeItem<T>>, items: SdTreeItem<T>[], reloadTick: number): void {\n if (source === this.#lastSource && items === this.#lastSourceValue && reloadTick === this.#lastReloadTick) return;\n\n this.#lastSource = source;\n this.#lastSourceValue = items;\n this.#lastReloadTick = reloadTick;\n this.#setRootItems(items);\n }\n\n #loadRootItems(source: SdTreeDataSource<SdTreeItem<T>>): void {\n const loadId = ++this.#rootLoadId;\n try {\n const result = this.#readItemsSource(source);\n if (isPromiseLike(result)) {\n result\n .then(items => {\n if (loadId === this.#rootLoadId) {\n this.#setRootItems(items);\n }\n })\n .catch(() => {\n if (loadId === this.#rootLoadId) {\n this.#setRootItems([]);\n }\n });\n return;\n }\n\n if (loadId === this.#rootLoadId) {\n this.#setRootItems(result);\n }\n } catch {\n if (loadId === this.#rootLoadId) {\n this.#setRootItems([]);\n }\n }\n }\n\n #readItemsSource(source: SdTreeDataSource<SdTreeItem<T>>): SdTreeItem<T>[] | Promise<SdTreeItem<T>[]> {\n if (isSignal(source)) return source();\n if (typeof source === 'function') return source();\n return source;\n }\n\n #setRootItems(items: SdTreeItem<T>[] | undefined | null): void {\n this.#rootItems.set([...(items ?? [])]);\n this.#lazyChildren.set({});\n this.#loadingState.set({});\n }\n\n #toViewNode(\n node: SdTreeNode<T>,\n selectedIds: Set<string>,\n selectedItems: T[],\n selector: SdTreeSelectorOption<T> | undefined | null,\n commands: SdTreeCommand<T>[]\n ): SdTreeViewNode<T> {\n const selected = selectedIds.has(node.id);\n const selectionDisabled = selector?.disabled ? selector.disabled(node.data, selectedItems) : false;\n const viewNode = {\n ...node,\n icon: this.#iconOf(node),\n selected,\n selectionDisabled,\n toggleDisabled: !node.hasChildren || node.isLoading,\n toggleLabel: node.isExpanded ? 'Collapse tree item' : 'Expand tree item',\n ariaExpanded: node.hasChildren ? node.isExpanded : null,\n autoIds: this.#nodeAutoIds(node),\n commands: this.#commandViews(node, commands),\n context: undefined as unknown as SdTreeItemContext<T>,\n };\n\n viewNode.context = this.#createContext(viewNode, selected);\n return viewNode;\n }\n\n #commandViews(node: SdTreeNode<T>, commands: SdTreeCommand<T>[]): SdTreeViewCommand<T>[] {\n return commands\n .filter(command => !this.#resolveBoolean(command.hidden, node.data))\n .map(command => ({\n key: command.key,\n command,\n title: this.commandTitle(command, node.data),\n icon: this.commandIcon(command, node.data),\n color: command.color || 'secondary',\n fontSet: command.fontSet || 'material-icons-outlined',\n disabled: this.isCommandDisabled(command, node.data),\n autoId: this.commandAutoId(node, command),\n defaultColor: !command.color,\n }));\n }\n\n #createContext(node: SdTreeNode<T>, selected: boolean): SdTreeItemContext<T> {\n return {\n $implicit: node.data,\n item: node.data,\n treeItem: node.treeItem,\n node,\n level: node.level,\n expanded: node.isExpanded,\n selected,\n loading: node.isLoading,\n hasChildren: node.hasChildren,\n isLeaf: !node.hasChildren,\n toggle: () => void this.toggle(node),\n select: () => this.toggleSelection(node),\n };\n }\n\n #nodeAutoIds(node: SdTreeNode<T>): SdTreeNodeAutoIds {\n return {\n row: this.nodeAutoId(node, 'row'),\n toggle: this.nodeAutoId(node, 'toggle'),\n checkbox: this.nodeAutoId(node, 'checkbox'),\n icon: this.nodeAutoId(node, 'icon'),\n label: this.nodeAutoId(node, 'label'),\n command: this.nodeAutoId(node, 'command'),\n };\n }\n\n #selectionActionAutoId(index: number): string | null {\n const base = this.autoId();\n return base ? `${base}-selection-action-${index}` : null;\n }\n\n #buildNodes(items: SdTreeItem<T>[], level: number, parent: SdTreeNode<T> | null): SdTreeNode<T>[] {\n const option = this.resolvedTree();\n const maxDepth = option.maxDepth;\n if (maxDepth !== undefined && level > maxDepth) return [];\n\n return items.map(item => {\n const rawChildren = this.#childrenOf(item);\n const hasChildren = rawChildren.length > 0 || this.#hasLazyChildren(item);\n const isExpanded = this.#expandedState()[item.id] ?? item.expanded ?? this.#defaultExpanded(level);\n const node: SdTreeNode<T> = {\n treeItem: item,\n data: item.data,\n id: item.id,\n label: item.label,\n level,\n parent,\n children: [],\n hasChildren,\n isExpanded,\n isLoading: this.#loadingState()[item.id] ?? false,\n };\n node.children = this.#buildNodes(rawChildren, level + 1, node);\n return node;\n });\n }\n\n #childrenOf(item: SdTreeItem<T>): SdTreeItem<T>[] {\n const option = this.resolvedTree();\n // Static items own their `children`; lazy items keep loaded children in component state.\n if (option.loadType === 'lazy') {\n return this.#lazyChildren()[item.id] ?? [];\n }\n\n return item.children ?? [];\n }\n\n #hasLazyChildren(item: SdTreeItem<T>): boolean {\n const option = this.resolvedTree();\n if (option.loadType !== 'lazy' || this.#lazyChildren()[item.id]) return false;\n // Lazy mode uses `hasChildren` as the branch hint before children are loaded.\n return item.hasChildren ?? true;\n }\n\n #defaultExpanded(level: number): boolean {\n const option = this.resolvedTree();\n if (option.loadType !== 'static') return false;\n\n const value = option.defaultExpanded ?? false;\n if (value === true) return true;\n if (value === false) return false;\n return level < value;\n }\n\n #iconOf(node: SdTreeNode<T>): string | undefined {\n // One optional `treeItem.icon` handles both branch and leaf overrides.\n // Without it, branches get folder icons while leaves intentionally render no icon.\n if (node.treeItem.icon) return node.treeItem.icon;\n if (!node.hasChildren) return undefined;\n return node.isExpanded ? 'folder_open' : 'folder';\n }\n\n async #ensureLazyChildren(node: SdTreeNode<T>): Promise<void> {\n const option = this.resolvedTree();\n if (option.loadType !== 'lazy' || node.children.length > 0 || this.#lazyChildren()[node.id]) return;\n\n this.#loadingState.update(state => ({ ...state, [node.id]: true }));\n try {\n const lazyItem = node.treeItem as SdTreeItemLazy<T>;\n const children = await Promise.resolve(option.onExpandChildren(lazyItem));\n this.#lazyChildren.update(state => ({ ...state, [node.id]: children }));\n // Do not write `children` onto lazy items; that field belongs to static items only.\n lazyItem.hasChildren = children.length > 0;\n } finally {\n this.#loadingState.update(state => ({ ...state, [node.id]: false }));\n }\n }\n\n #findNode(id: string): SdTreeNode<T> | undefined {\n return this.#flattenAll(this.rootNodes()).find(node => node.id === id);\n }\n\n #flattenAll(nodes: SdTreeNode<T>[]): SdTreeNode<T>[] {\n const result: SdTreeNode<T>[] = [];\n const walk = (current: SdTreeNode<T>[]) => {\n for (const node of current) {\n result.push(node);\n walk(node.children);\n }\n };\n walk(nodes);\n return result;\n }\n\n #selectedItemsFromIds(selectedIds: Set<string>): T[] {\n return this.#flattenAll(this.rootNodes())\n .filter(node => selectedIds.has(node.id))\n .map(node => node.data);\n }\n\n #idsFromSelectedItems(selectedItems: T[]): Set<string> {\n const selectedRefs = new Set(selectedItems);\n const selectedDataIds = new Set(selectedItems.map(item => this.#dataId(item)).filter((id): id is string => !!id));\n const result = new Set<string>();\n\n for (const node of this.#flattenAll(this.rootNodes())) {\n const dataId = this.#dataId(node.data);\n if (selectedRefs.has(node.data) || (dataId && selectedDataIds.has(dataId))) {\n result.add(node.id);\n }\n }\n\n return result;\n }\n\n #dataId(item: T): string | undefined {\n const record = item as Record<string, unknown>;\n const value = record?.['id'] ?? record?.['code'] ?? record?.['value'];\n return value != null && value !== '' ? String(value) : undefined;\n }\n\n #nodeMatches(node: SdTreeNode<T>, filterText: string): boolean {\n return normalizeText(node.label).includes(filterText);\n }\n\n #subtreeMatches(node: SdTreeNode<T>, filterText: string): boolean {\n if (this.#nodeMatches(node, filterText)) return true;\n return node.children.some(child => this.#subtreeMatches(child, filterText));\n }\n\n #resolveBoolean(resolver: boolean | ((item: T) => boolean) | undefined, item: T): boolean {\n return typeof resolver === 'function' ? resolver(item) : !!resolver;\n }\n}\n\nfunction normalizeText(value: string): string {\n return value\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .replace(/[\\u0111\\u0110]/g, match => (match === '\\u0110' ? 'D' : 'd'))\n .toLowerCase()\n .trim();\n}\n\nfunction sanitizeId(value: string): string {\n return value.replace(/[^a-zA-Z0-9_-]/g, '-');\n}\n\nfunction isPromiseLike<T>(value: T[] | Promise<T[]>): value is Promise<T[]> {\n return !!value && typeof (value as Promise<T[]>).then === 'function';\n}\n","@let _resolvedItemTemplate = resolvedItemTemplate();\n@let _selectionVisible = selectionVisible();\n@let _selectedCount = selectedCount();\n@let _selectionMessage = selectionMessage();\n@let _selectionActionViews = selectionActionViews();\n\n<div class=\"sd-tree\" role=\"tree\" [style.--sd-tree-indent-size]=\"indentSize() + 'px'\">\n @for (node of visibleViewNodes(); track node.id) {\n <div\n class=\"sd-tree__row\"\n role=\"treeitem\"\n [class.sd-tree__row--selected]=\"node.selected\"\n [style.--sd-tree-level]=\"node.level\"\n [attr.aria-expanded]=\"node.ariaExpanded\"\n [attr.aria-selected]=\"_selectionVisible ? node.selected : null\"\n [attr.data-autoid]=\"node.autoIds.row\">\n <div class=\"sd-tree__main\">\n <button\n type=\"button\"\n class=\"sd-tree__toggle\"\n [class.sd-tree__toggle--placeholder]=\"!node.hasChildren\"\n [disabled]=\"node.toggleDisabled\"\n [attr.aria-label]=\"node.toggleLabel\"\n [attr.data-autoid]=\"node.autoIds.toggle\"\n (click)=\"toggle(node, $event)\">\n @if (node.isLoading) {\n <mat-progress-spinner diameter=\"16\" mode=\"indeterminate\" />\n } @else if (node.hasChildren) {\n <sd-icon [name]=\"node.isExpanded ? 'expand_more' : 'chevron_right'\"></sd-icon>\n }\n </button>\n\n @if (_selectionVisible) {\n <mat-checkbox\n class=\"sd-tree__checkbox\"\n [checked]=\"node.selected\"\n [disabled]=\"node.selectionDisabled\"\n [attr.data-autoid]=\"node.autoIds.checkbox\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleSelection(node)\" />\n }\n\n @if (node.icon) {\n <sd-icon class=\"sd-tree__item-icon\" color=\"primary\" [attr.data-autoid]=\"node.autoIds.icon\" [name]=\"node.icon\"></sd-icon>\n }\n\n <div class=\"sd-tree__content\" [class.sd-tree__content--custom]=\"_resolvedItemTemplate\" [attr.data-autoid]=\"node.autoIds.label\">\n @if (_resolvedItemTemplate) {\n <ng-container *ngTemplateOutlet=\"_resolvedItemTemplate; context: node.context\" />\n } @else {\n <span class=\"sd-tree__label\">{{ node.label }}</span>\n }\n </div>\n </div>\n\n @if (node.commands.length) {\n <button\n type=\"button\"\n class=\"sd-tree__command-trigger\"\n mat-icon-button\n [matMenuTriggerFor]=\"commandMenu\"\n [attr.data-autoid]=\"node.autoIds.command\"\n (click)=\"$event.stopPropagation()\">\n <sd-icon class=\"c-icon\" name=\"more_vert\"></sd-icon>\n </button>\n <mat-menu #commandMenu=\"matMenu\" class=\"sd-tree__command-menu\">\n @for (command of node.commands; track command.key) {\n <button\n type=\"button\"\n class=\"sd-tree__command-menu-item\"\n mat-menu-item\n [disabled]=\"command.disabled\"\n [attr.data-autoid]=\"command.autoId\"\n (click)=\"command.command.click(node.data)\">\n <span class=\"sd-tree__command-menu-content\">\n <sd-icon class=\"c-icon sd-tree__command-menu-icon\"\n [class.sd-tree__command-menu-icon--default]=\"command.defaultColor\"\n [color]=\"command.color\"\n [fontSet]=\"command.fontSet\" [name]=\"command.icon\"></sd-icon>\n <span class=\"sd-tree__command-title\">{{ command.title }}</span>\n </span>\n </button>\n }\n </mat-menu>\n }\n </div>\n }\n</div>\n\n<sd-quick-action [opened]=\"_selectedCount > 0\">\n <div class=\"d-flex align-items-center\" sdMessage>\n <div class=\"c-bg-length\">\n <span class=\"c-length sd-tree__qa-count\">{{ _selectedCount }}</span>\n </div>\n <div class=\"c-message\">\n {{ _selectionMessage }}\n </div>\n </div>\n\n <div class=\"d-flex align-items-center mr-8 sd-tree__qa-actions\" sdAction>\n @for (actionView of _selectionActionViews; track $index) {\n <sd-button\n [autoId]=\"actionView.autoId\"\n class=\"ml-4\"\n [tooltip]=\"actionView.action.tooltip\"\n [prefixIcon]=\"actionView.action.icon\"\n [color]=\"actionView.action.color || 'primary'\"\n [type]=\"actionView.action.type || 'light'\"\n [fontSet]=\"actionView.action.fontSet\"\n [title]=\"actionView.action.title\"\n (click)=\"onSelectionAction(actionView.action)\" />\n }\n <sd-button\n [autoId]=\"clearSelectionAutoId()\"\n class=\"ml-4\"\n prefixIcon=\"close\"\n color=\"secondary\"\n type=\"outline\"\n width=\"35px\"\n (click)=\"clearSelection()\" />\n </div>\n</sd-quick-action>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sdcorejs-angular-components-tree.mjs","sources":["../../../projects/sdcorejs-angular/components/tree/src/tree-item-def.directive.ts","../../../projects/sdcorejs-angular/components/tree/src/tree.component.ts","../../../projects/sdcorejs-angular/components/tree/src/tree.component.html","../../../projects/sdcorejs-angular/components/tree/sdcorejs-angular-components-tree.ts"],"sourcesContent":["import { Directive, TemplateRef, inject } from '@angular/core';\nimport { SdTreeItemContext } from './tree.model';\n\n@Directive({\n selector: '[sdTreeItemDef]',\n standalone: true,\n})\nexport class SdTreeItemDefDirective<T = any> {\n static ngTemplateContextGuard<T>(_dir: SdTreeItemDefDirective<T>, ctx: unknown): ctx is SdTreeItemContext<T> {\n return true;\n }\n\n readonly templateRef: TemplateRef<SdTreeItemContext<T>> = inject(TemplateRef);\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n booleanAttribute,\n computed,\n contentChild,\n effect,\n input,\n isSignal,\n output,\n signal,\n untracked,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { SdButton } from '@sdcorejs/angular/components/button';\nimport { SdQuickAction } from '@sdcorejs/angular/components/quick-action';\nimport { SdTreeItemDefDirective } from './tree-item-def.directive';\nimport { SdIcon } from '@sdcorejs/angular/modules/icon';\nimport {\n SdTreeCommand,\n SdTreeDataSource,\n SdTreeComponentOption,\n SdTreeItem,\n SdTreeItemContext,\n SdTreeItemLazy,\n SdTreeNode,\n SdTreeOption,\n SdTreeSelectionAction,\n SdTreeSelectionEvent,\n SdTreeSelectorOption,\n SdTreeToggleEvent,\n} from './tree.model';\n\nexport type SdTreeAutoIdPart = 'row' | 'toggle' | 'checkbox' | 'icon' | 'label' | 'command';\n\nexport interface SdTreeNodeAutoIds {\n row?: string;\n toggle?: string;\n checkbox?: string;\n icon?: string;\n label?: string;\n command?: string;\n}\n\nexport interface SdTreeViewCommand<T = any> {\n key: string;\n command: SdTreeCommand<T>;\n title: string;\n icon: string;\n color: SdTreeCommand<T>['color'];\n fontSet: SdTreeCommand<T>['fontSet'];\n disabled: boolean;\n autoId?: string;\n defaultColor: boolean;\n}\n\nexport interface SdTreeViewNode<T = any> extends SdTreeNode<T> {\n icon?: string;\n selected: boolean;\n selectionDisabled: boolean;\n toggleDisabled: boolean;\n toggleLabel: string;\n ariaExpanded: boolean | null;\n autoIds: SdTreeNodeAutoIds;\n commands: SdTreeViewCommand<T>[];\n context: SdTreeItemContext<T>;\n}\n\nexport interface SdTreeSelectionActionView<T = any> {\n action: SdTreeSelectionAction<T>;\n autoId: string | null;\n}\n\nconst DEFAULT_STATIC_TREE: SdTreeOption<any> = { loadType: 'static' };\nconst EMPTY_TREE_ITEMS: SdTreeItem<any>[] = [];\n\n@Component({\n selector: 'sd-tree',\n standalone: true,\n imports: [\n SdIcon,\n CommonModule,\n MatButtonModule,\n MatCheckboxModule,\n MatMenuModule,\n MatProgressSpinnerModule,\n MatTooltipModule,\n SdButton,\n SdQuickAction,\n ],\n templateUrl: './tree.component.html',\n styleUrl: './tree.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.data-autoid]': 'autoId()',\n },\n})\nexport class SdTree<T = any> {\n readonly autoIdInput = input<string | undefined | null>(undefined, { alias: 'autoId' });\n readonly option = input<SdTreeComponentOption<T> | undefined>(undefined);\n\n /** Migration bridge. New usage should put the data source in `option.items`. */\n readonly items = input<SdTreeDataSource<SdTreeItem<T>> | undefined>(undefined);\n /** Migration bridge. New usage should put static/lazy config in `option.tree`. */\n readonly tree = input<SdTreeOption<T> | undefined>(DEFAULT_STATIC_TREE);\n readonly selectedItemsInput = input<T[] | undefined | null>(undefined, { alias: 'selectedItems' });\n readonly commands = input<SdTreeCommand<T>[] | undefined | null>([]);\n readonly selectable = input(true, { transform: booleanAttribute });\n readonly selector = input<SdTreeSelectorOption<T> | undefined | null>(undefined);\n readonly itemTemplate = input<TemplateRef<SdTreeItemContext<T>> | undefined | null>(undefined);\n\n readonly selectedItemsChange = output<T[]>();\n readonly selectChange = output<SdTreeSelectionEvent<T>>();\n readonly expandChange = output<SdTreeToggleEvent<T>>();\n readonly collapseChange = output<SdTreeToggleEvent<T>>();\n\n readonly itemDef = contentChild(SdTreeItemDefDirective<T>);\n readonly resolvedItemsSource = computed<SdTreeDataSource<SdTreeItem<T>>>(() => {\n return this.option()?.items ?? this.items() ?? (EMPTY_TREE_ITEMS as SdTreeItem<T>[]);\n });\n readonly resolvedTree = computed<SdTreeOption<T>>(() => this.option()?.tree ?? this.tree() ?? (DEFAULT_STATIC_TREE as SdTreeOption<T>));\n readonly resolvedSelector = computed(() => this.option()?.selector ?? this.selector());\n readonly resolvedCommands = computed(() => this.option()?.commands ?? this.commands() ?? []);\n readonly resolvedSelectable = computed(() => this.option()?.selectable ?? this.selectable());\n readonly autoId = computed(() => {\n const scope = this.option()?.autoId ?? this.autoIdInput();\n return scope ? `components-tree-${scope}` : undefined;\n });\n readonly resolvedItemTemplate = computed<TemplateRef<SdTreeItemContext<T>> | undefined>(() => {\n return this.itemDef()?.templateRef || this.option()?.itemTemplate || this.itemTemplate() || undefined;\n });\n readonly indentSize = computed(() => this.resolvedTree().indentSize ?? 20);\n\n readonly #rootItems = signal<SdTreeItem<T>[]>([]);\n readonly #expandedState = signal<Record<string, boolean>>({});\n readonly #loadingState = signal<Record<string, boolean>>({});\n readonly #lazyChildren = signal<Record<string, SdTreeItemLazy<T>[]>>({});\n readonly #selectedIds = signal<Set<string>>(new Set());\n readonly #filterText = signal('');\n readonly #reloadTick = signal(0);\n\n #rootLoadId = 0;\n #lastSource?: SdTreeDataSource<SdTreeItem<T>>;\n #lastSourceValue?: SdTreeItem<T>[];\n #lastReloadTick = -1;\n\n readonly normalizedFilterText = computed(() => normalizeText(this.#filterText()));\n readonly selectionVisible = computed(() => this.resolvedSelectable() && this.resolvedSelector()?.visible === true);\n readonly selectedIdSet = computed(() => {\n const selectedItems = this.option()?.selectedItems ?? this.selectedItemsInput();\n return selectedItems ? this.#idsFromSelectedItems(selectedItems) : this.#selectedIds();\n });\n\n readonly rootNodes = computed<SdTreeNode<T>[]>(() => this.#buildNodes(this.#rootItems(), 0, null));\n\n readonly visibleNodes = computed<SdTreeNode<T>[]>(() => {\n const filterText = this.normalizedFilterText();\n const result: SdTreeNode<T>[] = [];\n\n const walk = (nodes: SdTreeNode<T>[]) => {\n for (const node of nodes) {\n const nodeOrDescendantMatches = this.#subtreeMatches(node, filterText);\n if (!filterText || nodeOrDescendantMatches) {\n result.push(node);\n }\n\n const shouldShowChildren = filterText ? nodeOrDescendantMatches : node.isExpanded;\n if (shouldShowChildren) {\n walk(node.children);\n }\n }\n };\n\n walk(this.rootNodes());\n return result;\n });\n readonly selectedItems = computed(() => this.#selectedItemsFromIds(this.selectedIdSet()));\n readonly selectedCount = computed(() => this.selectedItems().length);\n readonly selectionMessage = computed(() => {\n const items = this.selectedItems();\n const message = this.resolvedSelector()?.message;\n if (typeof message === 'function') return message(items);\n return message || `Đã chọn ${items.length} mục`;\n });\n readonly visibleSelectionActions = computed(() => {\n const items = this.selectedItems();\n return (this.resolvedSelector()?.actions || []).filter(action => {\n const hidden = typeof action.hidden === 'function' ? action.hidden(items) : action.hidden;\n return !hidden;\n });\n });\n readonly selectionActionViews = computed<SdTreeSelectionActionView<T>[]>(() => {\n return this.visibleSelectionActions().map((action, index) => ({\n action,\n autoId: this.#selectionActionAutoId(index),\n }));\n });\n readonly clearSelectionAutoId = computed(() => {\n const base = this.autoId();\n return base ? `${base}-clear-selection` : null;\n });\n\n /**\n * Template-facing row model. Expensive/variable values are resolved once per\n * signal recomputation so the HTML does not call helper methods for every CD pass.\n */\n readonly visibleViewNodes = computed<SdTreeViewNode<T>[]>(() => {\n const selectedIds = this.selectedIdSet();\n const selectedItems = this.selectedItems();\n const selector = this.resolvedSelector();\n const commands = this.resolvedCommands();\n return this.visibleNodes().map(node => this.#toViewNode(node, selectedIds, selectedItems, selector, commands));\n });\n\n readonly trackByNode = (_index: number, node: SdTreeNode<T>): string => node.id;\n\n constructor() {\n effect(() => {\n const source = this.resolvedItemsSource();\n const reloadTick = this.#reloadTick();\n\n // Data sources can be arrays, signals, sync loaders, or async loaders.\n // The effect normalizes them into #rootItems; `reload()` only bumps the tick.\n if (isSignal(source)) {\n const items = source();\n untracked(() => this.#applySignalSource(source, items, reloadTick));\n return;\n }\n\n untracked(() => {\n if (source === this.#lastSource && reloadTick === this.#lastReloadTick) return;\n\n this.#lastSource = source;\n this.#lastSourceValue = undefined;\n this.#lastReloadTick = reloadTick;\n this.#loadRootItems(source);\n });\n });\n }\n\n reload(): void {\n this.#reloadTick.update(value => value + 1);\n }\n\n filter(searchText: string | undefined | null): void {\n this.#filterText.set(searchText ?? '');\n }\n\n isSelected(node: SdTreeNode<T>): boolean {\n return this.selectedIdSet().has(node.id);\n }\n\n nodeIcon(node: SdTreeNode<T>): string | undefined {\n return this.#iconOf(node);\n }\n\n visibleCommands(node: SdTreeNode<T>): SdTreeCommand<T>[] {\n return this.resolvedCommands().filter(command => !this.#resolveBoolean(command.hidden, node.data));\n }\n\n isSelectionDisabled(node: SdTreeNode<T>): boolean {\n const disabled = this.resolvedSelector()?.disabled;\n return disabled ? disabled(node.data, this.selectedItems()) : false;\n }\n\n commandTitle(command: SdTreeCommand<T>, item: T): string {\n return typeof command.title === 'function' ? command.title(item) : command.title;\n }\n\n commandIcon(command: SdTreeCommand<T>, item: T): string {\n const icon = typeof command.icon === 'function' ? command.icon(item) : command.icon;\n return icon || 'more_horiz';\n }\n\n isCommandDisabled(command: SdTreeCommand<T>, item: T): boolean {\n return this.#resolveBoolean(command.disabled, item);\n }\n\n async toggle(node: SdTreeNode<T>, event?: Event): Promise<void> {\n event?.stopPropagation();\n const currentNode = this.#findNode(node.id) ?? node;\n if (!currentNode.hasChildren || currentNode.isLoading) return;\n\n if (currentNode.isExpanded) {\n this.#expandedState.update(state => ({ ...state, [currentNode.id]: false }));\n const toggleEvent = { item: currentNode.data, expanded: false, node: { ...currentNode, isExpanded: false } };\n this.option()?.onCollapse?.(toggleEvent);\n this.collapseChange.emit(toggleEvent);\n return;\n }\n\n await this.#ensureLazyChildren(currentNode);\n const nextNode = this.#findNode(currentNode.id) ?? currentNode;\n if (!nextNode.hasChildren) return;\n\n this.#expandedState.update(state => ({ ...state, [currentNode.id]: true }));\n const toggleEvent = { item: currentNode.data, expanded: true, node: { ...nextNode, isExpanded: true } };\n this.option()?.onExpand?.(toggleEvent);\n this.expandChange.emit(toggleEvent);\n }\n\n toggleSelection(node: SdTreeNode<T>, event?: Event): void {\n event?.stopPropagation();\n if (!this.selectionVisible() || this.isSelectionDisabled(node)) return;\n\n const selectedIds = new Set(this.selectedIdSet());\n const nextSelected = !selectedIds.has(node.id);\n if (nextSelected) {\n selectedIds.add(node.id);\n } else {\n selectedIds.delete(node.id);\n }\n\n this.#selectedIds.set(selectedIds);\n const selectedItems = this.#selectedItemsFromIds(selectedIds);\n this.option()?.onSelectedItemsChange?.(selectedItems);\n this.selectedItemsChange.emit(selectedItems);\n const selectionEvent = { item: node.data, selected: nextSelected, selectedItems };\n this.option()?.onSelect?.(selectionEvent);\n this.selectChange.emit(selectionEvent);\n }\n\n clearSelection(): void {\n this.#selectedIds.set(new Set());\n this.option()?.onSelectedItemsChange?.([]);\n this.selectedItemsChange.emit([]);\n }\n\n onSelectionAction(action: SdTreeSelectionAction<T>): void {\n action.click(this.selectedItems());\n }\n\n createContext(node: SdTreeNode<T>): SdTreeItemContext<T> {\n return this.#createContext(node, this.isSelected(node));\n }\n\n nodeAutoId(node: SdTreeNode<T>, part: SdTreeAutoIdPart): string | undefined {\n const base = this.autoId();\n return base ? `${base}-${part}-${sanitizeId(node.id)}` : undefined;\n }\n\n commandAutoId(node: SdTreeNode<T>, command: SdTreeCommand<T>): string | undefined {\n const base = this.nodeAutoId(node, 'command');\n return base ? `${base}-${sanitizeId(command.key)}` : undefined;\n }\n\n #applySignalSource(source: SdTreeDataSource<SdTreeItem<T>>, items: SdTreeItem<T>[], reloadTick: number): void {\n if (source === this.#lastSource && items === this.#lastSourceValue && reloadTick === this.#lastReloadTick) return;\n\n this.#lastSource = source;\n this.#lastSourceValue = items;\n this.#lastReloadTick = reloadTick;\n this.#setRootItems(items);\n }\n\n #loadRootItems(source: SdTreeDataSource<SdTreeItem<T>>): void {\n const loadId = ++this.#rootLoadId;\n try {\n const result = this.#readItemsSource(source);\n if (isPromiseLike(result)) {\n result\n .then(items => {\n if (loadId === this.#rootLoadId) {\n this.#setRootItems(items);\n }\n })\n .catch(() => {\n if (loadId === this.#rootLoadId) {\n this.#setRootItems([]);\n }\n });\n return;\n }\n\n if (loadId === this.#rootLoadId) {\n this.#setRootItems(result);\n }\n } catch {\n if (loadId === this.#rootLoadId) {\n this.#setRootItems([]);\n }\n }\n }\n\n #readItemsSource(source: SdTreeDataSource<SdTreeItem<T>>): SdTreeItem<T>[] | Promise<SdTreeItem<T>[]> {\n if (isSignal(source)) return source();\n if (typeof source === 'function') return source();\n return source;\n }\n\n #setRootItems(items: SdTreeItem<T>[] | undefined | null): void {\n this.#rootItems.set([...(items ?? [])]);\n this.#lazyChildren.set({});\n this.#loadingState.set({});\n }\n\n #toViewNode(\n node: SdTreeNode<T>,\n selectedIds: Set<string>,\n selectedItems: T[],\n selector: SdTreeSelectorOption<T> | undefined | null,\n commands: SdTreeCommand<T>[]\n ): SdTreeViewNode<T> {\n const selected = selectedIds.has(node.id);\n const selectionDisabled = selector?.disabled ? selector.disabled(node.data, selectedItems) : false;\n const viewNode = {\n ...node,\n icon: this.#iconOf(node),\n selected,\n selectionDisabled,\n toggleDisabled: !node.hasChildren || node.isLoading,\n toggleLabel: node.isExpanded ? 'Collapse tree item' : 'Expand tree item',\n ariaExpanded: node.hasChildren ? node.isExpanded : null,\n autoIds: this.#nodeAutoIds(node),\n commands: this.#commandViews(node, commands),\n context: undefined as unknown as SdTreeItemContext<T>,\n };\n\n viewNode.context = this.#createContext(viewNode, selected);\n return viewNode;\n }\n\n #commandViews(node: SdTreeNode<T>, commands: SdTreeCommand<T>[]): SdTreeViewCommand<T>[] {\n return commands\n .filter(command => !this.#resolveBoolean(command.hidden, node.data))\n .map(command => ({\n key: command.key,\n command,\n title: this.commandTitle(command, node.data),\n icon: this.commandIcon(command, node.data),\n color: command.color || 'secondary',\n fontSet: command.fontSet || 'material-icons-outlined',\n disabled: this.isCommandDisabled(command, node.data),\n autoId: this.commandAutoId(node, command),\n defaultColor: !command.color,\n }));\n }\n\n #createContext(node: SdTreeNode<T>, selected: boolean): SdTreeItemContext<T> {\n return {\n $implicit: node.data,\n item: node.data,\n treeItem: node.treeItem,\n node,\n level: node.level,\n expanded: node.isExpanded,\n selected,\n loading: node.isLoading,\n hasChildren: node.hasChildren,\n isLeaf: !node.hasChildren,\n toggle: () => void this.toggle(node),\n select: () => this.toggleSelection(node),\n };\n }\n\n #nodeAutoIds(node: SdTreeNode<T>): SdTreeNodeAutoIds {\n return {\n row: this.nodeAutoId(node, 'row'),\n toggle: this.nodeAutoId(node, 'toggle'),\n checkbox: this.nodeAutoId(node, 'checkbox'),\n icon: this.nodeAutoId(node, 'icon'),\n label: this.nodeAutoId(node, 'label'),\n command: this.nodeAutoId(node, 'command'),\n };\n }\n\n #selectionActionAutoId(index: number): string | null {\n const base = this.autoId();\n return base ? `${base}-selection-action-${index}` : null;\n }\n\n #buildNodes(items: SdTreeItem<T>[], level: number, parent: SdTreeNode<T> | null): SdTreeNode<T>[] {\n const option = this.resolvedTree();\n const maxDepth = option.maxDepth;\n if (maxDepth !== undefined && level > maxDepth) return [];\n\n return items.map(item => {\n const rawChildren = this.#childrenOf(item);\n const hasChildren = rawChildren.length > 0 || this.#hasLazyChildren(item);\n const isExpanded = this.#expandedState()[item.id] ?? item.expanded ?? this.#defaultExpanded(level);\n const node: SdTreeNode<T> = {\n treeItem: item,\n data: item.data,\n id: item.id,\n label: item.label,\n level,\n parent,\n children: [],\n hasChildren,\n isExpanded,\n isLoading: this.#loadingState()[item.id] ?? false,\n };\n node.children = this.#buildNodes(rawChildren, level + 1, node);\n return node;\n });\n }\n\n #childrenOf(item: SdTreeItem<T>): SdTreeItem<T>[] {\n const option = this.resolvedTree();\n // Static items own their `children`; lazy items keep loaded children in component state.\n if (option.loadType === 'lazy') {\n return this.#lazyChildren()[item.id] ?? [];\n }\n\n return item.children ?? [];\n }\n\n #hasLazyChildren(item: SdTreeItem<T>): boolean {\n const option = this.resolvedTree();\n if (option.loadType !== 'lazy' || this.#lazyChildren()[item.id]) return false;\n // Lazy mode uses `hasChildren` as the branch hint before children are loaded.\n return item.hasChildren ?? true;\n }\n\n #defaultExpanded(level: number): boolean {\n const option = this.resolvedTree();\n if (option.loadType !== 'static') return false;\n\n const value = option.defaultExpanded ?? false;\n if (value === true) return true;\n if (value === false) return false;\n return level < value;\n }\n\n #iconOf(node: SdTreeNode<T>): string | undefined {\n // One optional `treeItem.icon` handles both branch and leaf overrides.\n // Without it, branches get folder icons while leaves intentionally render no icon.\n if (node.treeItem.icon) return node.treeItem.icon;\n if (!node.hasChildren) return undefined;\n return node.isExpanded ? 'folder_open' : 'folder';\n }\n\n async #ensureLazyChildren(node: SdTreeNode<T>): Promise<void> {\n const option = this.resolvedTree();\n if (option.loadType !== 'lazy' || node.children.length > 0 || this.#lazyChildren()[node.id]) return;\n\n this.#loadingState.update(state => ({ ...state, [node.id]: true }));\n try {\n const lazyItem = node.treeItem as SdTreeItemLazy<T>;\n const children = await Promise.resolve(option.onExpandChildren(lazyItem));\n this.#lazyChildren.update(state => ({ ...state, [node.id]: children }));\n // Do not write `children` onto lazy items; that field belongs to static items only.\n lazyItem.hasChildren = children.length > 0;\n } finally {\n this.#loadingState.update(state => ({ ...state, [node.id]: false }));\n }\n }\n\n #findNode(id: string): SdTreeNode<T> | undefined {\n return this.#flattenAll(this.rootNodes()).find(node => node.id === id);\n }\n\n #flattenAll(nodes: SdTreeNode<T>[]): SdTreeNode<T>[] {\n const result: SdTreeNode<T>[] = [];\n const walk = (current: SdTreeNode<T>[]) => {\n for (const node of current) {\n result.push(node);\n walk(node.children);\n }\n };\n walk(nodes);\n return result;\n }\n\n #selectedItemsFromIds(selectedIds: Set<string>): T[] {\n return this.#flattenAll(this.rootNodes())\n .filter(node => selectedIds.has(node.id))\n .map(node => node.data);\n }\n\n #idsFromSelectedItems(selectedItems: T[]): Set<string> {\n const selectedRefs = new Set(selectedItems);\n const selectedDataIds = new Set(selectedItems.map(item => this.#dataId(item)).filter((id): id is string => !!id));\n const result = new Set<string>();\n\n for (const node of this.#flattenAll(this.rootNodes())) {\n const dataId = this.#dataId(node.data);\n if (selectedRefs.has(node.data) || (dataId && selectedDataIds.has(dataId))) {\n result.add(node.id);\n }\n }\n\n return result;\n }\n\n #dataId(item: T): string | undefined {\n const record = item as Record<string, unknown>;\n const value = record?.['id'] ?? record?.['code'] ?? record?.['value'];\n return value != null && value !== '' ? String(value) : undefined;\n }\n\n #nodeMatches(node: SdTreeNode<T>, filterText: string): boolean {\n return normalizeText(node.label).includes(filterText);\n }\n\n #subtreeMatches(node: SdTreeNode<T>, filterText: string): boolean {\n if (this.#nodeMatches(node, filterText)) return true;\n return node.children.some(child => this.#subtreeMatches(child, filterText));\n }\n\n #resolveBoolean(resolver: boolean | ((item: T) => boolean) | undefined, item: T): boolean {\n return typeof resolver === 'function' ? resolver(item) : !!resolver;\n }\n}\n\nfunction normalizeText(value: string): string {\n return value\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .replace(/[\\u0111\\u0110]/g, match => (match === '\\u0110' ? 'D' : 'd'))\n .toLowerCase()\n .trim();\n}\n\nfunction sanitizeId(value: string): string {\n return value.replace(/[^a-zA-Z0-9_-]/g, '-');\n}\n\nfunction isPromiseLike<T>(value: T[] | Promise<T[]>): value is Promise<T[]> {\n return !!value && typeof (value as Promise<T[]>).then === 'function';\n}\n","@let _resolvedItemTemplate = resolvedItemTemplate();\n@let _selectionVisible = selectionVisible();\n@let _selectedCount = selectedCount();\n@let _selectionMessage = selectionMessage();\n@let _selectionActionViews = selectionActionViews();\n\n<div class=\"sd-tree\" role=\"tree\" [style.--sd-tree-indent-size]=\"indentSize() + 'px'\">\n @for (node of visibleViewNodes(); track node.id) {\n <div\n class=\"sd-tree__row\"\n role=\"treeitem\"\n [class.sd-tree__row--selected]=\"node.selected\"\n [style.--sd-tree-level]=\"node.level\"\n [attr.aria-expanded]=\"node.ariaExpanded\"\n [attr.aria-selected]=\"_selectionVisible ? node.selected : null\"\n [attr.data-autoid]=\"node.autoIds.row\">\n <div class=\"sd-tree__main\">\n <button\n type=\"button\"\n class=\"sd-tree__toggle\"\n [class.sd-tree__toggle--placeholder]=\"!node.hasChildren\"\n [disabled]=\"node.toggleDisabled\"\n [attr.aria-label]=\"node.toggleLabel\"\n [attr.data-autoid]=\"node.autoIds.toggle\"\n (click)=\"toggle(node, $event)\">\n @if (node.isLoading) {\n <mat-progress-spinner diameter=\"16\" mode=\"indeterminate\" />\n } @else if (node.hasChildren) {\n <sd-icon [name]=\"node.isExpanded ? 'expand_more' : 'chevron_right'\"></sd-icon>\n }\n </button>\n\n @if (_selectionVisible) {\n <mat-checkbox\n class=\"sd-tree__checkbox\"\n [checked]=\"node.selected\"\n [disabled]=\"node.selectionDisabled\"\n [attr.data-autoid]=\"node.autoIds.checkbox\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleSelection(node)\" />\n }\n\n @if (node.icon) {\n <sd-icon class=\"sd-tree__item-icon\" color=\"primary\" [attr.data-autoid]=\"node.autoIds.icon\" [name]=\"node.icon\"></sd-icon>\n }\n\n <div class=\"sd-tree__content\" [class.sd-tree__content--custom]=\"_resolvedItemTemplate\" [attr.data-autoid]=\"node.autoIds.label\">\n @if (_resolvedItemTemplate) {\n <ng-container *ngTemplateOutlet=\"_resolvedItemTemplate; context: node.context\" />\n } @else {\n <span class=\"sd-tree__label\">{{ node.label }}</span>\n }\n </div>\n </div>\n\n @if (node.commands.length) {\n <button\n type=\"button\"\n class=\"sd-tree__command-trigger\"\n mat-icon-button\n [matMenuTriggerFor]=\"commandMenu\"\n [attr.data-autoid]=\"node.autoIds.command\"\n (click)=\"$event.stopPropagation()\">\n <sd-icon class=\"c-icon\" name=\"more_vert\"></sd-icon>\n </button>\n <mat-menu #commandMenu=\"matMenu\" class=\"sd-tree__command-menu\">\n @for (command of node.commands; track command.key) {\n <button\n type=\"button\"\n class=\"sd-tree__command-menu-item\"\n mat-menu-item\n [disabled]=\"command.disabled\"\n [attr.data-autoid]=\"command.autoId\"\n (click)=\"command.command.click(node.data)\">\n <span class=\"sd-tree__command-menu-content\">\n <sd-icon class=\"c-icon sd-tree__command-menu-icon\"\n [class.sd-tree__command-menu-icon--default]=\"command.defaultColor\"\n [color]=\"command.color\"\n [fontSet]=\"command.fontSet\" [name]=\"command.icon\"></sd-icon>\n <span class=\"sd-tree__command-title\">{{ command.title }}</span>\n </span>\n </button>\n }\n </mat-menu>\n }\n </div>\n }\n</div>\n\n<sd-quick-action [opened]=\"_selectedCount > 0\">\n <div class=\"d-flex align-items-center\" sdMessage>\n <div class=\"c-bg-length\">\n <span class=\"c-length sd-tree__qa-count\">{{ _selectedCount }}</span>\n </div>\n <div class=\"c-message\">\n {{ _selectionMessage }}\n </div>\n </div>\n\n <div class=\"d-flex align-items-center mr-8 sd-tree__qa-actions\" sdAction>\n @for (actionView of _selectionActionViews; track $index) {\n <sd-button\n [autoId]=\"actionView.autoId\"\n class=\"ml-4\"\n [tooltip]=\"actionView.action.tooltip\"\n [prefixIcon]=\"actionView.action.icon\"\n [color]=\"actionView.action.color || 'primary'\"\n [type]=\"actionView.action.type || 'light'\"\n [fontSet]=\"actionView.action.fontSet\"\n [title]=\"actionView.action.title\"\n (click)=\"onSelectionAction(actionView.action)\" />\n }\n <sd-button\n [autoId]=\"clearSelectionAutoId()\"\n class=\"ml-4\"\n prefixIcon=\"close\"\n color=\"secondary\"\n type=\"outline\"\n width=\"35px\"\n (click)=\"clearSelection()\" />\n </div>\n</sd-quick-action>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -845,7 +845,8 @@ class SdUploadFile {
845
845
  }
846
846
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SdUploadFile, decorators: [{
847
847
  type: Component,
848
- args: [{ selector: 'sd-upload-file', changeDetection: ChangeDetectionStrategy.OnPush, imports: [SdIcon,
848
+ args: [{ selector: 'sd-upload-file', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
849
+ SdIcon,
849
850
  CommonModule,
850
851
  MatButtonModule,
851
852
  DragDropModule,