@ngneers/controls 0.0.1-pre5 → 0.0.1-pre6

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 (120) hide show
  1. package/fesm2022/ngneers-controls-accordion.mjs +32 -32
  2. package/fesm2022/ngneers-controls-accordion.mjs.map +1 -1
  3. package/fesm2022/ngneers-controls-api-ng.mjs +19 -19
  4. package/fesm2022/ngneers-controls-api-ng.mjs.map +1 -1
  5. package/fesm2022/ngneers-controls-api-resize.mjs +706 -0
  6. package/fesm2022/ngneers-controls-api-resize.mjs.map +1 -0
  7. package/fesm2022/ngneers-controls-avatar.mjs +13 -13
  8. package/fesm2022/ngneers-controls-avatar.mjs.map +1 -1
  9. package/fesm2022/ngneers-controls-base.mjs +89 -64
  10. package/fesm2022/ngneers-controls-base.mjs.map +1 -1
  11. package/fesm2022/ngneers-controls-breadcrumb.mjs +18 -18
  12. package/fesm2022/ngneers-controls-breadcrumb.mjs.map +1 -1
  13. package/fesm2022/ngneers-controls-button-group.mjs +8 -8
  14. package/fesm2022/ngneers-controls-button-group.mjs.map +1 -1
  15. package/fesm2022/ngneers-controls-button.mjs +15 -10
  16. package/fesm2022/ngneers-controls-button.mjs.map +1 -1
  17. package/fesm2022/{ngneers-controls-calendar-time-BEeJIqIX.mjs → ngneers-controls-calendar-time-Bzlv9Vkn.mjs} +9 -9
  18. package/fesm2022/{ngneers-controls-calendar-time-BEeJIqIX.mjs.map → ngneers-controls-calendar-time-Bzlv9Vkn.mjs.map} +1 -1
  19. package/fesm2022/ngneers-controls-calendar.mjs +54 -54
  20. package/fesm2022/ngneers-controls-calendar.mjs.map +1 -1
  21. package/fesm2022/ngneers-controls-checkbox.mjs +9 -9
  22. package/fesm2022/ngneers-controls-checkbox.mjs.map +1 -1
  23. package/fesm2022/ngneers-controls-chip.mjs +6 -6
  24. package/fesm2022/ngneers-controls-chip.mjs.map +1 -1
  25. package/fesm2022/ngneers-controls-defer.mjs +10 -10
  26. package/fesm2022/ngneers-controls-defer.mjs.map +1 -1
  27. package/fesm2022/ngneers-controls-dialog.mjs +37 -39
  28. package/fesm2022/ngneers-controls-dialog.mjs.map +1 -1
  29. package/fesm2022/ngneers-controls-directives.mjs +45 -39
  30. package/fesm2022/ngneers-controls-directives.mjs.map +1 -1
  31. package/fesm2022/ngneers-controls-drawer.mjs +28 -28
  32. package/fesm2022/ngneers-controls-drawer.mjs.map +1 -1
  33. package/fesm2022/ngneers-controls-edit-inplace.mjs +15 -15
  34. package/fesm2022/ngneers-controls-edit-inplace.mjs.map +1 -1
  35. package/fesm2022/ngneers-controls-filter.mjs +192 -44
  36. package/fesm2022/ngneers-controls-filter.mjs.map +1 -1
  37. package/fesm2022/{ngneers-controls-i18n-de-CdTPeBiR.mjs → ngneers-controls-i18n-de-CF0xTWEX.mjs} +9 -5
  38. package/fesm2022/ngneers-controls-i18n-de-CF0xTWEX.mjs.map +1 -0
  39. package/fesm2022/{ngneers-controls-i18n-en-Cfp2pOLY.mjs → ngneers-controls-i18n-en-8B7xAjH2.mjs} +9 -5
  40. package/fesm2022/ngneers-controls-i18n-en-8B7xAjH2.mjs.map +1 -0
  41. package/fesm2022/ngneers-controls-i18n.mjs +5 -5
  42. package/fesm2022/ngneers-controls-i18n.mjs.map +1 -1
  43. package/fesm2022/ngneers-controls-icon.mjs +10 -10
  44. package/fesm2022/ngneers-controls-icon.mjs.map +1 -1
  45. package/fesm2022/ngneers-controls-inplace.mjs +18 -18
  46. package/fesm2022/ngneers-controls-inplace.mjs.map +1 -1
  47. package/fesm2022/ngneers-controls-input-field.mjs +14 -14
  48. package/fesm2022/ngneers-controls-input-field.mjs.map +1 -1
  49. package/fesm2022/ngneers-controls-input-mask.mjs +8 -8
  50. package/fesm2022/ngneers-controls-input-mask.mjs.map +1 -1
  51. package/fesm2022/ngneers-controls-input.mjs +6 -6
  52. package/fesm2022/ngneers-controls-input.mjs.map +1 -1
  53. package/fesm2022/ngneers-controls-item-view.mjs +33 -33
  54. package/fesm2022/ngneers-controls-item-view.mjs.map +1 -1
  55. package/fesm2022/ngneers-controls-list-box.mjs +31 -31
  56. package/fesm2022/ngneers-controls-list-box.mjs.map +1 -1
  57. package/fesm2022/ngneers-controls-menu.mjs +32 -32
  58. package/fesm2022/ngneers-controls-menu.mjs.map +1 -1
  59. package/fesm2022/ngneers-controls-message.mjs +4 -4
  60. package/fesm2022/ngneers-controls-message.mjs.map +1 -1
  61. package/fesm2022/ngneers-controls-paginator.mjs +12 -12
  62. package/fesm2022/ngneers-controls-paginator.mjs.map +1 -1
  63. package/fesm2022/ngneers-controls-popover.mjs +13 -13
  64. package/fesm2022/ngneers-controls-popover.mjs.map +1 -1
  65. package/fesm2022/ngneers-controls-progress.mjs +16 -16
  66. package/fesm2022/ngneers-controls-progress.mjs.map +1 -1
  67. package/fesm2022/ngneers-controls-scroller.mjs +74 -39
  68. package/fesm2022/ngneers-controls-scroller.mjs.map +1 -1
  69. package/fesm2022/ngneers-controls-select-button.mjs +6 -6
  70. package/fesm2022/ngneers-controls-select-button.mjs.map +1 -1
  71. package/fesm2022/ngneers-controls-select.mjs +46 -46
  72. package/fesm2022/ngneers-controls-select.mjs.map +1 -1
  73. package/fesm2022/ngneers-controls-slider.mjs +11 -11
  74. package/fesm2022/ngneers-controls-slider.mjs.map +1 -1
  75. package/fesm2022/ngneers-controls-spinner.mjs +7 -7
  76. package/fesm2022/ngneers-controls-spinner.mjs.map +1 -1
  77. package/fesm2022/ngneers-controls-splitter.mjs +141 -328
  78. package/fesm2022/ngneers-controls-splitter.mjs.map +1 -1
  79. package/fesm2022/ngneers-controls-switch.mjs +3 -3
  80. package/fesm2022/ngneers-controls-table.mjs +1520 -80
  81. package/fesm2022/ngneers-controls-table.mjs.map +1 -1
  82. package/fesm2022/ngneers-controls-tabs.mjs +40 -39
  83. package/fesm2022/ngneers-controls-tabs.mjs.map +1 -1
  84. package/fesm2022/ngneers-controls-tag.mjs +4 -4
  85. package/fesm2022/ngneers-controls-tag.mjs.map +1 -1
  86. package/fesm2022/ngneers-controls-toast.mjs +18 -18
  87. package/fesm2022/ngneers-controls-toast.mjs.map +1 -1
  88. package/fesm2022/ngneers-controls-toggle-button.mjs +9 -9
  89. package/fesm2022/ngneers-controls-toggle-button.mjs.map +1 -1
  90. package/fesm2022/ngneers-controls-tooltip.mjs +36 -36
  91. package/fesm2022/ngneers-controls-tooltip.mjs.map +1 -1
  92. package/fesm2022/ngneers-controls-utils-ng.mjs +9 -9
  93. package/fesm2022/ngneers-controls-utils-ng.mjs.map +1 -1
  94. package/package.json +14 -10
  95. package/types/ngneers-controls-api-ng.d.ts +2 -2
  96. package/types/ngneers-controls-api-resize.d.ts +318 -0
  97. package/types/ngneers-controls-base.d.ts +8 -0
  98. package/types/ngneers-controls-breadcrumb.d.ts +1 -1
  99. package/types/ngneers-controls-button.d.ts +13 -8
  100. package/types/ngneers-controls-calendar.d.ts +5 -1
  101. package/types/ngneers-controls-checkbox.d.ts +1 -1
  102. package/types/ngneers-controls-directives.d.ts +7 -1
  103. package/types/ngneers-controls-drawer.d.ts +4 -0
  104. package/types/ngneers-controls-edit-inplace.d.ts +4 -0
  105. package/types/ngneers-controls-filter.d.ts +53 -4
  106. package/types/ngneers-controls-i18n.d.ts +4 -0
  107. package/types/ngneers-controls-icon.d.ts +1 -1
  108. package/types/ngneers-controls-input-field.d.ts +4 -0
  109. package/types/ngneers-controls-list-box.d.ts +5 -1
  110. package/types/ngneers-controls-menu.d.ts +1 -1
  111. package/types/ngneers-controls-paginator.d.ts +4 -0
  112. package/types/ngneers-controls-popover.d.ts +1 -1
  113. package/types/ngneers-controls-scroller.d.ts +12 -2
  114. package/types/ngneers-controls-select.d.ts +6 -2
  115. package/types/ngneers-controls-spinner.d.ts +1 -1
  116. package/types/ngneers-controls-splitter.d.ts +29 -59
  117. package/types/ngneers-controls-table.d.ts +392 -24
  118. package/types/ngneers-controls-toast.d.ts +1 -1
  119. package/fesm2022/ngneers-controls-i18n-de-CdTPeBiR.mjs.map +0 -1
  120. package/fesm2022/ngneers-controls-i18n-en-Cfp2pOLY.mjs.map +0 -1
