{"version":3,"file":"ng-doc-ui-kit-components-data-list-group.mjs","sources":["../../../../libs/ui-kit/components/data-list-group/data-list-group.component.ts","../../../../libs/ui-kit/components/data-list-group/data-list-group.component.html","../../../../libs/ui-kit/components/data-list-group/ng-doc-ui-kit-components-data-list-group.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { NgDocDataListComponent } from '@ng-doc/ui-kit/components/data-list';\nimport { NgDocListComponent } from '@ng-doc/ui-kit/components/list';\nimport { NgDocOptionComponent } from '@ng-doc/ui-kit/components/option';\nimport {\n  NgDocOptionGroupComponent,\n  NgDocOptionGroupHeaderDirective,\n} from '@ng-doc/ui-kit/components/option-group';\nimport { NgDocTextComponent } from '@ng-doc/ui-kit/components/text';\nimport { NG_DOC_DEFAULT_STRINGIFY } from '@ng-doc/ui-kit/constants';\nimport { ngDocMakePure } from '@ng-doc/ui-kit/decorators';\nimport { NgDocContextWithImplicit } from '@ng-doc/ui-kit/interfaces';\nimport { NgDocContent, NgDocGroupFn } from '@ng-doc/ui-kit/types';\nimport { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';\n\n@Component({\n  selector: 'ng-doc-data-list-group',\n  templateUrl: './data-list-group.component.html',\n  styleUrls: ['./data-list-group.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    NgDocListComponent,\n    NgDocOptionGroupComponent,\n    PolymorpheusModule,\n    NgDocOptionGroupHeaderDirective,\n    NgDocOptionComponent,\n    NgDocTextComponent,\n  ],\n})\nexport class NgDocDataListGroupComponent<T, G>\n  extends NgDocDataListComponent<T>\n  implements OnChanges\n{\n  @Input()\n  itemGroupFn?: NgDocGroupFn<T, G>;\n\n  @Input()\n  groupContent: NgDocContent<NgDocContextWithImplicit<G>> = ({\n    $implicit,\n  }: NgDocContextWithImplicit<G>) => NG_DOC_DEFAULT_STRINGIFY($implicit);\n\n  groups: Map<G, T[]> = new Map();\n\n  groupItems: G[] = [];\n\n  @ngDocMakePure\n  getGroupContext($implicit: G): NgDocContextWithImplicit<G> {\n    return { $implicit };\n  }\n\n  ngOnChanges({ items, itemGroupFn }: SimpleChanges): void {\n    if (items || itemGroupFn) {\n      this.groups = new Map<G, T[]>();\n\n      this.items?.forEach((item: T) => {\n        if (this.itemGroupFn) {\n          const itemGroup: G = this.itemGroupFn(item);\n          const itemsList: T[] = this.groups.get(itemGroup) || [];\n          itemsList.push(item);\n\n          this.groups.set(this.itemGroupFn(item), itemsList);\n        }\n      });\n\n      this.groupItems = Array.from(this.groups.keys());\n    }\n  }\n}\n","<ng-doc-list>\n  @if (items && items.length) {\n    @for (group of groupItems; track group) {\n      <ng-doc-option-group>\n        <span\n          *polymorpheusOutlet=\"groupContent as groupText; context: getGroupContext(group)\"\n          ngDocOptionGroupHeader>\n          {{ groupText }}\n        </span>\n        @for (item of groups.get(group); track trackByFn($index, item)) {\n          <ng-doc-option [value]=\"defineValueFn(item)\" [disabled]=\"itemDisabledFn(item)\">\n            <ng-container *polymorpheusOutlet=\"itemContent as text; context: getContext(item)\">\n              {{ text }}\n            </ng-container>\n          </ng-doc-option>\n        }\n      </ng-doc-option-group>\n    }\n  } @else {\n    <div class=\"ng-doc-empty-message\" ng-doc-text>\n      @if (emptyContent) {\n        <ng-container *polymorpheusOutlet=\"emptyContent as text\"> {{ text }} </ng-container>\n      }\n    </div>\n  }\n</ng-doc-list>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}