@angular/cdk-experimental 21.0.0-next.5 → 21.0.0-next.8

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 (65) hide show
  1. package/fesm2022/{polyfill.mjs → _polyfill-chunk.mjs} +1 -1
  2. package/fesm2022/_polyfill-chunk.mjs.map +1 -0
  3. package/fesm2022/cdk-experimental.mjs +1 -1
  4. package/fesm2022/cdk-experimental.mjs.map +1 -1
  5. package/fesm2022/column-resize.mjs +1 -1
  6. package/fesm2022/popover-edit.mjs +1 -1
  7. package/package.json +10 -45
  8. package/{column-resize/index.d.ts → types/column-resize.d.ts} +37 -37
  9. package/{popover-edit/index.d.ts → types/popover-edit.d.ts} +30 -30
  10. package/{scrolling/index.d.ts → types/scrolling.d.ts} +6 -6
  11. package/{selection/index.d.ts → types/selection.d.ts} +14 -14
  12. package/{table-scroll-container/index.d.ts → types/table-scroll-container.d.ts} +6 -6
  13. package/accordion/index.d.ts +0 -94
  14. package/accordion.d.d.ts +0 -89
  15. package/combobox/index.d.ts +0 -94
  16. package/deferred-content/index.d.ts +0 -37
  17. package/expansion.d.d.ts +0 -71
  18. package/fesm2022/accordion.mjs +0 -194
  19. package/fesm2022/accordion.mjs.map +0 -1
  20. package/fesm2022/accordion2.mjs +0 -152
  21. package/fesm2022/accordion2.mjs.map +0 -1
  22. package/fesm2022/combobox.mjs +0 -340
  23. package/fesm2022/combobox.mjs.map +0 -1
  24. package/fesm2022/deferred-content.mjs +0 -59
  25. package/fesm2022/deferred-content.mjs.map +0 -1
  26. package/fesm2022/expansion.mjs +0 -87
  27. package/fesm2022/expansion.mjs.map +0 -1
  28. package/fesm2022/list-navigation.mjs +0 -261
  29. package/fesm2022/list-navigation.mjs.map +0 -1
  30. package/fesm2022/list.mjs +0 -370
  31. package/fesm2022/list.mjs.map +0 -1
  32. package/fesm2022/listbox.mjs +0 -163
  33. package/fesm2022/listbox.mjs.map +0 -1
  34. package/fesm2022/option.mjs +0 -231
  35. package/fesm2022/option.mjs.map +0 -1
  36. package/fesm2022/polyfill.mjs.map +0 -1
  37. package/fesm2022/radio-group.mjs +0 -205
  38. package/fesm2022/radio-group.mjs.map +0 -1
  39. package/fesm2022/radio-group2.mjs +0 -143
  40. package/fesm2022/radio-group2.mjs.map +0 -1
  41. package/fesm2022/tabs.mjs +0 -302
  42. package/fesm2022/tabs.mjs.map +0 -1
  43. package/fesm2022/tabs2.mjs +0 -211
  44. package/fesm2022/tabs2.mjs.map +0 -1
  45. package/fesm2022/toolbar.mjs +0 -171
  46. package/fesm2022/toolbar.mjs.map +0 -1
  47. package/fesm2022/toolbar2.mjs +0 -224
  48. package/fesm2022/toolbar2.mjs.map +0 -1
  49. package/fesm2022/tree.mjs +0 -620
  50. package/fesm2022/tree.mjs.map +0 -1
  51. package/fesm2022/ui-patterns.mjs +0 -21
  52. package/fesm2022/ui-patterns.mjs.map +0 -1
  53. package/list.d.d.ts +0 -207
  54. package/listbox/index.d.ts +0 -89
  55. package/listbox.d.d.ts +0 -101
  56. package/pointer-event-manager.d.d.ts +0 -190
  57. package/radio-group/index.d.ts +0 -87
  58. package/radio-group.d.d.ts +0 -80
  59. package/tabs/index.d.ts +0 -159
  60. package/tabs.d.d.ts +0 -137
  61. package/toolbar/index.d.ts +0 -91
  62. package/toolbar.d.d.ts +0 -136
  63. package/tree/index.d.ts +0 -275
  64. package/ui-patterns/index.d.ts +0 -9
  65. /package/{index.d.ts → types/cdk-experimental.d.ts} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"accordion.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/cdk-experimental/accordion/accordion.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n Directive,\n input,\n ElementRef,\n inject,\n contentChildren,\n afterRenderEffect,\n signal,\n model,\n booleanAttribute,\n computed,\n WritableSignal,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {DeferredContent, DeferredContentAware} from '@angular/cdk-experimental/deferred-content';\nimport {\n AccordionGroupPattern,\n AccordionPanelPattern,\n AccordionTriggerPattern,\n} from '../ui-patterns/';\n\n/**\n * Represents the content panel of an accordion item. It is controlled by an\n * associated `CdkAccordionTrigger`.\n */\n@Directive({\n selector: '[cdkAccordionPanel]',\n exportAs: 'cdkAccordionPanel',\n hostDirectives: [\n {\n directive: DeferredContentAware,\n inputs: ['preserveContent'],\n },\n ],\n host: {\n 'class': 'cdk-accordion-panel',\n 'role': 'region',\n '[attr.id]': 'pattern.id()',\n '[attr.aria-labelledby]': 'pattern.accordionTrigger()?.id()',\n '[attr.inert]': 'pattern.hidden() ? true : null',\n },\n})\nexport class CdkAccordionPanel {\n /** The DeferredContentAware host directive. */\n private readonly _deferredContentAware = inject(DeferredContentAware);\n\n /** A global unique identifier for the panel. */\n private readonly _id = inject(_IdGenerator).getId('cdk-accordion-trigger-');\n\n /** A local unique identifier for the panel, used to match with its trigger's value. */\n value = input.required<string>();\n\n /** The parent accordion trigger pattern that controls this panel. This is set by CdkAccordionGroup. */\n readonly accordionTrigger: WritableSignal<AccordionTriggerPattern | undefined> =\n signal(undefined);\n\n /** The UI pattern instance for this panel. */\n readonly pattern: AccordionPanelPattern = new AccordionPanelPattern({\n id: () => this._id,\n value: this.value,\n accordionTrigger: () => this.accordionTrigger(),\n });\n\n constructor() {\n // Connect the panel's hidden state to the DeferredContentAware's visibility.\n afterRenderEffect(() => {\n this._deferredContentAware.contentVisible.set(!this.pattern.hidden());\n });\n }\n}\n\n/**\n * Represents the trigger button for an accordion item. It controls the expansion\n * state of an associated `CdkAccordionPanel`.\n */\n@Directive({\n selector: '[cdkAccordionTrigger]',\n exportAs: 'cdkAccordionTrigger',\n host: {\n 'class': 'cdk-accordion-trigger',\n '[class.cdk-active]': 'pattern.active()',\n 'role': 'button',\n '[id]': 'pattern.id()',\n '[attr.aria-expanded]': 'pattern.expanded()',\n '[attr.aria-controls]': 'pattern.controls()',\n '[attr.aria-disabled]': 'pattern.disabled()',\n '[attr.disabled]': 'hardDisabled() ? true : null',\n '[attr.tabindex]': 'pattern.tabindex()',\n '(keydown)': 'pattern.onKeydown($event)',\n '(pointerdown)': 'pattern.onPointerdown($event)',\n '(focusin)': 'pattern.onFocus($event)',\n },\n})\nexport class CdkAccordionTrigger {\n /** A global unique identifier for the trigger. */\n private readonly _id = inject(_IdGenerator).getId('cdk-accordion-trigger-');\n\n /** A reference to the trigger element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** The parent CdkAccordionGroup. */\n private readonly _accordionGroup = inject(CdkAccordionGroup);\n\n /** A local unique identifier for the trigger, used to match with its panel's value. */\n value = input.required<string>();\n\n /** Whether the trigger is disabled. */\n disabled = input(false, {transform: booleanAttribute});\n\n /**\n * Whether this trigger is completely inaccessible.\n *\n * TODO(ok7sai): Consider move this to UI patterns.\n */\n readonly hardDisabled = computed(() => this.pattern.disabled() && this.pattern.tabindex() < 0);\n\n /** The accordion panel pattern controlled by this trigger. This is set by CdkAccordionGroup. */\n readonly accordionPanel: WritableSignal<AccordionPanelPattern | undefined> = signal(undefined);\n\n /** The UI pattern instance for this trigger. */\n readonly pattern: AccordionTriggerPattern = new AccordionTriggerPattern({\n id: () => this._id,\n value: this.value,\n disabled: this.disabled,\n element: () => this._elementRef.nativeElement,\n accordionGroup: computed(() => this._accordionGroup.pattern),\n accordionPanel: this.accordionPanel,\n });\n}\n\n/**\n * Container for a group of accordion items. It manages the overall state and\n * interactions of the accordion, such as keyboard navigation and expansion mode.\n */\n@Directive({\n selector: '[cdkAccordionGroup]',\n exportAs: 'cdkAccordionGroup',\n host: {\n 'class': 'cdk-accordion-group',\n },\n})\nexport class CdkAccordionGroup {\n /** A reference to the group element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** The CdkAccordionTriggers nested inside this group. */\n protected readonly _triggers = contentChildren(CdkAccordionTrigger, {descendants: true});\n\n /** The CdkAccordionPanels nested inside this group. */\n protected readonly _panels = contentChildren(CdkAccordionPanel, {descendants: true});\n\n /** The text direction (ltr or rtl). */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** Whether the entire accordion group is disabled. */\n disabled = input(false, {transform: booleanAttribute});\n\n /** Whether multiple accordion items can be expanded simultaneously. */\n multiExpandable = input(true, {transform: booleanAttribute});\n\n /** The values of the current selected/expanded accordions. */\n value = model<string[]>([]);\n\n /** Whether disabled items should be skipped during keyboard navigation. */\n skipDisabled = input(true, {transform: booleanAttribute});\n\n /** Whether keyboard navigation should wrap around from the last item to the first, and vice-versa. */\n wrap = input(false, {transform: booleanAttribute});\n\n /** The UI pattern instance for this accordion group. */\n readonly pattern: AccordionGroupPattern = new AccordionGroupPattern({\n ...this,\n // TODO(ok7sai): Consider making `activeItem` an internal state in the pattern and call\n // `setDefaultState` in the CDK.\n activeItem: signal(undefined),\n items: computed(() => this._triggers().map(trigger => trigger.pattern)),\n expandedIds: this.value,\n // TODO(ok7sai): Investigate whether an accordion should support horizontal mode.\n orientation: () => 'vertical',\n element: () => this._elementRef.nativeElement,\n });\n\n constructor() {\n // Effect to link triggers with their corresponding panels and update the group's items.\n afterRenderEffect(() => {\n const triggers = this._triggers();\n const panels = this._panels();\n\n for (const trigger of triggers) {\n const panel = panels.find(p => p.value() === trigger.value());\n trigger.accordionPanel.set(panel?.pattern);\n if (panel) {\n panel.accordionTrigger.set(trigger.pattern);\n }\n }\n });\n }\n}\n\n/**\n * A structural directive that marks the `ng-template` to be used as the content\n * for a `CdkAccordionPanel`. This content can be lazily loaded.\n */\n@Directive({\n selector: 'ng-template[cdkAccordionContent]',\n hostDirectives: [DeferredContent],\n})\nexport class CdkAccordionContent {}\n"],"names":[],"mappings":";;;;;;;;;;AA8BA;;;AAGG;MAkBU,iBAAiB,CAAA;;AAEX,IAAA,qBAAqB,GAAG,MAAM,CAAC,oBAAoB,CAAC;;IAGpD,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC;;AAG3E,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAU;;AAGvB,IAAA,gBAAgB,GACvB,MAAM,CAAC,SAAS,4DAAC;;IAGV,OAAO,GAA0B,IAAI,qBAAqB,CAAC;AAClE,QAAA,EAAE,EAAE,MAAM,IAAI,CAAC,GAAG;QAClB,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,QAAA,gBAAgB,EAAE,MAAM,IAAI,CAAC,gBAAgB,EAAE;AAChD,KAAA,CAAC;AAEF,IAAA,WAAA,GAAA;;QAEE,iBAAiB,CAAC,MAAK;AACrB,YAAA,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;AACvE,SAAC,CAAC;;8GAzBO,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,kCAAA,EAAA,YAAA,EAAA,gCAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;kGAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAjB7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,cAAc,EAAE;AACd,wBAAA;AACE,4BAAA,SAAS,EAAE,oBAAoB;4BAC/B,MAAM,EAAE,CAAC,iBAAiB,CAAC;AAC5B,yBAAA;AACF,qBAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,qBAAqB;AAC9B,wBAAA,MAAM,EAAE,QAAQ;AAChB,wBAAA,WAAW,EAAE,cAAc;AAC3B,wBAAA,wBAAwB,EAAE,kCAAkC;AAC5D,wBAAA,cAAc,EAAE,gCAAgC;AACjD,qBAAA;AACF,iBAAA;;AA8BD;;;AAGG;MAmBU,mBAAmB,CAAA;;IAEb,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC;;AAG1D,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;;AAGhC,IAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;;AAG5D,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAU;;AAGhC,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,4CAAG,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA5B,EAAC,SAAS,EAAE,gBAAgB,EAAC,GAAC;AAEtD;;;;AAIG;IACM,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAGrF,IAAA,cAAc,GAAsD,MAAM,CAAC,SAAS,0DAAC;;IAGrF,OAAO,GAA4B,IAAI,uBAAuB,CAAC;AACtE,QAAA,EAAE,EAAE,MAAM,IAAI,CAAC,GAAG;QAClB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,OAAO,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa;QAC7C,cAAc,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;QAC5D,cAAc,EAAE,IAAI,CAAC,cAAc;AACpC,KAAA,CAAC;8GAlCS,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,2BAAA,EAAA,aAAA,EAAA,+BAAA,EAAA,SAAA,EAAA,yBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,8BAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;kGAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAlB/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,uBAAuB;AAChC,wBAAA,oBAAoB,EAAE,kBAAkB;AACxC,wBAAA,MAAM,EAAE,QAAQ;AAChB,wBAAA,MAAM,EAAE,cAAc;AACtB,wBAAA,sBAAsB,EAAE,oBAAoB;AAC5C,wBAAA,sBAAsB,EAAE,oBAAoB;AAC5C,wBAAA,sBAAsB,EAAE,oBAAoB;AAC5C,wBAAA,iBAAiB,EAAE,8BAA8B;AACjD,wBAAA,iBAAiB,EAAE,oBAAoB;AACvC,wBAAA,WAAW,EAAE,2BAA2B;AACxC,wBAAA,eAAe,EAAE,+BAA+B;AAChD,wBAAA,WAAW,EAAE,yBAAyB;AACvC,qBAAA;AACF,iBAAA;;AAsCD;;;AAGG;MAQU,iBAAiB,CAAA;;AAEX,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;;AAG9B,IAAA,SAAS,GAAG,eAAe,CAAC,mBAAmB,6CAAG,WAAW,EAAE,IAAI,EAAA,CAAA,GAAA,CAAlB,EAAC,WAAW,EAAE,IAAI,EAAC,GAAC;;AAGrE,IAAA,OAAO,GAAG,eAAe,CAAC,iBAAiB,2CAAG,WAAW,EAAE,IAAI,EAAA,CAAA,GAAA,CAAlB,EAAC,WAAW,EAAE,IAAI,EAAC,GAAC;;AAG3E,IAAA,aAAa,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,WAAW;;AAG3D,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,4CAAG,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA5B,EAAC,SAAS,EAAE,gBAAgB,EAAC,GAAC;;AAGtD,IAAA,eAAe,GAAG,KAAK,CAAC,IAAI,mDAAG,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA5B,EAAC,SAAS,EAAE,gBAAgB,EAAC,GAAC;;AAG5D,IAAA,KAAK,GAAG,KAAK,CAAW,EAAE,iDAAC;;AAG3B,IAAA,YAAY,GAAG,KAAK,CAAC,IAAI,gDAAG,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA5B,EAAC,SAAS,EAAE,gBAAgB,EAAC,GAAC;;AAGzD,IAAA,IAAI,GAAG,KAAK,CAAC,KAAK,wCAAG,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA5B,EAAC,SAAS,EAAE,gBAAgB,EAAC,GAAC;;IAGzC,OAAO,GAA0B,IAAI,qBAAqB,CAAC;AAClE,QAAA,GAAG,IAAI;;;AAGP,QAAA,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC;QAC7B,KAAK,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;QACvE,WAAW,EAAE,IAAI,CAAC,KAAK;;AAEvB,QAAA,WAAW,EAAE,MAAM,UAAU;QAC7B,OAAO,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa;AAC9C,KAAA,CAAC;AAEF,IAAA,WAAA,GAAA;;QAEE,iBAAiB,CAAC,MAAK;AACrB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE;AACjC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE;AAE7B,YAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;gBAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC;gBAC7D,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC;gBAC1C,IAAI,KAAK,EAAE;oBACT,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;;;AAGjD,SAAC,CAAC;;8GAtDO,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAKmB,mBAAmB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAGrB,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;kGARnD,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,qBAAqB;AAC/B,qBAAA;AACF,iBAAA;;AA2DD;;;AAGG;MAKU,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,eAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;kGAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kCAAkC;oBAC5C,cAAc,EAAE,CAAC,eAAe,CAAC;AAClC,iBAAA;;;;;"}