@@ -16,15 +16,15 @@ const ACCORDION_CONTROL = new InjectionToken('AccordionControl');
16
16
  */
17
17
  class NgnAccordion extends NgnBase {
18
18
  theme = this.injectThemeTemplate(accordionControlTemplate, 'root');
19
- cache = input(false, { ...(ngDevMode ? { debugName: "cache" } : {}), transform: booleanAttribute });
20
- lazy = input(false, { ...(ngDevMode ? { debugName: "lazy" } : {}), transform: booleanAttribute });
19
+ cache = input(false, { ...(ngDevMode ? { debugName: "cache" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
20
+ lazy = input(false, { ...(ngDevMode ? { debugName: "lazy" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
21
21
  /**
22
22
  * Whether multiple panels can be expanded at once.
23
23
  */
24
- iconExpanded = input(...(ngDevMode ? [undefined, { debugName: "iconExpanded" }] : []));
25
- iconCollapsed = input(...(ngDevMode ? [undefined, { debugName: "iconCollapsed" }] : []));
26
- multiple = input(false, { ...(ngDevMode ? { debugName: "multiple" } : {}), transform: booleanAttribute });
27
- expandedPanels = model([], ...(ngDevMode ? [{ debugName: "expandedPanels" }] : []));
24
+ iconExpanded = input(...(ngDevMode ? [undefined, { debugName: "iconExpanded" }] : /* istanbul ignore next */ []));
25
+ iconCollapsed = input(...(ngDevMode ? [undefined, { debugName: "iconCollapsed" }] : /* istanbul ignore next */ []));
26
+ multiple = input(false, { ...(ngDevMode ? { debugName: "multiple" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
27
+ expandedPanels = model([], ...(ngDevMode ? [{ debugName: "expandedPanels" }] : /* istanbul ignore next */ []));
28
28
  togglePanel(panelId) {
29
29
  if (!this.multiple()) {
30
30
  if (this.expandedPanels().includes(panelId)) {
@@ -44,8 +44,8 @@ class NgnAccordion extends NgnBase {
44
44
  constructor() {
45
45
  super();
46
46
  }
47
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgnAccordion, deps: [], target: i0.ɵɵFactoryTarget.Component });
48
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.0", type: NgnAccordion, isStandalone: true, selector: "ngn-accordion", inputs: { cache: { classPropertyName: "cache", publicName: "cache", isSignal: true, isRequired: false, transformFunction: null }, lazy: { classPropertyName: "lazy", publicName: "lazy", isSignal: true, isRequired: false, transformFunction: null }, iconExpanded: { classPropertyName: "iconExpanded", publicName: "iconExpanded", isSignal: true, isRequired: false, transformFunction: null }, iconCollapsed: { classPropertyName: "iconCollapsed", publicName: "iconCollapsed", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, expandedPanels: { classPropertyName: "expandedPanels", publicName: "expandedPanels", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { expandedPanels: "expandedPanelsChange" }, providers: [
47
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: NgnAccordion, deps: [], target: i0.ɵɵFactoryTarget.Component });
48
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.2", type: NgnAccordion, isStandalone: true, selector: "ngn-accordion", inputs: { cache: { classPropertyName: "cache", publicName: "cache", isSignal: true, isRequired: false, transformFunction: null }, lazy: { classPropertyName: "lazy", publicName: "lazy", isSignal: true, isRequired: false, transformFunction: null }, iconExpanded: { classPropertyName: "iconExpanded", publicName: "iconExpanded", isSignal: true, isRequired: false, transformFunction: null }, iconCollapsed: { classPropertyName: "iconCollapsed", publicName: "iconCollapsed", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, expandedPanels: { classPropertyName: "expandedPanels", publicName: "expandedPanels", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { expandedPanels: "expandedPanelsChange" }, providers: [
49
49
  provideSelf(NgnAccordion),
50
50
  {
51
51
  provide: ACCORDION_CONTROL,
@@ -61,7 +61,7 @@ class NgnAccordion extends NgnBase {
61
61
  },
62
62
  ], usesInheritance: true, ngImport: i0, template: "<ng-content />\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
63
63
  }
64
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgnAccordion, decorators: [{
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: NgnAccordion, decorators: [{
65
65
  type: Component,
66
66
  args: [{ selector: 'ngn-accordion', imports: [], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
67
67
  provideSelf(NgnAccordion),
@@ -82,28 +82,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
82
82
 
83
83
  class AccordionTemplates extends NgnBase {
84
84
  _defaultHeaderTemplate = viewChild.required('defaultHeaderTemplate');
85
- _userHeaderTemplate = contentChild('header', ...(ngDevMode ? [{ debugName: "_userHeaderTemplate" }] : []));
85
+ _userHeaderTemplate = contentChild('header', ...(ngDevMode ? [{ debugName: "_userHeaderTemplate" }] : /* istanbul ignore next */ []));
86
86
  /**
87
87
  * Set a custom template for the header of the accordion panel.
88
88
  * Can also be set using an `<ng-template>` element with `#header` template reference variable.
89
89
  */
90
- templateHeader = input(null, ...(ngDevMode ? [{ debugName: "templateHeader" }] : []));
91
- headerTemplate = computed(() => this._userHeaderTemplate() ?? this.templateHeader() ?? this._defaultHeaderTemplate(), ...(ngDevMode ? [{ debugName: "headerTemplate" }] : []));
92
- _userContentTemplate = contentChild('content', ...(ngDevMode ? [{ debugName: "_userContentTemplate" }] : []));
90
+ templateHeader = input(null, ...(ngDevMode ? [{ debugName: "templateHeader" }] : /* istanbul ignore next */ []));
91
+ headerTemplate = computed(() => this._userHeaderTemplate() ?? this.templateHeader() ?? this._defaultHeaderTemplate(), ...(ngDevMode ? [{ debugName: "headerTemplate" }] : /* istanbul ignore next */ []));
92
+ _userContentTemplate = contentChild('content', ...(ngDevMode ? [{ debugName: "_userContentTemplate" }] : /* istanbul ignore next */ []));
93
93
  /**
94
94
  * The required template for the content of the accordion panel.
95
95
  * Can also be set using an `<ng-template>` element with `#content` template reference variable.
96
96
  */
97
- templateContent = input(null, ...(ngDevMode ? [{ debugName: "templateContent" }] : []));
98
- contentTemplate = computed(() => this._userContentTemplate() ?? this.templateContent(), ...(ngDevMode ? [{ debugName: "contentTemplate" }] : []));
97
+ templateContent = input(null, ...(ngDevMode ? [{ debugName: "templateContent" }] : /* istanbul ignore next */ []));
98
+ contentTemplate = computed(() => this._userContentTemplate() ?? this.templateContent(), ...(ngDevMode ? [{ debugName: "contentTemplate" }] : /* istanbul ignore next */ []));
99
99
  /**
100
100
  * Types for the dialog templates.
101
101
  */
102
102
  templateTypes = templateTypesFn();
103
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AccordionTemplates, deps: null, target: i0.ɵɵFactoryTarget.Directive });
104
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.1.0", type: AccordionTemplates, isStandalone: true, inputs: { templateHeader: { classPropertyName: "templateHeader", publicName: "templateHeader", isSignal: true, isRequired: false, transformFunction: null }, templateContent: { classPropertyName: "templateContent", publicName: "templateContent", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "_userHeaderTemplate", first: true, predicate: ["header"], descendants: true, isSignal: true }, { propertyName: "_userContentTemplate", first: true, predicate: ["content"], descendants: true, isSignal: true }], viewQueries: [{ propertyName: "_defaultHeaderTemplate", first: true, predicate: ["defaultHeaderTemplate"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0 });
103
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: AccordionTemplates, deps: null, target: i0.ɵɵFactoryTarget.Directive });
104
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.2.2", type: AccordionTemplates, isStandalone: true, inputs: { templateHeader: { classPropertyName: "templateHeader", publicName: "templateHeader", isSignal: true, isRequired: false, transformFunction: null }, templateContent: { classPropertyName: "templateContent", publicName: "templateContent", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "_userHeaderTemplate", first: true, predicate: ["header"], descendants: true, isSignal: true }, { propertyName: "_userContentTemplate", first: true, predicate: ["content"], descendants: true, isSignal: true }], viewQueries: [{ propertyName: "_defaultHeaderTemplate", first: true, predicate: ["defaultHeaderTemplate"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0 });
105
105
  }
106
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AccordionTemplates, decorators: [{
106
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: AccordionTemplates, decorators: [{
107
107
  type: Directive
108
108
  }], propDecorators: { _defaultHeaderTemplate: [{ type: i0.ViewChild, args: ['defaultHeaderTemplate', { isSignal: true }] }], _userHeaderTemplate: [{ type: i0.ContentChild, args: ['header', { isSignal: true }] }], templateHeader: [{ type: i0.Input, args: [{ isSignal: true, alias: "templateHeader", required: false }] }], _userContentTemplate: [{ type: i0.ContentChild, args: ['content', { isSignal: true }] }], templateContent: [{ type: i0.Input, args: [{ isSignal: true, alias: "templateContent", required: false }] }] } });
109
109
 
@@ -117,36 +117,36 @@ class NgnAccordionPanel extends AccordionTemplates {
117
117
  * The unique identifier for the accordion panel.
118
118
  * @default generateElementId()
119
119
  */
120
- panelId = input(generateElementId(), ...(ngDevMode ? [{ debugName: "panelId" }] : []));
120
+ panelId = input(generateElementId(), ...(ngDevMode ? [{ debugName: "panelId" }] : /* istanbul ignore next */ []));
121
121
  /**
122
122
  * Whether to lazily load the content of the panel when expanded.
123
123
  * @default false
124
124
  */
125
- lazy = input(null, { ...(ngDevMode ? { debugName: "lazy" } : {}), transform: booleanAttribute });
125
+ lazy = input(null, { ...(ngDevMode ? { debugName: "lazy" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
126
126
  /**
127
127
  * Whether to cache the content of the panel when {@link lazy} is enabled and the panel is closed.
128
128
  * @default false
129
129
  */
130
- cache = input(null, { ...(ngDevMode ? { debugName: "cache" } : {}), transform: booleanAttribute });
130
+ cache = input(null, { ...(ngDevMode ? { debugName: "cache" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
131
131
  /**
132
132
  * The header text for the accordion panel.
133
133
  */
134
- header = input(...(ngDevMode ? [undefined, { debugName: "header" }] : []));
134
+ header = input(...(ngDevMode ? [undefined, { debugName: "header" }] : /* istanbul ignore next */ []));
135
135
  /**
136
136
  * Whether the accordion panel is disabled. Disabling will prevent user interaction,
137
137
  * but not automatically close the panel if it was already expanded, or is expanded programatically.
138
138
  * @default false
139
139
  */
140
- disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : {}), transform: booleanAttribute });
140
+ disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
141
141
  iconExpanded = this._accordionControl.iconExpanded;
142
142
  iconCollapsed = this._accordionControl.iconCollapsed;
143
143
  _contentViewChild = viewChild.required('content');
144
- expanded = computed(() => this._accordionControl.expandedPanels().includes(this.panelId()), ...(ngDevMode ? [{ debugName: "expanded" }] : []));
145
- headerId = computed(() => `${this.panelId()}-accordionpanel-header`, ...(ngDevMode ? [{ debugName: "headerId" }] : []));
146
- contentId = computed(() => `${this.panelId()}-accordionpanel-content`, ...(ngDevMode ? [{ debugName: "contentId" }] : []));
147
- afterTransitionExpanded = signal(false, ...(ngDevMode ? [{ debugName: "afterTransitionExpanded" }] : []));
148
- lazyInt = computed(() => this.lazy() ?? this._accordionControl.lazy(), ...(ngDevMode ? [{ debugName: "lazyInt" }] : []));
149
- cacheInt = computed(() => this.cache() ?? this._accordionControl.cache(), ...(ngDevMode ? [{ debugName: "cacheInt" }] : []));
144
+ expanded = computed(() => this._accordionControl.expandedPanels().includes(this.panelId()), ...(ngDevMode ? [{ debugName: "expanded" }] : /* istanbul ignore next */ []));
145
+ headerId = computed(() => `${this.panelId()}-accordionpanel-header`, ...(ngDevMode ? [{ debugName: "headerId" }] : /* istanbul ignore next */ []));
146
+ contentId = computed(() => `${this.panelId()}-accordionpanel-content`, ...(ngDevMode ? [{ debugName: "contentId" }] : /* istanbul ignore next */ []));
147
+ afterTransitionExpanded = signal(false, ...(ngDevMode ? [{ debugName: "afterTransitionExpanded" }] : /* istanbul ignore next */ []));
148
+ lazyInt = computed(() => this.lazy() ?? this._accordionControl.lazy(), ...(ngDevMode ? [{ debugName: "lazyInt" }] : /* istanbul ignore next */ []));
149
+ cacheInt = computed(() => this.cache() ?? this._accordionControl.cache(), ...(ngDevMode ? [{ debugName: "cacheInt" }] : /* istanbul ignore next */ []));
150
150
  constructor() {
151
151
  super();
152
152
  afterRenderEffect(() => {
@@ -178,10 +178,10 @@ class NgnAccordionPanel extends AccordionTemplates {
178
178
  toggle() {
179
179
  this._accordionControl.togglePanel(this.panelId());
180
180
  }
181
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgnAccordionPanel, deps: [], target: i0.ɵɵFactoryTarget.Component });
182
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: NgnAccordionPanel, isStandalone: true, selector: "ngn-accordion-panel", inputs: { panelId: { classPropertyName: "panelId", publicName: "panelId", isSignal: true, isRequired: false, transformFunction: null }, lazy: { classPropertyName: "lazy", publicName: "lazy", isSignal: true, isRequired: false, transformFunction: null }, cache: { classPropertyName: "cache", publicName: "cache", isSignal: true, isRequired: false, transformFunction: null }, header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideSelf(NgnAccordionPanel)], viewQueries: [{ propertyName: "_contentViewChild", first: true, predicate: ["content"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<header>\r\n <button\r\n [ptInt]=\"this\"\r\n [ptClass]=\"{\r\n header: true,\r\n 'header-disabled': disabled(),\r\n }\"\r\n [id]=\"headerId()\"\r\n [disabled]=\"disabled()\"\r\n [aria-expanded]=\"expanded()\"\r\n (click)=\"toggle()\"\r\n [attr.aria-controls]=\"contentId()\"\r\n >\r\n @if (headerTemplate()) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n headerTemplate();\r\n context: { $implicit: { panelId: panelId(), text: header(), expanded: expanded() } }\r\n \"\r\n ></ng-container>\r\n }\r\n <ngn-icon\r\n [defaultIcon]=\"expanded() ? 'chevron_up' : 'chevron_down'\"\r\n [icon]=\"expanded() ? iconExpanded() : iconCollapsed()\"\r\n />\r\n </button>\r\n</header>\r\n\r\n<div\r\n [ptInt]=\"this\"\r\n [ptClass]=\"{\r\n 'content-expander': true,\r\n 'content-expander-collapsed': !expanded(),\r\n }\"\r\n #content\r\n>\r\n <div\r\n [ptInt]=\"this\"\r\n [ptClass]=\"'content'\"\r\n [id]=\"contentId()\"\r\n [attr.aria-labelledby]=\"headerId()\"\r\n [aria-hidden]=\"!expanded()\"\r\n role=\"region\"\r\n >\r\n <ngn-defer\r\n [lazyContent]=\"contentTemplate()\"\r\n [open]=\"lazyInt() && !cacheInt() ? afterTransitionExpanded() : expanded()\"\r\n [hiddenOnClosed]=\"false\"\r\n [cache]=\"cacheInt()\"\r\n [lazy]=\"lazyInt()\"\r\n >\r\n <ng-content />\r\n </ngn-defer>\r\n </div>\r\n</div>\r\n\r\n<ng-template #defaultHeaderTemplate let-header [ngnTemplate]=\"templateTypes.header\">\r\n <span [ptInt]=\"this\" [ptClass]=\"'header-text'\">\r\n {{ header.text }}\r\n </span>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgnPt, selector: "[ptInt]", inputs: ["ptInt", "ptClass"] }, { kind: "component", type: NgnDefer, selector: "ngn-defer", inputs: ["lazyContent", "lazyContentContext", "open", "lazy", "cache", "hiddenOnClosed"] }, { kind: "directive", type: NgnTemplate, selector: "ng-template[ngnTemplate]", inputs: ["ngnTemplate"] }, { kind: "component", type: NgnIcon, selector: "ngn-icon", inputs: ["defaultIcon", "icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
181
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: NgnAccordionPanel, deps: [], target: i0.ɵɵFactoryTarget.Component });
182
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.2", type: NgnAccordionPanel, isStandalone: true, selector: "ngn-accordion-panel", inputs: { panelId: { classPropertyName: "panelId", publicName: "panelId", isSignal: true, isRequired: false, transformFunction: null }, lazy: { classPropertyName: "lazy", publicName: "lazy", isSignal: true, isRequired: false, transformFunction: null }, cache: { classPropertyName: "cache", publicName: "cache", isSignal: true, isRequired: false, transformFunction: null }, header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideSelf(NgnAccordionPanel)], viewQueries: [{ propertyName: "_contentViewChild", first: true, predicate: ["content"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<header>\r\n <button\r\n [ptInt]=\"this\"\r\n [ptClass]=\"{\r\n header: true,\r\n 'header-disabled': disabled(),\r\n }\"\r\n [id]=\"headerId()\"\r\n [disabled]=\"disabled()\"\r\n [aria-expanded]=\"expanded()\"\r\n (click)=\"toggle()\"\r\n [attr.aria-controls]=\"contentId()\"\r\n >\r\n @if (headerTemplate()) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n headerTemplate();\r\n context: { $implicit: { panelId: panelId(), text: header(), expanded: expanded() } }\r\n \"\r\n ></ng-container>\r\n }\r\n <ngn-icon\r\n [defaultIcon]=\"expanded() ? 'chevron_up' : 'chevron_down'\"\r\n [icon]=\"expanded() ? iconExpanded() : iconCollapsed()\"\r\n />\r\n </button>\r\n</header>\r\n\r\n<div\r\n [ptInt]=\"this\"\r\n [ptClass]=\"{\r\n 'content-expander': true,\r\n 'content-expander-collapsed': !expanded(),\r\n }\"\r\n #content\r\n>\r\n <div\r\n [ptInt]=\"this\"\r\n [ptClass]=\"'content'\"\r\n [id]=\"contentId()\"\r\n [attr.aria-labelledby]=\"headerId()\"\r\n [aria-hidden]=\"!expanded()\"\r\n role=\"region\"\r\n >\r\n <ngn-defer\r\n [lazyContent]=\"contentTemplate()\"\r\n [open]=\"lazyInt() && !cacheInt() ? afterTransitionExpanded() : expanded()\"\r\n [hiddenOnClosed]=\"false\"\r\n [cache]=\"cacheInt()\"\r\n [lazy]=\"lazyInt()\"\r\n >\r\n <ng-content />\r\n </ngn-defer>\r\n </div>\r\n</div>\r\n\r\n<ng-template #defaultHeaderTemplate let-header [ngnTemplate]=\"templateTypes.header\">\r\n <span [ptInt]=\"this\" [ptClass]=\"'header-text'\">\r\n {{ header.text }}\r\n </span>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgnPt, selector: "[ptInt]", inputs: ["ptInt", "ptClass"] }, { kind: "component", type: NgnDefer, selector: "ngn-defer", inputs: ["lazyContent", "lazyContentContext", "open", "lazy", "cache", "hiddenOnClosed"] }, { kind: "directive", type: NgnTemplate, selector: "ng-template[ngnTemplate]", inputs: ["ngnTemplate"] }, { kind: "component", type: NgnIcon, selector: "ngn-icon", inputs: ["defaultIcon", "icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
183
183
  }
184
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgnAccordionPanel, decorators: [{
184
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: NgnAccordionPanel, decorators: [{
185
185
  type: Component,
186
186
  args: [{ selector: 'ngn-accordion-panel', imports: [NgTemplateOutlet, NgnPt, NgnDefer, NgnTemplate, NgnIcon], changeDetection: ChangeDetectionStrategy.OnPush, providers: [provideSelf(NgnAccordionPanel)], template: "<header>\r\n <button\r\n [ptInt]=\"this\"\r\n [ptClass]=\"{\r\n header: true,\r\n 'header-disabled': disabled(),\r\n }\"\r\n [id]=\"headerId()\"\r\n [disabled]=\"disabled()\"\r\n [aria-expanded]=\"expanded()\"\r\n (click)=\"toggle()\"\r\n [attr.aria-controls]=\"contentId()\"\r\n >\r\n @if (headerTemplate()) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n headerTemplate();\r\n context: { $implicit: { panelId: panelId(), text: header(), expanded: expanded() } }\r\n \"\r\n ></ng-container>\r\n }\r\n <ngn-icon\r\n [defaultIcon]=\"expanded() ? 'chevron_up' : 'chevron_down'\"\r\n [icon]=\"expanded() ? iconExpanded() : iconCollapsed()\"\r\n />\r\n </button>\r\n</header>\r\n\r\n<div\r\n [ptInt]=\"this\"\r\n [ptClass]=\"{\r\n 'content-expander': true,\r\n 'content-expander-collapsed': !expanded(),\r\n }\"\r\n #content\r\n>\r\n <div\r\n [ptInt]=\"this\"\r\n [ptClass]=\"'content'\"\r\n [id]=\"contentId()\"\r\n [attr.aria-labelledby]=\"headerId()\"\r\n [aria-hidden]=\"!expanded()\"\r\n role=\"region\"\r\n >\r\n <ngn-defer\r\n [lazyContent]=\"contentTemplate()\"\r\n [open]=\"lazyInt() && !cacheInt() ? afterTransitionExpanded() : expanded()\"\r\n [hiddenOnClosed]=\"false\"\r\n [cache]=\"cacheInt()\"\r\n [lazy]=\"lazyInt()\"\r\n >\r\n <ng-content />\r\n </ngn-defer>\r\n </div>\r\n</div>\r\n\r\n<ng-template #defaultHeaderTemplate let-header [ngnTemplate]=\"templateTypes.header\">\r\n <span [ptInt]=\"this\" [ptClass]=\"'header-text'\">\r\n {{ header.text }}\r\n </span>\r\n</ng-template>\r\n" }]
187
187
  }], ctorParameters: () => [], propDecorators: { panelId: [{ type: i0.Input, args: [{ isSignal: true, alias: "panelId", required: false }] }], lazy: [{ type: i0.Input, args: [{ isSignal: true, alias: "lazy", required: false }] }], cache: [{ type: i0.Input, args: [{ isSignal: true, alias: "cache", required: false }] }], header: [{ type: i0.Input, args: [{ isSignal: true, alias: "header", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], _contentViewChild: [{ type: i0.ViewChild, args: ['content', { isSignal: true }] }] } });
@@ -1 +1 @@
1
- {"version":3,"file":"ngneers-controls-accordion.mjs","sources":["../../src/accordion/types.ts","../../src/accordion/accordion.ts","../../src/accordion/accordion.html","../../src/accordion/accordion-templates.ts","../../src/accordion/accordion-panel.ts","../../src/accordion/accordion-panel.html","../../src/accordion/ngneers-controls-accordion.ts"],"sourcesContent":["import { InjectionToken, type Signal } from '@angular/core';\r\n\r\nimport type { IconType } from '@ngneers/controls-custom-types';\r\n\r\nexport type HeaderTemplateType = {\r\n $implicit: {\r\n panelId: string;\r\n text?: string;\r\n expanded: boolean;\r\n };\r\n};\r\nexport type AccordionControl = {\r\n expandedPanels: Signal<string[]>;\r\n togglePanel: (panelId: string) => void;\r\n lazy: Signal<boolean>;\r\n cache: Signal<boolean>;\r\n iconExpanded: Signal<IconType>;\r\n iconCollapsed: Signal<IconType>;\r\n};\r\n\r\nexport const ACCORDION_CONTROL = new InjectionToken<AccordionControl>('AccordionControl');\r\n","import { booleanAttribute, ChangeDetectionStrategy, Component, input, model } from '@angular/core';\r\nimport { NgnBase, provideSelf } from '@ngneers/controls/base';\r\nimport { accordionControlTemplate } from '@ngneers/controls-themes/templates/accordion';\r\n\r\nimport { ACCORDION_CONTROL, type AccordionControl } from './types';\r\n\r\nimport type { IconType } from '@ngneers/controls-custom-types';\r\n\r\n/**\r\n * @category control\r\n */\r\n@Component({\r\n selector: 'ngn-accordion',\r\n imports: [],\r\n templateUrl: './accordion.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n provideSelf(NgnAccordion),\r\n {\r\n provide: ACCORDION_CONTROL,\r\n deps: [NgnAccordion],\r\n useFactory: (accordion: NgnAccordion) =>\r\n <AccordionControl>{\r\n expandedPanels: accordion.expandedPanels,\r\n togglePanel: accordion.togglePanel.bind(accordion),\r\n lazy: accordion.lazy,\r\n cache: accordion.cache,\r\n iconExpanded: accordion.iconExpanded,\r\n iconCollapsed: accordion.iconCollapsed,\r\n },\r\n },\r\n ],\r\n})\r\nexport class NgnAccordion extends NgnBase<'accordion'> {\r\n protected readonly theme = this.injectThemeTemplate(accordionControlTemplate, 'root');\r\n public readonly cache = input(false, { transform: booleanAttribute });\r\n public readonly lazy = input(false, { transform: booleanAttribute });\r\n\r\n /**\r\n * Whether multiple panels can be expanded at once.\r\n */\r\n public readonly iconExpanded = input<IconType>();\r\n public readonly iconCollapsed = input<IconType>();\r\n public readonly multiple = input(false, { transform: booleanAttribute });\r\n public readonly expandedPanels = model<string[]>([]);\r\n\r\n public togglePanel(panelId: string) {\r\n if (!this.multiple()) {\r\n if (this.expandedPanels().includes(panelId)) {\r\n this.expandedPanels.set([]);\r\n return;\r\n }\r\n this.expandedPanels.set([panelId]);\r\n return;\r\n }\r\n if (this.expandedPanels().includes(panelId)) {\r\n this.expandedPanels.update(panels => panels.filter(id => id !== panelId));\r\n } else {\r\n this.expandedPanels.update(panels => [...panels, panelId]);\r\n }\r\n }\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","<ng-content />\n","import { computed, contentChild, Directive, input, TemplateRef, viewChild } from '@angular/core';\r\nimport { templateTypesFn } from '@ngneers/controls/api/ng';\r\nimport { NgnBase } from '@ngneers/controls/base';\r\n\r\nimport type { HeaderTemplateType } from './types';\r\n\r\n@Directive()\r\nexport abstract class AccordionTemplates extends NgnBase<'accordionPanel'> {\r\n private readonly _defaultHeaderTemplate =\r\n viewChild.required<TemplateRef<HeaderTemplateType>>('defaultHeaderTemplate');\r\n private readonly _userHeaderTemplate = contentChild<TemplateRef<HeaderTemplateType>>('header');\r\n /**\r\n * Set a custom template for the header of the accordion panel.\r\n * Can also be set using an `<ng-template>` element with `#header` template reference variable.\r\n */\r\n public readonly templateHeader = input<TemplateRef<HeaderTemplateType> | null>(null);\r\n protected readonly headerTemplate = computed(\r\n () => this._userHeaderTemplate() ?? this.templateHeader() ?? this._defaultHeaderTemplate()\r\n );\r\n\r\n private readonly _userContentTemplate = contentChild<TemplateRef<unknown>>('content');\r\n /**\r\n * The required template for the content of the accordion panel.\r\n * Can also be set using an `<ng-template>` element with `#content` template reference variable.\r\n */\r\n public readonly templateContent = input<TemplateRef<unknown> | null>(null);\r\n protected readonly contentTemplate = computed(\r\n () => this._userContentTemplate() ?? this.templateContent()\r\n );\r\n\r\n /**\r\n * Types for the dialog templates.\r\n */\r\n public readonly templateTypes = templateTypesFn<{\r\n header: HeaderTemplateType;\r\n }>();\r\n}\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n afterRenderEffect,\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n ElementRef,\r\n inject,\r\n input,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { NgnTemplate } from '@ngneers/controls/api/ng';\r\nimport { provideSelf, NgnPt } from '@ngneers/controls/base';\r\nimport { NgnDefer } from '@ngneers/controls/defer';\r\nimport { NgnIcon } from '@ngneers/controls/icon';\r\nimport { generateElementId } from '@ngneers/controls/utils-ng';\r\nimport { accordionPanelControlTemplate } from '@ngneers/controls-themes/templates/accordion-panel';\r\n\r\nimport { AccordionTemplates } from './accordion-templates';\r\nimport { ACCORDION_CONTROL } from './types';\r\n\r\n/**\r\n * @category control\r\n */\r\n@Component({\r\n selector: 'ngn-accordion-panel',\r\n imports: [NgTemplateOutlet, NgnPt, NgnDefer, NgnTemplate, NgnIcon],\r\n templateUrl: './accordion-panel.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [provideSelf(NgnAccordionPanel)],\r\n})\r\nexport class NgnAccordionPanel extends AccordionTemplates {\r\n protected readonly theme = this.injectThemeTemplate(accordionPanelControlTemplate, 'root');\r\n\r\n private readonly _accordionControl = inject(ACCORDION_CONTROL);\r\n\r\n /**\r\n * The unique identifier for the accordion panel.\r\n * @default generateElementId()\r\n */\r\n public readonly panelId = input<string>(generateElementId());\r\n /**\r\n * Whether to lazily load the content of the panel when expanded.\r\n * @default false\r\n */\r\n public readonly lazy = input(null, { transform: booleanAttribute });\r\n /**\r\n * Whether to cache the content of the panel when {@link lazy} is enabled and the panel is closed.\r\n * @default false\r\n */\r\n public readonly cache = input(null, { transform: booleanAttribute });\r\n /**\r\n * The header text for the accordion panel.\r\n */\r\n public readonly header = input<string>();\r\n /**\r\n * Whether the accordion panel is disabled. Disabling will prevent user interaction,\r\n * but not automatically close the panel if it was already expanded, or is expanded programatically.\r\n * @default false\r\n */\r\n public readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n protected readonly iconExpanded = this._accordionControl.iconExpanded;\r\n protected readonly iconCollapsed = this._accordionControl.iconCollapsed;\r\n protected readonly _contentViewChild = viewChild.required<ElementRef<HTMLElement>>('content');\r\n\r\n protected readonly expanded = computed(() =>\r\n this._accordionControl.expandedPanels().includes(this.panelId())\r\n );\r\n\r\n protected readonly headerId = computed(() => `${this.panelId()}-accordionpanel-header`);\r\n protected readonly contentId = computed(() => `${this.panelId()}-accordionpanel-content`);\r\n\r\n protected readonly afterTransitionExpanded = signal<boolean>(false);\r\n\r\n protected readonly lazyInt = computed(() => this.lazy() ?? this._accordionControl.lazy());\r\n protected readonly cacheInt = computed(() => this.cache() ?? this._accordionControl.cache());\r\n\r\n constructor() {\r\n super();\r\n afterRenderEffect(() => {\r\n if (!this.lazyInt() || this.cacheInt()) {\r\n return;\r\n }\r\n if (this.expanded()) {\r\n this.afterTransitionExpanded.set(true);\r\n } else {\r\n requestAnimationFrame(() => {\r\n const allAnimationsDone = Promise.all(\r\n this._contentViewChild()\r\n .nativeElement.getAnimations()\r\n .map(x => x.finished)\r\n );\r\n allAnimationsDone\r\n .then(() => {\r\n this.afterTransitionExpanded.set(false);\r\n })\r\n .catch(() => {\r\n // ignore cancelled animation\r\n });\r\n });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Toggles the expanded state of the accordion panel.\r\n */\r\n public toggle() {\r\n this._accordionControl.togglePanel(this.panelId());\r\n }\r\n}\r\n","<header>\r\n <button\r\n [ptInt]=\"this\"\r\n [ptClass]=\"{\r\n header: true,\r\n 'header-disabled': disabled(),\r\n }\"\r\n [id]=\"headerId()\"\r\n [disabled]=\"disabled()\"\r\n [aria-expanded]=\"expanded()\"\r\n (click)=\"toggle()\"\r\n [attr.aria-controls]=\"contentId()\"\r\n >\r\n @if (headerTemplate()) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n headerTemplate();\r\n context: { $implicit: { panelId: panelId(), text: header(), expanded: expanded() } }\r\n \"\r\n ></ng-container>\r\n }\r\n <ngn-icon\r\n [defaultIcon]=\"expanded() ? 'chevron_up' : 'chevron_down'\"\r\n [icon]=\"expanded() ? iconExpanded() : iconCollapsed()\"\r\n />\r\n </button>\r\n</header>\r\n\r\n<div\r\n [ptInt]=\"this\"\r\n [ptClass]=\"{\r\n 'content-expander': true,\r\n 'content-expander-collapsed': !expanded(),\r\n }\"\r\n #content\r\n>\r\n <div\r\n [ptInt]=\"this\"\r\n [ptClass]=\"'content'\"\r\n [id]=\"contentId()\"\r\n [attr.aria-labelledby]=\"headerId()\"\r\n [aria-hidden]=\"!expanded()\"\r\n role=\"region\"\r\n >\r\n <ngn-defer\r\n [lazyContent]=\"contentTemplate()\"\r\n [open]=\"lazyInt() && !cacheInt() ? afterTransitionExpanded() : expanded()\"\r\n [hiddenOnClosed]=\"false\"\r\n [cache]=\"cacheInt()\"\r\n [lazy]=\"lazyInt()\"\r\n >\r\n <ng-content />\r\n </ngn-defer>\r\n </div>\r\n</div>\r\n\r\n<ng-template #defaultHeaderTemplate let-header [ngnTemplate]=\"templateTypes.header\">\r\n <span [ptInt]=\"this\" [ptClass]=\"'header-text'\">\r\n {{ header.text }}\r\n </span>\r\n</ng-template>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;AAoBO,MAAM,iBAAiB,GAAG,IAAI,cAAc,CAAmB,kBAAkB,CAAC;;ACZzF;;AAEG;AAuBG,MAAO,YAAa,SAAQ,OAAoB,CAAA;IACjC,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,wBAAwB,EAAE,MAAM,CAAC;IACrE,KAAK,GAAG,KAAK,CAAC,KAAK,kDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACrD,IAAI,GAAG,KAAK,CAAC,KAAK,iDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEpE;;AAEG;IACa,YAAY,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAY;IAChC,aAAa,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAY;IACjC,QAAQ,GAAG,KAAK,CAAC,KAAK,qDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACxD,IAAA,cAAc,GAAG,KAAK,CAAW,EAAE,0DAAC;AAE7C,IAAA,WAAW,CAAC,OAAe,EAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;YACpB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC3C,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B;YACF;YACA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;YAClC;QACF;QACA,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YAC3C,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,OAAO,CAAC,CAAC;QAC3E;aAAO;AACL,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,GAAG,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5D;IACF;AAEA,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;IACT;uGA/BW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,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,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,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,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,EAAA,SAAA,EAjBZ;YACT,WAAW,CAAC,YAAY,CAAC;AACzB,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;gBAC1B,IAAI,EAAE,CAAC,YAAY,CAAC;AACpB,gBAAA,UAAU,EAAE,CAAC,SAAuB,MAChB;oBAChB,cAAc,EAAE,SAAS,CAAC,cAAc;oBACxC,WAAW,EAAE,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;oBAClD,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,KAAK,EAAE,SAAS,CAAC,KAAK;oBACtB,YAAY,EAAE,SAAS,CAAC,YAAY;oBACpC,aAAa,EAAE,SAAS,CAAC,aAAa;iBACvC,CAAA;AACJ,aAAA;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/BH,kBACA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDgCa,YAAY,EAAA,UAAA,EAAA,CAAA;kBAtBxB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,WAChB,EAAE,EAAA,eAAA,EAEM,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACT,wBAAA,WAAW,CAAA,YAAA,CAAc;AACzB,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,IAAI,EAAE,CAAA,YAAA,CAAc;AACpB,4BAAA,UAAU,EAAE,CAAC,SAAuB,MAChB;gCAChB,cAAc,EAAE,SAAS,CAAC,cAAc;gCACxC,WAAW,EAAE,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;gCAClD,IAAI,EAAE,SAAS,CAAC,IAAI;gCACpB,KAAK,EAAE,SAAS,CAAC,KAAK;gCACtB,YAAY,EAAE,SAAS,CAAC,YAAY;gCACpC,aAAa,EAAE,SAAS,CAAC,aAAa;6BACvC,CAAA;AACJ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA;;;AExBG,MAAgB,kBAAmB,SAAQ,OAAyB,CAAA;AACvD,IAAA,sBAAsB,GACrC,SAAS,CAAC,QAAQ,CAAkC,uBAAuB,CAAC;AAC7D,IAAA,mBAAmB,GAAG,YAAY,CAAkC,QAAQ,+DAAC;AAC9F;;;AAGG;AACa,IAAA,cAAc,GAAG,KAAK,CAAyC,IAAI,0DAAC;IACjE,cAAc,GAAG,QAAQ,CAC1C,MAAM,IAAI,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,sBAAsB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAC3F;AAEgB,IAAA,oBAAoB,GAAG,YAAY,CAAuB,SAAS,gEAAC;AACrF;;;AAGG;AACa,IAAA,eAAe,GAAG,KAAK,CAA8B,IAAI,2DAAC;AACvD,IAAA,eAAe,GAAG,QAAQ,CAC3C,MAAM,IAAI,CAAC,oBAAoB,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE,2DAC5D;AAED;;AAEG;IACa,aAAa,GAAG,eAAe,EAE3C;uGA5BgB,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,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,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBADvC;oFAGuD,uBAAuB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CACQ,QAAQ,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAUlB,SAAS,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACGtF;;AAEG;AAQG,MAAO,iBAAkB,SAAQ,kBAAkB,CAAA;IACpC,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,6BAA6B,EAAE,MAAM,CAAC;AAEzE,IAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAE9D;;;AAGG;AACa,IAAA,OAAO,GAAG,KAAK,CAAS,iBAAiB,EAAE,mDAAC;AAC5D;;;AAGG;IACa,IAAI,GAAG,KAAK,CAAC,IAAI,iDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACnE;;;AAGG;IACa,KAAK,GAAG,KAAK,CAAC,IAAI,kDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACpE;;AAEG;IACa,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AACxC;;;;AAIG;IACa,QAAQ,GAAG,KAAK,CAAC,KAAK,qDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAErD,IAAA,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY;AAClD,IAAA,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa;AACpD,IAAA,iBAAiB,GAAG,SAAS,CAAC,QAAQ,CAA0B,SAAS,CAAC;IAE1E,QAAQ,GAAG,QAAQ,CAAC,MACrC,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACjE;AAEkB,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAA,EAAG,IAAI,CAAC,OAAO,EAAE,CAAA,sBAAA,CAAwB,oDAAC;AACpE,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAA,EAAG,IAAI,CAAC,OAAO,EAAE,CAAA,uBAAA,CAAyB,qDAAC;AAEtE,IAAA,uBAAuB,GAAG,MAAM,CAAU,KAAK,mEAAC;AAEhD,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,mDAAC;AACtE,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,oDAAC;AAE5F,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,iBAAiB,CAAC,MAAK;YACrB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;gBACtC;YACF;AACA,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,gBAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC;YACxC;iBAAO;gBACL,qBAAqB,CAAC,MAAK;oBACzB,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CACnC,IAAI,CAAC,iBAAiB;yBACnB,aAAa,CAAC,aAAa;yBAC3B,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CACxB;oBACD;yBACG,IAAI,CAAC,MAAK;AACT,wBAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC;AACzC,oBAAA,CAAC;yBACA,KAAK,CAAC,MAAK;;AAEZ,oBAAA,CAAC,CAAC;AACN,gBAAA,CAAC,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;IACJ;AAEA;;AAEG;IACI,MAAM,GAAA;QACX,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACpD;uGA/EW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,qrBAFjB,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/B7C,6oDA6DA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjCY,gBAAgB,oJAAE,KAAK,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,WAAW,8FAAE,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAKtD,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;+BACE,qBAAqB,EAAA,OAAA,EACtB,CAAC,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,EAAA,eAAA,EAEjD,uBAAuB,CAAC,MAAM,aACpC,CAAC,WAAW,mBAAmB,CAAC,EAAA,QAAA,EAAA,6oDAAA,EAAA;qjBAmCwC,SAAS,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AElE9F;;AAEG;;;;"}
1
+ {"version":3,"file":"ngneers-controls-accordion.mjs","sources":["../../src/accordion/types.ts","../../src/accordion/accordion.ts","../../src/accordion/accordion.html","../../src/accordion/accordion-templates.ts","../../src/accordion/accordion-panel.ts","../../src/accordion/accordion-panel.html","../../src/accordion/ngneers-controls-accordion.ts"],"sourcesContent":["import { InjectionToken, type Signal } from '@angular/core';\r\n\r\nimport type { IconType } from '@ngneers/controls-custom-types';\r\n\r\nexport type HeaderTemplateType = {\r\n $implicit: {\r\n panelId: string;\r\n text?: string;\r\n expanded: boolean;\r\n };\r\n};\r\nexport type AccordionControl = {\r\n expandedPanels: Signal<string[]>;\r\n togglePanel: (panelId: string) => void;\r\n lazy: Signal<boolean>;\r\n cache: Signal<boolean>;\r\n iconExpanded: Signal<IconType>;\r\n iconCollapsed: Signal<IconType>;\r\n};\r\n\r\nexport const ACCORDION_CONTROL = new InjectionToken<AccordionControl>('AccordionControl');\r\n","import { booleanAttribute, ChangeDetectionStrategy, Component, input, model } from '@angular/core';\r\nimport { NgnBase, provideSelf } from '@ngneers/controls/base';\r\nimport { accordionControlTemplate } from '@ngneers/controls-themes/templates/accordion';\r\n\r\nimport { ACCORDION_CONTROL, type AccordionControl } from './types';\r\n\r\nimport type { IconType } from '@ngneers/controls-custom-types';\r\n\r\n/**\r\n * @category control\r\n */\r\n@Component({\r\n selector: 'ngn-accordion',\r\n imports: [],\r\n templateUrl: './accordion.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n provideSelf(NgnAccordion),\r\n {\r\n provide: ACCORDION_CONTROL,\r\n deps: [NgnAccordion],\r\n useFactory: (accordion: NgnAccordion) =>\r\n <AccordionControl>{\r\n expandedPanels: accordion.expandedPanels,\r\n togglePanel: accordion.togglePanel.bind(accordion),\r\n lazy: accordion.lazy,\r\n cache: accordion.cache,\r\n iconExpanded: accordion.iconExpanded,\r\n iconCollapsed: accordion.iconCollapsed,\r\n },\r\n },\r\n ],\r\n})\r\nexport class NgnAccordion extends NgnBase<'accordion'> {\r\n protected readonly theme = this.injectThemeTemplate(accordionControlTemplate, 'root');\r\n public readonly cache = input(false, { transform: booleanAttribute });\r\n public readonly lazy = input(false, { transform: booleanAttribute });\r\n\r\n /**\r\n * Whether multiple panels can be expanded at once.\r\n */\r\n public readonly iconExpanded = input<IconType>();\r\n public readonly iconCollapsed = input<IconType>();\r\n public readonly multiple = input(false, { transform: booleanAttribute });\r\n public readonly expandedPanels = model<string[]>([]);\r\n\r\n public togglePanel(panelId: string) {\r\n if (!this.multiple()) {\r\n if (this.expandedPanels().includes(panelId)) {\r\n this.expandedPanels.set([]);\r\n return;\r\n }\r\n this.expandedPanels.set([panelId]);\r\n return;\r\n }\r\n if (this.expandedPanels().includes(panelId)) {\r\n this.expandedPanels.update(panels => panels.filter(id => id !== panelId));\r\n } else {\r\n this.expandedPanels.update(panels => [...panels, panelId]);\r\n }\r\n }\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","<ng-content />\n","import { computed, contentChild, Directive, input, TemplateRef, viewChild } from '@angular/core';\r\nimport { templateTypesFn } from '@ngneers/controls/api/ng';\r\nimport { NgnBase } from '@ngneers/controls/base';\r\n\r\nimport type { HeaderTemplateType } from './types';\r\n\r\n@Directive()\r\nexport abstract class AccordionTemplates extends NgnBase<'accordionPanel'> {\r\n private readonly _defaultHeaderTemplate =\r\n viewChild.required<TemplateRef<HeaderTemplateType>>('defaultHeaderTemplate');\r\n private readonly _userHeaderTemplate = contentChild<TemplateRef<HeaderTemplateType>>('header');\r\n /**\r\n * Set a custom template for the header of the accordion panel.\r\n * Can also be set using an `<ng-template>` element with `#header` template reference variable.\r\n */\r\n public readonly templateHeader = input<TemplateRef<HeaderTemplateType> | null>(null);\r\n protected readonly headerTemplate = computed(\r\n () => this._userHeaderTemplate() ?? this.templateHeader() ?? this._defaultHeaderTemplate()\r\n );\r\n\r\n private readonly _userContentTemplate = contentChild<TemplateRef<unknown>>('content');\r\n /**\r\n * The required template for the content of the accordion panel.\r\n * Can also be set using an `<ng-template>` element with `#content` template reference variable.\r\n */\r\n public readonly templateContent = input<TemplateRef<unknown> | null>(null);\r\n protected readonly contentTemplate = computed(\r\n () => this._userContentTemplate() ?? this.templateContent()\r\n );\r\n\r\n /**\r\n * Types for the dialog templates.\r\n */\r\n public readonly templateTypes = templateTypesFn<{\r\n header: HeaderTemplateType;\r\n }>();\r\n}\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n afterRenderEffect,\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n ElementRef,\r\n inject,\r\n input,\r\n signal,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { NgnTemplate } from '@ngneers/controls/api/ng';\r\nimport { provideSelf, NgnPt } from '@ngneers/controls/base';\r\nimport { NgnDefer } from '@ngneers/controls/defer';\r\nimport { NgnIcon } from '@ngneers/controls/icon';\r\nimport { generateElementId } from '@ngneers/controls/utils-ng';\r\nimport { accordionPanelControlTemplate } from '@ngneers/controls-themes/templates/accordion-panel';\r\n\r\nimport { AccordionTemplates } from './accordion-templates';\r\nimport { ACCORDION_CONTROL } from './types';\r\n\r\n/**\r\n * @category control\r\n */\r\n@Component({\r\n selector: 'ngn-accordion-panel',\r\n imports: [NgTemplateOutlet, NgnPt, NgnDefer, NgnTemplate, NgnIcon],\r\n templateUrl: './accordion-panel.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [provideSelf(NgnAccordionPanel)],\r\n})\r\nexport class NgnAccordionPanel extends AccordionTemplates {\r\n protected readonly theme = this.injectThemeTemplate(accordionPanelControlTemplate, 'root');\r\n\r\n private readonly _accordionControl = inject(ACCORDION_CONTROL);\r\n\r\n /**\r\n * The unique identifier for the accordion panel.\r\n * @default generateElementId()\r\n */\r\n public readonly panelId = input<string>(generateElementId());\r\n /**\r\n * Whether to lazily load the content of the panel when expanded.\r\n * @default false\r\n */\r\n public readonly lazy = input(null, { transform: booleanAttribute });\r\n /**\r\n * Whether to cache the content of the panel when {@link lazy} is enabled and the panel is closed.\r\n * @default false\r\n */\r\n public readonly cache = input(null, { transform: booleanAttribute });\r\n /**\r\n * The header text for the accordion panel.\r\n */\r\n public readonly header = input<string>();\r\n /**\r\n * Whether the accordion panel is disabled. Disabling will prevent user interaction,\r\n * but not automatically close the panel if it was already expanded, or is expanded programatically.\r\n * @default false\r\n */\r\n public readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n protected readonly iconExpanded = this._accordionControl.iconExpanded;\r\n protected readonly iconCollapsed = this._accordionControl.iconCollapsed;\r\n protected readonly _contentViewChild = viewChild.required<ElementRef<HTMLElement>>('content');\r\n\r\n protected readonly expanded = computed(() =>\r\n this._accordionControl.expandedPanels().includes(this.panelId())\r\n );\r\n\r\n protected readonly headerId = computed(() => `${this.panelId()}-accordionpanel-header`);\r\n protected readonly contentId = computed(() => `${this.panelId()}-accordionpanel-content`);\r\n\r\n protected readonly afterTransitionExpanded = signal<boolean>(false);\r\n\r\n protected readonly lazyInt = computed(() => this.lazy() ?? this._accordionControl.lazy());\r\n protected readonly cacheInt = computed(() => this.cache() ?? this._accordionControl.cache());\r\n\r\n constructor() {\r\n super();\r\n afterRenderEffect(() => {\r\n if (!this.lazyInt() || this.cacheInt()) {\r\n return;\r\n }\r\n if (this.expanded()) {\r\n this.afterTransitionExpanded.set(true);\r\n } else {\r\n requestAnimationFrame(() => {\r\n const allAnimationsDone = Promise.all(\r\n this._contentViewChild()\r\n .nativeElement.getAnimations()\r\n .map(x => x.finished)\r\n );\r\n allAnimationsDone\r\n .then(() => {\r\n this.afterTransitionExpanded.set(false);\r\n })\r\n .catch(() => {\r\n // ignore cancelled animation\r\n });\r\n });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Toggles the expanded state of the accordion panel.\r\n */\r\n public toggle() {\r\n this._accordionControl.togglePanel(this.panelId());\r\n }\r\n}\r\n","<header>\r\n <button\r\n [ptInt]=\"this\"\r\n [ptClass]=\"{\r\n header: true,\r\n 'header-disabled': disabled(),\r\n }\"\r\n [id]=\"headerId()\"\r\n [disabled]=\"disabled()\"\r\n [aria-expanded]=\"expanded()\"\r\n (click)=\"toggle()\"\r\n [attr.aria-controls]=\"contentId()\"\r\n >\r\n @if (headerTemplate()) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n headerTemplate();\r\n context: { $implicit: { panelId: panelId(), text: header(), expanded: expanded() } }\r\n \"\r\n ></ng-container>\r\n }\r\n <ngn-icon\r\n [defaultIcon]=\"expanded() ? 'chevron_up' : 'chevron_down'\"\r\n [icon]=\"expanded() ? iconExpanded() : iconCollapsed()\"\r\n />\r\n </button>\r\n</header>\r\n\r\n<div\r\n [ptInt]=\"this\"\r\n [ptClass]=\"{\r\n 'content-expander': true,\r\n 'content-expander-collapsed': !expanded(),\r\n }\"\r\n #content\r\n>\r\n <div\r\n [ptInt]=\"this\"\r\n [ptClass]=\"'content'\"\r\n [id]=\"contentId()\"\r\n [attr.aria-labelledby]=\"headerId()\"\r\n [aria-hidden]=\"!expanded()\"\r\n role=\"region\"\r\n >\r\n <ngn-defer\r\n [lazyContent]=\"contentTemplate()\"\r\n [open]=\"lazyInt() && !cacheInt() ? afterTransitionExpanded() : expanded()\"\r\n [hiddenOnClosed]=\"false\"\r\n [cache]=\"cacheInt()\"\r\n [lazy]=\"lazyInt()\"\r\n >\r\n <ng-content />\r\n </ngn-defer>\r\n </div>\r\n</div>\r\n\r\n<ng-template #defaultHeaderTemplate let-header [ngnTemplate]=\"templateTypes.header\">\r\n <span [ptInt]=\"this\" [ptClass]=\"'header-text'\">\r\n {{ header.text }}\r\n </span>\r\n</ng-template>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -128,7 +128,7 @@ function elementsSizesSignal(element, active) {
128
128
  return elementsSizesSignalInt(element, active);
129
129
  }
130
130
  function elementsSizesSignalInt(element, active) {
131
- const sizeSignal = signal([], { ...(ngDevMode ? { debugName: "sizeSignal" } : {}), equal: (a, b) => JSON.stringify(a) === JSON.stringify(b) });
131
+ const sizeSignal = signal([], { ...(ngDevMode ? { debugName: "sizeSignal" } : /* istanbul ignore next */ {}), equal: (a, b) => JSON.stringify(a) === JSON.stringify(b) });
132
132
  let elements;
133
133
  afterRenderEffect(() => {
134
134
  resizeObserver.disconnect();
@@ -231,7 +231,7 @@ function domEventObservable(element, eventName, injector) {
231
231
  function domEventSignal(element, eventName, injector) {
232
232
  const inj = injector ?? inject(Injector);
233
233
  const res = runInInjectionContext(inj, () => {
234
- const sig = signal(null, ...(ngDevMode ? [{ debugName: "sig" }] : []));
234
+ const sig = signal(null, ...(ngDevMode ? [{ debugName: "sig" }] : /* istanbul ignore next */ []));
235
235
  domEventObservable(element, eventName, inj).subscribe(value => {
236
236
  sig.set(value);
237
237
  });
@@ -250,11 +250,11 @@ function domEventHandler(element, eventName, handler, injector) {
250
250
  const inj = injector ?? inject(Injector);
251
251
  const destroyRef = inj.get(DestroyRef);
252
252
  runInInjectionContext(inj, () => {
253
- const destroyed = signal(false, ...(ngDevMode ? [{ debugName: "destroyed" }] : []));
253
+ const destroyed = signal(false, ...(ngDevMode ? [{ debugName: "destroyed" }] : /* istanbul ignore next */ []));
254
254
  destroyRef.onDestroy(() => {
255
255
  destroyed.set(true);
256
256
  });
257
- const elSig = computed(() => (destroyed() ? null : getElement(element)), ...(ngDevMode ? [{ debugName: "elSig" }] : []));
257
+ const elSig = computed(() => (destroyed() ? null : getElement(element)), ...(ngDevMode ? [{ debugName: "elSig" }] : /* istanbul ignore next */ []));
258
258
  const elSigWithPrev = signalWithPrevious(elSig);
259
259
  effect(() => {
260
260
  const element = elSigWithPrev();
@@ -301,13 +301,13 @@ function injectThemeColors(controlName) {
301
301
  }
302
302
 
303
303
  class Platform {
304
- _deviceType = signal('desktop', ...(ngDevMode ? [{ debugName: "_deviceType" }] : []));
304
+ _deviceType = signal('desktop', ...(ngDevMode ? [{ debugName: "_deviceType" }] : /* istanbul ignore next */ []));
305
305
  isBrowser = isPlatformBrowser(inject(PLATFORM_ID));
306
306
  windowSize = this.isBrowser
307
307
  ? elementSizeSignal(document.body)
308
308
  : signal({ width: 0, height: 0 });
309
- width = computed(() => this.windowSize().width, ...(ngDevMode ? [{ debugName: "width" }] : []));
310
- height = computed(() => this.windowSize().height, ...(ngDevMode ? [{ debugName: "height" }] : []));
309
+ width = computed(() => this.windowSize().width, ...(ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []));
310
+ height = computed(() => this.windowSize().height, ...(ngDevMode ? [{ debugName: "height" }] : /* istanbul ignore next */ []));
311
311
  constructor() {
312
312
  const doc = inject(DOCUMENT);
313
313
  const win = doc.defaultView;
@@ -333,11 +333,11 @@ class Platform {
333
333
  }
334
334
  isTouchDevice = computed(() => {
335
335
  return this._deviceType() === 'mobile' || this._deviceType() === 'tablet';
336
- }, ...(ngDevMode ? [{ debugName: "isTouchDevice" }] : []));
337
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: Platform, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
338
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: Platform });
336
+ }, ...(ngDevMode ? [{ debugName: "isTouchDevice" }] : /* istanbul ignore next */ []));
337
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: Platform, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
338
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: Platform });
339
339
  }
340
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: Platform, decorators: [{
340
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: Platform, decorators: [{
341
341
  type: Injectable
342
342
  }], ctorParameters: () => [] });
343
343
 
@@ -542,7 +542,7 @@ class ThemeService {
542
542
  _config = inject(NGN_CONFIG);
543
543
  _loadedScopes = new Set();
544
544
  _document = inject(DOCUMENT);
545
- activeTheme = signal(this._config.theme?.preset, ...(ngDevMode ? [{ debugName: "activeTheme" }] : []));
545
+ activeTheme = signal(this._config.theme?.preset, ...(ngDevMode ? [{ debugName: "activeTheme" }] : /* istanbul ignore next */ []));
546
546
  constructor() {
547
547
  if (!this._config.theme?.preset && !this._config.theme?.lazyLoaded) {
548
548
  console.warn('No active theme found. Please provide a theme in the configuration or set lazyLoaded to true if you plan to load themes dynamically.');
@@ -613,10 +613,10 @@ class ThemeService {
613
613
  namePrefix: this._config.theme.namePrefix,
614
614
  });
615
615
  }
616
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
617
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ThemeService });
616
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: ThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
617
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: ThemeService });
618
618
  }
619
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ThemeService, decorators: [{
619
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: ThemeService, decorators: [{
620
620
  type: Injectable
621
621
  }], ctorParameters: () => [] });
622
622
 
@@ -632,14 +632,14 @@ function provideNgnControls(config, ...features) {
632
632
  }
633
633
 
634
634
  class NgnTemplate {
635
- ngnTemplate = input.required(...(ngDevMode ? [{ debugName: "ngnTemplate" }] : []));
635
+ ngnTemplate = input.required(...(ngDevMode ? [{ debugName: "ngnTemplate" }] : /* istanbul ignore next */ []));
636
636
  static ngTemplateContextGuard(dir, ctx) {
637
637
  return true;
638
638
  }
639
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgnTemplate, deps: [], target: i0.ɵɵFactoryTarget.Directive });
640
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.0", type: NgnTemplate, isStandalone: true, selector: "ng-template[ngnTemplate]", inputs: { ngnTemplate: { classPropertyName: "ngnTemplate", publicName: "ngnTemplate", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });
639
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: NgnTemplate, deps: [], target: i0.ɵɵFactoryTarget.Directive });
640
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.2", type: NgnTemplate, isStandalone: true, selector: "ng-template[ngnTemplate]", inputs: { ngnTemplate: { classPropertyName: "ngnTemplate", publicName: "ngnTemplate", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });
641
641
  }
642
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgnTemplate, decorators: [{
642
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: NgnTemplate, decorators: [{
643
643
  type: Directive,
644
644
  args: [{
645
645
  selector: 'ng-template[ngnTemplate]',