@@ -1,152 +0,0 @@
1
- import { computed } from '@angular/core';
2
- import { ListExpansion, ExpansionControl } from './expansion.mjs';
3
- import { ListFocus, ListNavigation, KeyboardEventManager, PointerEventManager } from './list-navigation.mjs';
4
-
5
- const focusMode = () => 'roving';
6
- /** A pattern controls the nested Accordions. */
7
- class AccordionGroupPattern {
8
- inputs;
9
- /** Controls navigation for the group. */
10
- navigation;
11
- /** Controls focus for the group. */
12
- focusManager;
13
- /** Controls expansion for the group. */
14
- expansionManager;
15
- constructor(inputs) {
16
- this.inputs = inputs;
17
- this.wrap = inputs.wrap;
18
- this.orientation = inputs.orientation;
19
- this.textDirection = inputs.textDirection;
20
- this.activeItem = inputs.activeItem;
21
- this.disabled = inputs.disabled;
22
- this.multiExpandable = inputs.multiExpandable;
23
- this.items = inputs.items;
24
- this.expandedIds = inputs.expandedIds;
25
- this.skipDisabled = inputs.skipDisabled;
26
- this.focusManager = new ListFocus({
27
- ...inputs,
28
- focusMode,
29
- });
30
- this.navigation = new ListNavigation({
31
- ...inputs,
32
- focusMode,
33
- focusManager: this.focusManager,
34
- });
35
- this.expansionManager = new ListExpansion({
36
- ...inputs,
37
- });
38
- }
39
- }
40
- /** A pattern controls the expansion state of an accordion. */
41
- class AccordionTriggerPattern {
42
- inputs;
43
- /** Whether this tab has expandable content. */
44
- expandable;
45
- /** The unique identifier used by the expansion behavior. */
46
- expansionId;
47
- /** Whether an accordion is expanded. */
48
- expanded;
49
- /** Controls the expansion state for the trigger. */
50
- expansionControl;
51
- /** Whether the trigger is active. */
52
- active = computed(() => this.inputs.accordionGroup().activeItem() === this);
53
- /** Id of the accordion panel controlled by the trigger. */
54
- controls = computed(() => this.inputs.accordionPanel()?.id());
55
- /** The tabindex of the trigger. */
56
- tabindex = computed(() => (this.inputs.accordionGroup().focusManager.isFocusable(this) ? 0 : -1));
57
- /** Whether the trigger is disabled. Disabling an accordion group disables all the triggers. */
58
- disabled = computed(() => this.inputs.disabled() || this.inputs.accordionGroup().disabled());
59
- /** The index of the trigger within its accordion group. */
60
- index = computed(() => this.inputs.accordionGroup().items().indexOf(this));
61
- constructor(inputs) {
62
- this.inputs = inputs;
63
- this.id = inputs.id;
64
- this.element = inputs.element;
65
- this.value = inputs.value;
66
- this.accordionGroup = inputs.accordionGroup;
67
- this.accordionPanel = inputs.accordionPanel;
68
- this.expansionControl = new ExpansionControl({
69
- ...inputs,
70
- expansionId: inputs.value,
71
- expandable: () => true,
72
- expansionManager: inputs.accordionGroup().expansionManager,
73
- });
74
- this.expandable = this.expansionControl.isExpandable;
75
- this.expansionId = this.expansionControl.expansionId;
76
- this.expanded = this.expansionControl.isExpanded;
77
- }
78
- /** The key used to navigate to the previous accordion trigger. */
79
- prevKey = computed(() => {
80
- if (this.inputs.accordionGroup().orientation() === 'vertical') {
81
- return 'ArrowUp';
82
- }
83
- return this.inputs.accordionGroup().textDirection() === 'rtl' ? 'ArrowRight' : 'ArrowLeft';
84
- });
85
- /** The key used to navigate to the next accordion trigger. */
86
- nextKey = computed(() => {
87
- if (this.inputs.accordionGroup().orientation() === 'vertical') {
88
- return 'ArrowDown';
89
- }
90
- return this.inputs.accordionGroup().textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight';
91
- });
92
- /** The keydown event manager for the accordion trigger. */
93
- keydown = computed(() => {
94
- return new KeyboardEventManager()
95
- .on(this.prevKey, () => this.accordionGroup().navigation.prev())
96
- .on(this.nextKey, () => this.accordionGroup().navigation.next())
97
- .on('Home', () => this.accordionGroup().navigation.first())
98
- .on('End', () => this.accordionGroup().navigation.last())
99
- .on(' ', () => this.expansionControl.toggle())
100
- .on('Enter', () => this.expansionControl.toggle());
101
- });
102
- /** The pointerdown event manager for the accordion trigger. */
103
- pointerdown = computed(() => {
104
- return new PointerEventManager().on(e => {
105
- const item = this._getItem(e);
106
- if (item) {
107
- this.accordionGroup().navigation.goto(item);
108
- this.expansionControl.toggle();
109
- }
110
- });
111
- });
112
- /** Handles keydown events on the trigger, delegating to the group if not disabled. */
113
- onKeydown(event) {
114
- this.keydown().handle(event);
115
- }
116
- /** Handles pointerdown events on the trigger, delegating to the group if not disabled. */
117
- onPointerdown(event) {
118
- this.pointerdown().handle(event);
119
- }
120
- /** Handles focus events on the trigger. This ensures the tabbing changes the active index. */
121
- onFocus(event) {
122
- const item = this._getItem(event);
123
- if (item && this.inputs.accordionGroup().focusManager.isFocusable(item)) {
124
- this.accordionGroup().focusManager.focus(item);
125
- }
126
- }
127
- _getItem(e) {
128
- if (!(e.target instanceof HTMLElement)) {
129
- return;
130
- }
131
- const element = e.target.closest('[role="button"]');
132
- return this.accordionGroup()
133
- .items()
134
- .find(i => i.element() === element);
135
- }
136
- }
137
- /** Represents an accordion panel. */
138
- class AccordionPanelPattern {
139
- inputs;
140
- /** Whether the accordion panel is hidden. True if the associated trigger is not expanded. */
141
- hidden;
142
- constructor(inputs) {
143
- this.inputs = inputs;
144
- this.id = inputs.id;
145
- this.value = inputs.value;
146
- this.accordionTrigger = inputs.accordionTrigger;
147
- this.hidden = computed(() => inputs.accordionTrigger()?.expanded() === false);
148
- }
149
- }
150
-
151
- export { AccordionGroupPattern, AccordionPanelPattern, AccordionTriggerPattern };
152
- //# sourceMappingURL=accordion2.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"accordion2.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/cdk-experimental/ui-patterns/accordion/accordion.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {computed} from '@angular/core';\nimport {KeyboardEventManager, PointerEventManager} from '../behaviors/event-manager';\nimport {\n ExpansionItem,\n ExpansionControl,\n ListExpansion,\n ListExpansionInputs,\n} from '../behaviors/expansion/expansion';\nimport {ListFocus, ListFocusInputs, ListFocusItem} from '../behaviors/list-focus/list-focus';\nimport {\n ListNavigation,\n ListNavigationInputs,\n ListNavigationItem,\n} from '../behaviors/list-navigation/list-navigation';\nimport {SignalLike} from '../behaviors/signal-like/signal-like';\n\n/** Inputs of the AccordionGroupPattern. */\nexport type AccordionGroupInputs = Omit<\n ListNavigationInputs<AccordionTriggerPattern> &\n ListFocusInputs<AccordionTriggerPattern> &\n Omit<ListExpansionInputs, 'items'>,\n 'focusMode'\n>;\n\nconst focusMode = () => 'roving' as const;\n\nexport interface AccordionGroupPattern extends AccordionGroupInputs {}\n/** A pattern controls the nested Accordions. */\nexport class AccordionGroupPattern {\n /** Controls navigation for the group. */\n navigation: ListNavigation<AccordionTriggerPattern>;\n\n /** Controls focus for the group. */\n focusManager: ListFocus<AccordionTriggerPattern>;\n\n /** Controls expansion for the group. */\n expansionManager: ListExpansion;\n\n constructor(readonly inputs: AccordionGroupInputs) {\n this.wrap = inputs.wrap;\n this.orientation = inputs.orientation;\n this.textDirection = inputs.textDirection;\n this.activeItem = inputs.activeItem;\n this.disabled = inputs.disabled;\n this.multiExpandable = inputs.multiExpandable;\n this.items = inputs.items;\n this.expandedIds = inputs.expandedIds;\n this.skipDisabled = inputs.skipDisabled;\n this.focusManager = new ListFocus({\n ...inputs,\n focusMode,\n });\n this.navigation = new ListNavigation({\n ...inputs,\n focusMode,\n focusManager: this.focusManager,\n });\n this.expansionManager = new ListExpansion({\n ...inputs,\n });\n }\n}\n\n/** Inputs for the AccordionTriggerPattern. */\nexport type AccordionTriggerInputs = Omit<ListNavigationItem & ListFocusItem, 'index'> &\n Omit<ExpansionItem, 'expansionId' | 'expandable'> & {\n /** A local unique identifier for the trigger. */\n value: SignalLike<string>;\n\n /** The parent accordion group that controls this trigger. */\n accordionGroup: SignalLike<AccordionGroupPattern>;\n\n /** The accordion panel controlled by this trigger. */\n accordionPanel: SignalLike<AccordionPanelPattern | undefined>;\n };\n\nexport interface AccordionTriggerPattern extends AccordionTriggerInputs {}\n/** A pattern controls the expansion state of an accordion. */\nexport class AccordionTriggerPattern {\n /** Whether this tab has expandable content. */\n expandable: SignalLike<boolean>;\n\n /** The unique identifier used by the expansion behavior. */\n expansionId: SignalLike<string>;\n\n /** Whether an accordion is expanded. */\n expanded: SignalLike<boolean>;\n\n /** Controls the expansion state for the trigger. */\n expansionControl: ExpansionControl;\n\n /** Whether the trigger is active. */\n active = computed(() => this.inputs.accordionGroup().activeItem() === this);\n\n /** Id of the accordion panel controlled by the trigger. */\n controls = computed(() => this.inputs.accordionPanel()?.id());\n\n /** The tabindex of the trigger. */\n tabindex = computed(() => (this.inputs.accordionGroup().focusManager.isFocusable(this) ? 0 : -1));\n\n /** Whether the trigger is disabled. Disabling an accordion group disables all the triggers. */\n disabled = computed(() => this.inputs.disabled() || this.inputs.accordionGroup().disabled());\n\n /** The index of the trigger within its accordion group. */\n index = computed(() => this.inputs.accordionGroup().items().indexOf(this));\n\n constructor(readonly inputs: AccordionTriggerInputs) {\n this.id = inputs.id;\n this.element = inputs.element;\n this.value = inputs.value;\n this.accordionGroup = inputs.accordionGroup;\n this.accordionPanel = inputs.accordionPanel;\n this.expansionControl = new ExpansionControl({\n ...inputs,\n expansionId: inputs.value,\n expandable: () => true,\n expansionManager: inputs.accordionGroup().expansionManager,\n });\n this.expandable = this.expansionControl.isExpandable;\n this.expansionId = this.expansionControl.expansionId;\n this.expanded = this.expansionControl.isExpanded;\n }\n\n /** The key used to navigate to the previous accordion trigger. */\n prevKey = computed(() => {\n if (this.inputs.accordionGroup().orientation() === 'vertical') {\n return 'ArrowUp';\n }\n return this.inputs.accordionGroup().textDirection() === 'rtl' ? 'ArrowRight' : 'ArrowLeft';\n });\n\n /** The key used to navigate to the next accordion trigger. */\n nextKey = computed(() => {\n if (this.inputs.accordionGroup().orientation() === 'vertical') {\n return 'ArrowDown';\n }\n return this.inputs.accordionGroup().textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n });\n\n /** The keydown event manager for the accordion trigger. */\n keydown = computed(() => {\n return new KeyboardEventManager()\n .on(this.prevKey, () => this.accordionGroup().navigation.prev())\n .on(this.nextKey, () => this.accordionGroup().navigation.next())\n .on('Home', () => this.accordionGroup().navigation.first())\n .on('End', () => this.accordionGroup().navigation.last())\n .on(' ', () => this.expansionControl.toggle())\n .on('Enter', () => this.expansionControl.toggle());\n });\n\n /** The pointerdown event manager for the accordion trigger. */\n pointerdown = computed(() => {\n return new PointerEventManager().on(e => {\n const item = this._getItem(e);\n\n if (item) {\n this.accordionGroup().navigation.goto(item);\n this.expansionControl.toggle();\n }\n });\n });\n\n /** Handles keydown events on the trigger, delegating to the group if not disabled. */\n onKeydown(event: KeyboardEvent): void {\n this.keydown().handle(event);\n }\n\n /** Handles pointerdown events on the trigger, delegating to the group if not disabled. */\n onPointerdown(event: PointerEvent): void {\n this.pointerdown().handle(event);\n }\n\n /** Handles focus events on the trigger. This ensures the tabbing changes the active index. */\n onFocus(event: FocusEvent): void {\n const item = this._getItem(event);\n\n if (item && this.inputs.accordionGroup().focusManager.isFocusable(item)) {\n this.accordionGroup().focusManager.focus(item);\n }\n }\n\n private _getItem(e: Event) {\n if (!(e.target instanceof HTMLElement)) {\n return;\n }\n\n const element = e.target.closest('[role=\"button\"]');\n return this.accordionGroup()\n .items()\n .find(i => i.element() === element);\n }\n}\n\n/** Represents the required inputs for the AccordionPanelPattern. */\nexport interface AccordionPanelInputs {\n /** A global unique identifier for the panel. */\n id: SignalLike<string>;\n\n /** A local unique identifier for the panel, matching its trigger's value. */\n value: SignalLike<string>;\n\n /** The parent accordion trigger that controls this panel. */\n accordionTrigger: SignalLike<AccordionTriggerPattern | undefined>;\n}\n\nexport interface AccordionPanelPattern extends AccordionPanelInputs {}\n/** Represents an accordion panel. */\nexport class AccordionPanelPattern {\n /** Whether the accordion panel is hidden. True if the associated trigger is not expanded. */\n hidden: SignalLike<boolean>;\n\n constructor(readonly inputs: AccordionPanelInputs) {\n this.id = inputs.id;\n this.value = inputs.value;\n this.accordionTrigger = inputs.accordionTrigger;\n this.hidden = computed(() => inputs.accordionTrigger()?.expanded() === false);\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,340 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, HOST_TAG_NAME, ElementRef, ViewContainerRef, Injector, DOCUMENT, ChangeDetectorRef, EventEmitter, Directive, Input, Output, NgModule } from '@angular/core';
3
- import { createOverlayRef, OverlayConfig, createBlockScrollStrategy, createFlexibleConnectedPositionStrategy, OverlayModule } from '@angular/cdk/overlay';
4
- import { Directionality } from '@angular/cdk/bidi';
5
- import { coerceBooleanProperty, coerceArray } from '@angular/cdk/coercion';
6
- import { DOWN_ARROW, ENTER, ESCAPE, TAB } from '@angular/cdk/keycodes';
7
- import { _getEventTarget } from '@angular/cdk/platform';
8
- import { TemplatePortal } from '@angular/cdk/portal';
9
- import { _IdGenerator } from '@angular/cdk/a11y';
10
-
11
- const allowedOpenActions = ['focus', 'click', 'downKey', 'toggle'];
12
- const CDK_COMBOBOX = new InjectionToken('CDK_COMBOBOX');
13
- class CdkCombobox {
14
- _tagName = inject(HOST_TAG_NAME);
15
- _elementRef = inject(ElementRef);
16
- _viewContainerRef = inject(ViewContainerRef);
17
- _injector = inject(Injector);
18
- _doc = inject(DOCUMENT);
19
- _directionality = inject(Directionality, { optional: true });
20
- _changeDetectorRef = inject(ChangeDetectorRef);
21
- _overlayRef;
22
- _panelPortal;
23
- _panelTemplateRef;
24
- value;
25
- get disabled() {
26
- return this._disabled;
27
- }
28
- set disabled(value) {
29
- this._disabled = coerceBooleanProperty(value);
30
- }
31
- _disabled = false;
32
- get openActions() {
33
- return this._openActions;
34
- }
35
- set openActions(action) {
36
- this._openActions = this._coerceOpenActionProperty(action);
37
- }
38
- _openActions = ['click'];
39
- /** Whether the textContent is automatically updated upon change of the combobox value. */
40
- get autoSetText() {
41
- return this._autoSetText;
42
- }
43
- set autoSetText(value) {
44
- this._autoSetText = coerceBooleanProperty(value);
45
- }
46
- _autoSetText = true;
47
- opened = new EventEmitter();
48
- closed = new EventEmitter();
49
- panelValueChanged = new EventEmitter();
50
- contentId = '';
51
- contentType;
52
- ngOnDestroy() {
53
- if (this._overlayRef) {
54
- this._overlayRef.dispose();
55
- }
56
- this.opened.complete();
57
- this.closed.complete();
58
- this.panelValueChanged.complete();
59
- }
60
- _keydown(event) {
61
- const { keyCode } = event;
62
- if (keyCode === DOWN_ARROW) {
63
- if (this.isOpen()) {
64
- // TODO: instead of using a focus function, potentially use cdk/a11y focus trapping
65
- this._doc.getElementById(this.contentId)?.focus();
66
- }
67
- else if (this._openActions.indexOf('downKey') !== -1) {
68
- this.open();
69
- }
70
- }
71
- else if (keyCode === ENTER) {
72
- if (this._openActions.indexOf('toggle') !== -1) {
73
- this.toggle();
74
- }
75
- else if (this._openActions.indexOf('click') !== -1) {
76
- this.open();
77
- }
78
- }
79
- else if (keyCode === ESCAPE) {
80
- event.preventDefault();
81
- this.close();
82
- }
83
- else if (keyCode === TAB) {
84
- this.close();
85
- }
86
- }
87
- /** Handles click or focus interactions. */
88
- _handleInteractions(interaction) {
89
- if (interaction === 'click') {
90
- if (this._openActions.indexOf('toggle') !== -1) {
91
- this.toggle();
92
- }
93
- else if (this._openActions.indexOf('click') !== -1) {
94
- this.open();
95
- }
96
- }
97
- else if (interaction === 'focus') {
98
- if (this._openActions.indexOf('focus') !== -1) {
99
- this.open();
100
- }
101
- }
102
- }
103
- /** Given a click in the document, determines if the click was inside a combobox. */
104
- _attemptClose(event) {
105
- if (this.isOpen()) {
106
- let target = _getEventTarget(event);
107
- while (target instanceof Element) {
108
- if (target.className.indexOf('cdk-combobox') !== -1) {
109
- return;
110
- }
111
- target = target.parentElement;
112
- }
113
- }
114
- this.close();
115
- }
116
- /** Toggles the open state of the panel. */
117
- toggle() {
118
- if (this.hasPanel()) {
119
- this.isOpen() ? this.close() : this.open();
120
- }
121
- }
122
- /** If the combobox is closed and not disabled, opens the panel. */
123
- open() {
124
- if (!this.isOpen() && !this.disabled) {
125
- this.opened.next();
126
- this._overlayRef =
127
- this._overlayRef || createOverlayRef(this._injector, this._getOverlayConfig());
128
- this._overlayRef.attach(this._getPanelContent());
129
- this._changeDetectorRef.markForCheck();
130
- if (!this._isTextTrigger()) {
131
- // TODO: instead of using a focus function, potentially use cdk/a11y focus trapping
132
- this._doc.getElementById(this.contentId)?.focus();
133
- }
134
- }
135
- }
136
- /** If the combobox is open and not disabled, closes the panel. */
137
- close() {
138
- if (this.isOpen() && !this.disabled) {
139
- this.closed.next();
140
- this._overlayRef.detach();
141
- this._changeDetectorRef.markForCheck();
142
- }
143
- }
144
- /** Returns true if panel is currently opened. */
145
- isOpen() {
146
- return this._overlayRef ? this._overlayRef.hasAttached() : false;
147
- }
148
- /** Returns true if combobox has a child panel. */
149
- hasPanel() {
150
- return !!this._panelTemplateRef;
151
- }
152
- _getTabIndex() {
153
- return this.disabled ? null : '0';
154
- }
155
- _setComboboxValue(value) {
156
- const valueChanged = this.value !== value;
157
- this.value = value;
158
- if (valueChanged) {
159
- this.panelValueChanged.emit(coerceArray(value));
160
- if (this._autoSetText) {
161
- this._setTextContent(value);
162
- }
163
- }
164
- }
165
- updateAndClose(value) {
166
- this._setComboboxValue(value);
167
- this.close();
168
- }
169
- _setTextContent(content) {
170
- const contentArray = coerceArray(content);
171
- this._elementRef.nativeElement.textContent = contentArray.join(' ');
172
- }
173
- _isTextTrigger() {
174
- // TODO: Should check if the trigger is contenteditable.
175
- const tagName = this._tagName.toLowerCase();
176
- return tagName === 'input' || tagName === 'textarea';
177
- }
178
- _getOverlayConfig() {
179
- return new OverlayConfig({
180
- positionStrategy: this._getOverlayPositionStrategy(),
181
- scrollStrategy: createBlockScrollStrategy(this._injector),
182
- direction: this._directionality || undefined,
183
- });
184
- }
185
- _getOverlayPositionStrategy() {
186
- return createFlexibleConnectedPositionStrategy(this._injector, this._elementRef).withPositions(this._getOverlayPositions());
187
- }
188
- _getOverlayPositions() {
189
- return [
190
- { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },
191
- { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },
192
- { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' },
193
- { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom' },
194
- ];
195
- }
196
- _getPanelInjector() {
197
- return this._injector;
198
- }
199
- _getPanelContent() {
200
- const hasPanelChanged = this._panelTemplateRef !== this._panelPortal?.templateRef;
201
- if (this._panelTemplateRef && (!this._panelPortal || hasPanelChanged)) {
202
- this._panelPortal = new TemplatePortal(this._panelTemplateRef, this._viewContainerRef, undefined, this._getPanelInjector());
203
- }
204
- return this._panelPortal;
205
- }
206
- _coerceOpenActionProperty(input) {
207
- let actions = typeof input === 'string' ? input.trim().split(/[ ,]+/) : input;
208
- if ((typeof ngDevMode === 'undefined' || ngDevMode) &&
209
- actions?.some(a => allowedOpenActions.indexOf(a) === -1)) {
210
- throw Error(`${input} is not a support open action for CdkCombobox`);
211
- }
212
- return actions;
213
- }
214
- /** Registers the content's id and the content type with the panel. */
215
- _registerContent(contentId, contentType) {
216
- if ((typeof ngDevMode === 'undefined' || ngDevMode) &&
217
- contentType !== 'listbox' &&
218
- contentType !== 'dialog') {
219
- throw Error('CdkComboboxPanel currently only supports listbox or dialog content.');
220
- }
221
- this.contentId = contentId;
222
- this.contentType = contentType;
223
- }
224
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkCombobox, deps: [], target: i0.ɵɵFactoryTarget.Directive });
225
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-next.2", type: CdkCombobox, isStandalone: true, selector: "[cdkCombobox]", inputs: { _panelTemplateRef: ["cdkComboboxTriggerFor", "_panelTemplateRef"], value: "value", disabled: "disabled", openActions: "openActions", autoSetText: "autoSetText" }, outputs: { opened: "comboboxPanelOpened", closed: "comboboxPanelClosed", panelValueChanged: "panelValueChanged" }, host: { attributes: { "role": "combobox" }, listeners: { "click": "_handleInteractions(\"click\")", "focus": "_handleInteractions(\"focus\")", "keydown": "_keydown($event)", "document:click": "_attemptClose($event)" }, properties: { "attr.aria-disabled": "disabled", "attr.aria-owns": "contentId", "attr.aria-haspopup": "contentType", "attr.aria-expanded": "isOpen()", "attr.tabindex": "_getTabIndex()" }, classAttribute: "cdk-combobox" }, providers: [{ provide: CDK_COMBOBOX, useExisting: CdkCombobox }], exportAs: ["cdkCombobox"], ngImport: i0 });
226
- }
227
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkCombobox, decorators: [{
228
- type: Directive,
229
- args: [{
230
- selector: '[cdkCombobox]',
231
- exportAs: 'cdkCombobox',
232
- host: {
233
- 'role': 'combobox',
234
- 'class': 'cdk-combobox',
235
- '(click)': '_handleInteractions("click")',
236
- '(focus)': '_handleInteractions("focus")',
237
- '(keydown)': '_keydown($event)',
238
- '(document:click)': '_attemptClose($event)',
239
- '[attr.aria-disabled]': 'disabled',
240
- '[attr.aria-owns]': 'contentId',
241
- '[attr.aria-haspopup]': 'contentType',
242
- '[attr.aria-expanded]': 'isOpen()',
243
- '[attr.tabindex]': '_getTabIndex()',
244
- },
245
- providers: [{ provide: CDK_COMBOBOX, useExisting: CdkCombobox }],
246
- }]
247
- }], propDecorators: { _panelTemplateRef: [{
248
- type: Input,
249
- args: ['cdkComboboxTriggerFor']
250
- }], value: [{
251
- type: Input
252
- }], disabled: [{
253
- type: Input
254
- }], openActions: [{
255
- type: Input
256
- }], autoSetText: [{
257
- type: Input
258
- }], opened: [{
259
- type: Output,
260
- args: ['comboboxPanelOpened']
261
- }], closed: [{
262
- type: Output,
263
- args: ['comboboxPanelClosed']
264
- }], panelValueChanged: [{
265
- type: Output,
266
- args: ['panelValueChanged']
267
- }] } });
268
-
269
- class CdkComboboxPopup {
270
- _elementRef = inject(ElementRef);
271
- _combobox = inject(CDK_COMBOBOX);
272
- get role() {
273
- return this._role;
274
- }
275
- set role(value) {
276
- this._role = value;
277
- }
278
- _role = 'dialog';
279
- get firstFocus() {
280
- return this._firstFocusElement;
281
- }
282
- set firstFocus(id) {
283
- this._firstFocusElement = id;
284
- }
285
- _firstFocusElement;
286
- id = inject(_IdGenerator).getId('cdk-combobox-popup-');
287
- ngOnInit() {
288
- this.registerWithPanel();
289
- }
290
- registerWithPanel() {
291
- this._combobox._registerContent(this.id, this._role);
292
- }
293
- focusFirstElement() {
294
- if (this._firstFocusElement) {
295
- this._firstFocusElement.focus();
296
- }
297
- else {
298
- this._elementRef.nativeElement.focus();
299
- }
300
- }
301
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkComboboxPopup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
302
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0-next.2", type: CdkComboboxPopup, isStandalone: true, selector: "[cdkComboboxPopup]", inputs: { role: "role", firstFocus: "firstFocus", id: "id" }, host: { attributes: { "tabindex": "-1" }, listeners: { "focus": "focusFirstElement()" }, properties: { "attr.role": "role", "id": "id" }, classAttribute: "cdk-combobox-popup" }, exportAs: ["cdkComboboxPopup"], ngImport: i0 });
303
- }
304
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkComboboxPopup, decorators: [{
305
- type: Directive,
306
- args: [{
307
- selector: '[cdkComboboxPopup]',
308
- exportAs: 'cdkComboboxPopup',
309
- host: {
310
- 'class': 'cdk-combobox-popup',
311
- '[attr.role]': 'role',
312
- '[id]': 'id',
313
- 'tabindex': '-1',
314
- '(focus)': 'focusFirstElement()',
315
- },
316
- }]
317
- }], propDecorators: { role: [{
318
- type: Input
319
- }], firstFocus: [{
320
- type: Input
321
- }], id: [{
322
- type: Input
323
- }] } });
324
-
325
- const EXPORTED_DECLARATIONS = [CdkCombobox, CdkComboboxPopup];
326
- class CdkComboboxModule {
327
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkComboboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
328
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkComboboxModule, imports: [OverlayModule, CdkCombobox, CdkComboboxPopup], exports: [CdkCombobox, CdkComboboxPopup] });
329
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkComboboxModule, imports: [OverlayModule] });
330
- }
331
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: CdkComboboxModule, decorators: [{
332
- type: NgModule,
333
- args: [{
334
- imports: [OverlayModule, ...EXPORTED_DECLARATIONS],
335
- exports: EXPORTED_DECLARATIONS,
336
- }]
337
- }] });
338
-
339
- export { CDK_COMBOBOX, CdkCombobox, CdkComboboxModule, CdkComboboxPopup };
340
- //# sourceMappingURL=combobox.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"combobox.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/cdk-experimental/combobox/combobox.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/cdk-experimental/combobox/combobox-popup.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/cdk-experimental/combobox/combobox-module.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\nimport {Directionality} from '@angular/cdk/bidi';\nimport {BooleanInput, coerceArray, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {DOWN_ARROW, ENTER, ESCAPE, TAB} from '@angular/cdk/keycodes';\nimport {\n ConnectedPosition,\n createBlockScrollStrategy,\n createFlexibleConnectedPositionStrategy,\n createOverlayRef,\n FlexibleConnectedPositionStrategy,\n OverlayConfig,\n OverlayRef,\n} from '@angular/cdk/overlay';\nimport {_getEventTarget} from '@angular/cdk/platform';\nimport {TemplatePortal} from '@angular/cdk/portal';\n\nimport {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n HOST_TAG_NAME,\n InjectionToken,\n Injector,\n Input,\n OnDestroy,\n Output,\n TemplateRef,\n ViewContainerRef,\n inject,\n DOCUMENT,\n} from '@angular/core';\n\nexport type AriaHasPopupValue = 'false' | 'true' | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog';\nexport type OpenAction = 'focus' | 'click' | 'downKey' | 'toggle';\nexport type OpenActionInput = OpenAction | OpenAction[] | string | null | undefined;\n\nconst allowedOpenActions = ['focus', 'click', 'downKey', 'toggle'];\n\nexport const CDK_COMBOBOX = new InjectionToken<CdkCombobox>('CDK_COMBOBOX');\n\n@Directive({\n selector: '[cdkCombobox]',\n exportAs: 'cdkCombobox',\n host: {\n 'role': 'combobox',\n 'class': 'cdk-combobox',\n '(click)': '_handleInteractions(\"click\")',\n '(focus)': '_handleInteractions(\"focus\")',\n '(keydown)': '_keydown($event)',\n '(document:click)': '_attemptClose($event)',\n '[attr.aria-disabled]': 'disabled',\n '[attr.aria-owns]': 'contentId',\n '[attr.aria-haspopup]': 'contentType',\n '[attr.aria-expanded]': 'isOpen()',\n '[attr.tabindex]': '_getTabIndex()',\n },\n providers: [{provide: CDK_COMBOBOX, useExisting: CdkCombobox}],\n})\nexport class CdkCombobox<T = unknown> implements OnDestroy {\n private readonly _tagName = inject(HOST_TAG_NAME);\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n protected readonly _viewContainerRef = inject(ViewContainerRef);\n private readonly _injector = inject(Injector);\n private readonly _doc = inject(DOCUMENT);\n private readonly _directionality = inject(Directionality, {optional: true});\n private _changeDetectorRef = inject(ChangeDetectorRef);\n private _overlayRef: OverlayRef;\n private _panelPortal: TemplatePortal;\n\n @Input('cdkComboboxTriggerFor')\n _panelTemplateRef: TemplateRef<unknown>;\n\n @Input()\n value: T | T[];\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n }\n private _disabled: boolean = false;\n\n @Input()\n get openActions(): OpenAction[] {\n return this._openActions;\n }\n set openActions(action: OpenActionInput) {\n this._openActions = this._coerceOpenActionProperty(action);\n }\n private _openActions: OpenAction[] = ['click'];\n\n /** Whether the textContent is automatically updated upon change of the combobox value. */\n @Input()\n get autoSetText(): boolean {\n return this._autoSetText;\n }\n set autoSetText(value: BooleanInput) {\n this._autoSetText = coerceBooleanProperty(value);\n }\n private _autoSetText: boolean = true;\n\n @Output('comboboxPanelOpened') readonly opened: EventEmitter<void> = new EventEmitter<void>();\n @Output('comboboxPanelClosed') readonly closed: EventEmitter<void> = new EventEmitter<void>();\n @Output('panelValueChanged') readonly panelValueChanged: EventEmitter<T[]> = new EventEmitter<\n T[]\n >();\n\n contentId: string = '';\n contentType: AriaHasPopupValue;\n\n ngOnDestroy() {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n }\n\n this.opened.complete();\n this.closed.complete();\n this.panelValueChanged.complete();\n }\n\n _keydown(event: KeyboardEvent) {\n const {keyCode} = event;\n\n if (keyCode === DOWN_ARROW) {\n if (this.isOpen()) {\n // TODO: instead of using a focus function, potentially use cdk/a11y focus trapping\n this._doc.getElementById(this.contentId)?.focus();\n } else if (this._openActions.indexOf('downKey') !== -1) {\n this.open();\n }\n } else if (keyCode === ENTER) {\n if (this._openActions.indexOf('toggle') !== -1) {\n this.toggle();\n } else if (this._openActions.indexOf('click') !== -1) {\n this.open();\n }\n } else if (keyCode === ESCAPE) {\n event.preventDefault();\n this.close();\n } else if (keyCode === TAB) {\n this.close();\n }\n }\n\n /** Handles click or focus interactions. */\n _handleInteractions(interaction: OpenAction) {\n if (interaction === 'click') {\n if (this._openActions.indexOf('toggle') !== -1) {\n this.toggle();\n } else if (this._openActions.indexOf('click') !== -1) {\n this.open();\n }\n } else if (interaction === 'focus') {\n if (this._openActions.indexOf('focus') !== -1) {\n this.open();\n }\n }\n }\n\n /** Given a click in the document, determines if the click was inside a combobox. */\n _attemptClose(event: MouseEvent) {\n if (this.isOpen()) {\n let target = _getEventTarget(event);\n while (target instanceof Element) {\n if (target.className.indexOf('cdk-combobox') !== -1) {\n return;\n }\n target = target.parentElement;\n }\n }\n\n this.close();\n }\n\n /** Toggles the open state of the panel. */\n toggle() {\n if (this.hasPanel()) {\n this.isOpen() ? this.close() : this.open();\n }\n }\n\n /** If the combobox is closed and not disabled, opens the panel. */\n open() {\n if (!this.isOpen() && !this.disabled) {\n this.opened.next();\n this._overlayRef =\n this._overlayRef || createOverlayRef(this._injector, this._getOverlayConfig());\n this._overlayRef.attach(this._getPanelContent());\n this._changeDetectorRef.markForCheck();\n if (!this._isTextTrigger()) {\n // TODO: instead of using a focus function, potentially use cdk/a11y focus trapping\n this._doc.getElementById(this.contentId)?.focus();\n }\n }\n }\n\n /** If the combobox is open and not disabled, closes the panel. */\n close() {\n if (this.isOpen() && !this.disabled) {\n this.closed.next();\n this._overlayRef.detach();\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /** Returns true if panel is currently opened. */\n isOpen(): boolean {\n return this._overlayRef ? this._overlayRef.hasAttached() : false;\n }\n\n /** Returns true if combobox has a child panel. */\n hasPanel(): boolean {\n return !!this._panelTemplateRef;\n }\n\n _getTabIndex(): string | null {\n return this.disabled ? null : '0';\n }\n\n private _setComboboxValue(value: T | T[]) {\n const valueChanged = this.value !== value;\n this.value = value;\n\n if (valueChanged) {\n this.panelValueChanged.emit(coerceArray(value));\n if (this._autoSetText) {\n this._setTextContent(value);\n }\n }\n }\n\n updateAndClose(value: T | T[]) {\n this._setComboboxValue(value);\n this.close();\n }\n\n private _setTextContent(content: T | T[]) {\n const contentArray = coerceArray(content);\n this._elementRef.nativeElement.textContent = contentArray.join(' ');\n }\n\n private _isTextTrigger() {\n // TODO: Should check if the trigger is contenteditable.\n const tagName = this._tagName.toLowerCase();\n return tagName === 'input' || tagName === 'textarea';\n }\n\n private _getOverlayConfig() {\n return new OverlayConfig({\n positionStrategy: this._getOverlayPositionStrategy(),\n scrollStrategy: createBlockScrollStrategy(this._injector),\n direction: this._directionality || undefined,\n });\n }\n\n private _getOverlayPositionStrategy(): FlexibleConnectedPositionStrategy {\n return createFlexibleConnectedPositionStrategy(this._injector, this._elementRef).withPositions(\n this._getOverlayPositions(),\n );\n }\n\n private _getOverlayPositions(): ConnectedPosition[] {\n return [\n {originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top'},\n {originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom'},\n {originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top'},\n {originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom'},\n ];\n }\n\n private _getPanelInjector() {\n return this._injector;\n }\n\n private _getPanelContent() {\n const hasPanelChanged = this._panelTemplateRef !== this._panelPortal?.templateRef;\n if (this._panelTemplateRef && (!this._panelPortal || hasPanelChanged)) {\n this._panelPortal = new TemplatePortal(\n this._panelTemplateRef,\n this._viewContainerRef,\n undefined,\n this._getPanelInjector(),\n );\n }\n\n return this._panelPortal;\n }\n\n private _coerceOpenActionProperty(input: OpenActionInput): OpenAction[] {\n let actions = typeof input === 'string' ? input.trim().split(/[ ,]+/) : input;\n if (\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n actions?.some(a => allowedOpenActions.indexOf(a) === -1)\n ) {\n throw Error(`${input} is not a support open action for CdkCombobox`);\n }\n return actions as OpenAction[];\n }\n\n /** Registers the content's id and the content type with the panel. */\n _registerContent(contentId: string, contentType: AriaHasPopupValue) {\n if (\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n contentType !== 'listbox' &&\n contentType !== 'dialog'\n ) {\n throw Error('CdkComboboxPanel currently only supports listbox or dialog content.');\n }\n this.contentId = contentId;\n this.contentType = contentType;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {Directive, ElementRef, Input, OnInit, inject} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {AriaHasPopupValue, CDK_COMBOBOX, CdkCombobox} from './combobox';\n\n@Directive({\n selector: '[cdkComboboxPopup]',\n exportAs: 'cdkComboboxPopup',\n host: {\n 'class': 'cdk-combobox-popup',\n '[attr.role]': 'role',\n '[id]': 'id',\n 'tabindex': '-1',\n '(focus)': 'focusFirstElement()',\n },\n})\nexport class CdkComboboxPopup<T = unknown> implements OnInit {\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly _combobox = inject<CdkCombobox>(CDK_COMBOBOX);\n\n @Input()\n get role(): AriaHasPopupValue {\n return this._role;\n }\n set role(value: AriaHasPopupValue) {\n this._role = value;\n }\n private _role: AriaHasPopupValue = 'dialog';\n\n @Input()\n get firstFocus(): HTMLElement {\n return this._firstFocusElement;\n }\n set firstFocus(id: HTMLElement) {\n this._firstFocusElement = id;\n }\n private _firstFocusElement: HTMLElement;\n\n @Input() id: string = inject(_IdGenerator).getId('cdk-combobox-popup-');\n\n ngOnInit() {\n this.registerWithPanel();\n }\n\n registerWithPanel(): void {\n this._combobox._registerContent(this.id, this._role);\n }\n\n focusFirstElement() {\n if (this._firstFocusElement) {\n this._firstFocusElement.focus();\n } else {\n this._elementRef.nativeElement.focus();\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {CdkCombobox} from './combobox';\nimport {CdkComboboxPopup} from './combobox-popup';\n\nconst EXPORTED_DECLARATIONS = [CdkCombobox, CdkComboboxPopup];\n@NgModule({\n imports: [OverlayModule, ...EXPORTED_DECLARATIONS],\n exports: EXPORTED_DECLARATIONS,\n})\nexport class CdkComboboxModule {}\n"],"names":[],"mappings":"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"}