@infineon/infineon-design-system-stencil 39.4.4--canary.2134.84be7b9e85db8400d052b6d3b5addde807790384.0 → 39.4.4--canary.2136.61ca080385a85b28f9e73c1ac2fcb72fcc5e023a.0

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 (157) hide show
  1. package/dist/cjs/_commonjsHelpers-CFO10eej.js +10 -0
  2. package/dist/cjs/_commonjsHelpers-CFO10eej.js.map +1 -0
  3. package/dist/cjs/ifx-action-list-item.cjs.entry.js +2 -1
  4. package/dist/cjs/ifx-action-list-item.cjs.entry.js.map +1 -1
  5. package/dist/cjs/ifx-action-list-item.entry.cjs.js.map +1 -1
  6. package/dist/cjs/ifx-basic-table.cjs.entry.js +2 -1
  7. package/dist/cjs/ifx-basic-table.cjs.entry.js.map +1 -1
  8. package/dist/cjs/ifx-basic-table.entry.cjs.js.map +1 -1
  9. package/dist/cjs/ifx-button.cjs.entry.js +146 -0
  10. package/dist/cjs/ifx-button.cjs.entry.js.map +1 -0
  11. package/dist/cjs/ifx-button.entry.cjs.js.map +1 -0
  12. package/dist/cjs/ifx-checkbox.cjs.entry.js +125 -0
  13. package/dist/cjs/ifx-checkbox.cjs.entry.js.map +1 -0
  14. package/dist/cjs/ifx-checkbox.entry.cjs.js.map +1 -0
  15. package/dist/cjs/ifx-chip.ifx-chip-item.ifx-pagination.entry.cjs.js.map +1 -0
  16. package/dist/cjs/ifx-chip_3.cjs.entry.js +615 -0
  17. package/dist/cjs/ifx-chip_3.cjs.entry.js.map +1 -0
  18. package/dist/cjs/ifx-icon-button.cjs.entry.js +76 -0
  19. package/dist/cjs/ifx-icon-button.cjs.entry.js.map +1 -0
  20. package/dist/cjs/ifx-icon-button.entry.cjs.js.map +1 -0
  21. package/dist/cjs/ifx-icon.cjs.entry.js +127 -0
  22. package/dist/cjs/ifx-icon.cjs.entry.js.map +1 -0
  23. package/dist/cjs/ifx-icon.entry.cjs.js.map +1 -0
  24. package/dist/cjs/ifx-indicator.cjs.entry.js +42 -0
  25. package/dist/cjs/ifx-indicator.cjs.entry.js.map +1 -0
  26. package/dist/cjs/ifx-indicator.entry.cjs.js.map +1 -0
  27. package/dist/cjs/ifx-link.cjs.entry.js +2 -1
  28. package/dist/cjs/ifx-link.cjs.entry.js.map +1 -1
  29. package/dist/cjs/ifx-link.entry.cjs.js.map +1 -1
  30. package/dist/cjs/ifx-search-field.cjs.entry.js +2 -1
  31. package/dist/cjs/ifx-search-field.cjs.entry.js.map +1 -1
  32. package/dist/cjs/ifx-search-field.entry.cjs.js.map +1 -1
  33. package/dist/cjs/ifx-select.cjs.entry.js +7323 -0
  34. package/dist/cjs/ifx-select.cjs.entry.js.map +1 -0
  35. package/dist/cjs/ifx-select.entry.cjs.js.map +1 -0
  36. package/dist/cjs/ifx-spinner.ifx-text-field.entry.cjs.js.map +1 -1
  37. package/dist/cjs/ifx-spinner_2.cjs.entry.js +2 -1
  38. package/dist/cjs/ifx-spinner_2.cjs.entry.js.map +1 -1
  39. package/dist/cjs/ifx-status.cjs.entry.js +1 -1
  40. package/dist/cjs/ifx-status.cjs.entry.js.map +1 -1
  41. package/dist/cjs/ifx-status.entry.cjs.js.map +1 -1
  42. package/dist/cjs/ifx-table.cjs.entry.js +1118 -0
  43. package/dist/cjs/ifx-table.cjs.entry.js.map +1 -0
  44. package/dist/cjs/ifx-table.entry.cjs.js.map +1 -0
  45. package/dist/cjs/{index-DihxupoM.js → index-CVw4GUo6.js} +4 -7
  46. package/dist/{esm/index-Beav1bNT.js.map → cjs/index-CVw4GUo6.js.map} +1 -1
  47. package/dist/cjs/index-Dc5gCGlQ.js +30 -2
  48. package/dist/cjs/infineon-design-system-stencil.cjs.js +1 -1
  49. package/dist/cjs/loader.cjs.js +1 -1
  50. package/dist/collection/components/status/status.css +1 -1
  51. package/dist/collection/components/table-advanced-version/table.js +38 -137
  52. package/dist/collection/components/table-advanced-version/table.js.map +1 -1
  53. package/dist/components/ifx-status.js +1 -1
  54. package/dist/components/ifx-status.js.map +1 -1
  55. package/dist/components/ifx-table.js +37 -136
  56. package/dist/components/ifx-table.js.map +1 -1
  57. package/dist/esm/_commonjsHelpers-B85MJLTf.js +8 -0
  58. package/dist/esm/_commonjsHelpers-B85MJLTf.js.map +1 -0
  59. package/dist/esm/ifx-action-list-item.entry.js +2 -1
  60. package/dist/esm/ifx-action-list-item.entry.js.map +1 -1
  61. package/dist/esm/ifx-basic-table.entry.js +2 -1
  62. package/dist/esm/ifx-basic-table.entry.js.map +1 -1
  63. package/dist/esm/ifx-button.entry.js +144 -0
  64. package/dist/esm/ifx-button.entry.js.map +1 -0
  65. package/dist/esm/ifx-checkbox.entry.js +123 -0
  66. package/dist/esm/ifx-checkbox.entry.js.map +1 -0
  67. package/dist/esm/ifx-chip.ifx-chip-item.ifx-pagination.entry.js.map +1 -0
  68. package/dist/esm/ifx-chip_3.entry.js +611 -0
  69. package/dist/esm/ifx-chip_3.entry.js.map +1 -0
  70. package/dist/esm/ifx-icon-button.entry.js +74 -0
  71. package/dist/esm/ifx-icon-button.entry.js.map +1 -0
  72. package/dist/esm/ifx-icon.entry.js +125 -0
  73. package/dist/esm/ifx-icon.entry.js.map +1 -0
  74. package/dist/esm/ifx-indicator.entry.js +40 -0
  75. package/dist/esm/ifx-indicator.entry.js.map +1 -0
  76. package/dist/esm/ifx-link.entry.js +2 -1
  77. package/dist/esm/ifx-link.entry.js.map +1 -1
  78. package/dist/esm/ifx-search-field.entry.js +2 -1
  79. package/dist/esm/ifx-search-field.entry.js.map +1 -1
  80. package/dist/esm/ifx-select.entry.js +7321 -0
  81. package/dist/esm/ifx-select.entry.js.map +1 -0
  82. package/dist/esm/ifx-spinner.ifx-text-field.entry.js.map +1 -1
  83. package/dist/esm/ifx-spinner_2.entry.js +2 -1
  84. package/dist/esm/ifx-spinner_2.entry.js.map +1 -1
  85. package/dist/esm/ifx-status.entry.js +1 -1
  86. package/dist/esm/ifx-status.entry.js.map +1 -1
  87. package/dist/esm/ifx-table.entry.js +1116 -0
  88. package/dist/esm/ifx-table.entry.js.map +1 -0
  89. package/dist/esm/{index-Beav1bNT.js → index-Bt32KzDW.js} +4 -6
  90. package/dist/{cjs/index-DihxupoM.js.map → esm/index-Bt32KzDW.js.map} +1 -1
  91. package/dist/esm/index-PqnYwNKt.js +30 -2
  92. package/dist/esm/infineon-design-system-stencil.js +1 -1
  93. package/dist/esm/loader.js +1 -1
  94. package/dist/infineon-design-system-stencil/ifx-action-list-item.entry.esm.js.map +1 -1
  95. package/dist/infineon-design-system-stencil/ifx-basic-table.entry.esm.js.map +1 -1
  96. package/dist/infineon-design-system-stencil/ifx-button.entry.esm.js.map +1 -0
  97. package/dist/infineon-design-system-stencil/ifx-checkbox.entry.esm.js.map +1 -0
  98. package/dist/infineon-design-system-stencil/ifx-chip.ifx-chip-item.ifx-pagination.entry.esm.js.map +1 -0
  99. package/dist/infineon-design-system-stencil/ifx-icon-button.entry.esm.js.map +1 -0
  100. package/dist/infineon-design-system-stencil/ifx-icon.entry.esm.js.map +1 -0
  101. package/dist/infineon-design-system-stencil/ifx-indicator.entry.esm.js.map +1 -0
  102. package/dist/infineon-design-system-stencil/ifx-link.entry.esm.js.map +1 -1
  103. package/dist/infineon-design-system-stencil/ifx-search-field.entry.esm.js.map +1 -1
  104. package/dist/infineon-design-system-stencil/ifx-select.entry.esm.js.map +1 -0
  105. package/dist/infineon-design-system-stencil/ifx-spinner.ifx-text-field.entry.esm.js.map +1 -1
  106. package/dist/infineon-design-system-stencil/ifx-status.entry.esm.js.map +1 -1
  107. package/dist/infineon-design-system-stencil/ifx-table.entry.esm.js.map +1 -0
  108. package/dist/infineon-design-system-stencil/infineon-design-system-stencil.esm.js +1 -1
  109. package/dist/infineon-design-system-stencil/p-169f26ae.entry.js +2 -0
  110. package/dist/infineon-design-system-stencil/{p-6fd710a6.entry.js.map → p-169f26ae.entry.js.map} +1 -1
  111. package/dist/infineon-design-system-stencil/p-39561a49.entry.js +2 -0
  112. package/dist/infineon-design-system-stencil/p-39561a49.entry.js.map +1 -0
  113. package/dist/infineon-design-system-stencil/p-3d77ef02.entry.js +2 -0
  114. package/dist/infineon-design-system-stencil/{p-81f0d6ad.entry.js.map → p-3d77ef02.entry.js.map} +1 -1
  115. package/dist/infineon-design-system-stencil/p-4da5a2a5.entry.js +2 -0
  116. package/dist/infineon-design-system-stencil/p-4da5a2a5.entry.js.map +1 -0
  117. package/dist/infineon-design-system-stencil/p-4fba0543.entry.js +2 -0
  118. package/dist/infineon-design-system-stencil/{p-7b705420.entry.js.map → p-4fba0543.entry.js.map} +1 -1
  119. package/dist/infineon-design-system-stencil/p-5e3d0ff0.entry.js +2 -0
  120. package/dist/infineon-design-system-stencil/p-5e3d0ff0.entry.js.map +1 -0
  121. package/dist/infineon-design-system-stencil/p-5fb3eb8b.entry.js +2 -0
  122. package/dist/infineon-design-system-stencil/p-5fb3eb8b.entry.js.map +1 -0
  123. package/dist/infineon-design-system-stencil/{p-f1ba768a.entry.js → p-65bc82a4.entry.js} +2 -2
  124. package/dist/infineon-design-system-stencil/p-65bc82a4.entry.js.map +1 -0
  125. package/dist/infineon-design-system-stencil/p-6e115707.entry.js +2 -0
  126. package/dist/infineon-design-system-stencil/{p-1b5dce92.entry.js.map → p-6e115707.entry.js.map} +1 -1
  127. package/dist/infineon-design-system-stencil/p-8a58c2be.entry.js +2 -0
  128. package/dist/infineon-design-system-stencil/p-8a58c2be.entry.js.map +1 -0
  129. package/dist/infineon-design-system-stencil/p-B85MJLTf.js +2 -0
  130. package/dist/infineon-design-system-stencil/p-B85MJLTf.js.map +1 -0
  131. package/dist/infineon-design-system-stencil/{p-Beav1bNT.js → p-DMLRPGid.js} +3 -3
  132. package/dist/infineon-design-system-stencil/{p-Beav1bNT.js.map → p-DMLRPGid.js.map} +1 -1
  133. package/dist/infineon-design-system-stencil/p-a85754a5.entry.js +3 -0
  134. package/dist/infineon-design-system-stencil/p-a85754a5.entry.js.map +1 -0
  135. package/dist/infineon-design-system-stencil/p-abd8bd80.entry.js +2 -0
  136. package/dist/infineon-design-system-stencil/p-abd8bd80.entry.js.map +1 -0
  137. package/dist/infineon-design-system-stencil/p-fcae5dc1.entry.js +2 -0
  138. package/dist/infineon-design-system-stencil/{p-646620f9.entry.js.map → p-fcae5dc1.entry.js.map} +1 -1
  139. package/dist/infineon-design-system-stencil/p-ff4cc197.entry.js +2 -0
  140. package/dist/infineon-design-system-stencil/p-ff4cc197.entry.js.map +1 -0
  141. package/dist/types/components/table-advanced-version/table.d.ts +0 -1
  142. package/package.json +1 -1
  143. package/dist/cjs/ifx-button.ifx-checkbox.ifx-chip.ifx-chip-item.ifx-icon.ifx-icon-button.ifx-indicator.ifx-pagination.ifx-select.ifx-table.entry.cjs.js.map +0 -1
  144. package/dist/cjs/ifx-button_10.cjs.entry.js +0 -9601
  145. package/dist/cjs/ifx-button_10.cjs.entry.js.map +0 -1
  146. package/dist/esm/ifx-button.ifx-checkbox.ifx-chip.ifx-chip-item.ifx-icon.ifx-icon-button.ifx-indicator.ifx-pagination.ifx-select.ifx-table.entry.js.map +0 -1
  147. package/dist/esm/ifx-button_10.entry.js +0 -9590
  148. package/dist/esm/ifx-button_10.entry.js.map +0 -1
  149. package/dist/infineon-design-system-stencil/ifx-button.ifx-checkbox.ifx-chip.ifx-chip-item.ifx-icon.ifx-icon-button.ifx-indicator.ifx-pagination.ifx-select.ifx-table.entry.esm.js.map +0 -1
  150. package/dist/infineon-design-system-stencil/p-1b5dce92.entry.js +0 -2
  151. package/dist/infineon-design-system-stencil/p-330f97aa.entry.js +0 -3
  152. package/dist/infineon-design-system-stencil/p-330f97aa.entry.js.map +0 -1
  153. package/dist/infineon-design-system-stencil/p-646620f9.entry.js +0 -2
  154. package/dist/infineon-design-system-stencil/p-6fd710a6.entry.js +0 -2
  155. package/dist/infineon-design-system-stencil/p-7b705420.entry.js +0 -2
  156. package/dist/infineon-design-system-stencil/p-81f0d6ad.entry.js +0 -2
  157. package/dist/infineon-design-system-stencil/p-f1ba768a.entry.js.map +0 -1
@@ -0,0 +1,615 @@
1
+ 'use strict';
2
+
3
+ var index = require('./index-Dc5gCGlQ.js');
4
+ var frameworkDetection = require('./framework-detection-C_6nNXcS.js');
5
+ var domUtils = require('./dom-utils-dykhxr-_.js');
6
+
7
+ const chipCss = ":root{--ifx-font-family:\"Source Sans 3\", \"Arial, sans-serif\"}:host{display:inline-block}.chip{position:relative}.chip__wrapper{display:inline-flex;align-items:center;justify-content:center;gap:8px;box-sizing:border-box;border-radius:9999px;background:#FFFFFF;cursor:pointer;transition:border 100ms ease;font:400 0.875rem/1.25rem \"Source Sans 3\"}.chip__wrapper .icon__wrapper{display:flex}.chip__wrapper.outlined,.chip__wrapper.filled-dark,.chip__wrapper.filled-light{outline:2px solid transparent}.chip__wrapper.outlined:focus-visible,.chip__wrapper.filled-dark:focus-visible,.chip__wrapper.filled-light:focus-visible{outline:2px solid #0A8276;outline-offset:2px}.chip__wrapper.outlined.chip__wrapper--opened .wrapper__open-button,.chip__wrapper.filled-dark.chip__wrapper--opened .wrapper__open-button,.chip__wrapper.filled-light.chip__wrapper--opened .wrapper__open-button{transform:rotate(-180deg)}.chip__wrapper.outlined.chip__wrapper--selected .wrapper__label .label__selected-options,.chip__wrapper.filled-dark.chip__wrapper--selected .wrapper__label .label__selected-options,.chip__wrapper.filled-light.chip__wrapper--selected .wrapper__label .label__selected-options{font:400 0.875rem/1.25rem \"Source Sans 3\"}.chip__wrapper.filled-dark.chip__wrapper--selected:not(.read-only),.chip__wrapper.filled-light.chip__wrapper--selected:not(.read-only){background-color:#0A8276;color:white}.chip__wrapper.filled-dark.chip__wrapper--selected:not(.read-only):hover,.chip__wrapper.filled-light.chip__wrapper--selected:not(.read-only):hover{background-color:#08665C}.chip__wrapper.filled-dark.chip__wrapper--selected:not(.read-only):hover.disabled,.chip__wrapper.filled-light.chip__wrapper--selected:not(.read-only):hover.disabled{background-color:#0A8276}.chip__wrapper.outlined{border:1px solid #8D8786}.chip__wrapper.outlined:hover:not(.read-only){border-color:#575352;background-color:#F7F7F7}.chip__wrapper.outlined:active:not(.read-only){border-color:#575352;background-color:#BFBBBB}.chip__wrapper.outlined.chip__wrapper--opened{border:1px solid #0A8276}.chip__wrapper.outlined.chip__wrapper--selected{outline:3px solid #0A8276;border:1px solid transparent;background-color:white}.chip__wrapper.outlined.chip__wrapper--selected:focus-visible{outline-offset:0px}.chip__wrapper.outlined.chip__wrapper--selected:hover:not(.read-only){outline-color:#08665C}.chip__wrapper.outlined.chip__wrapper--selected.read-only{outline:none;border:1px solid black}.chip__wrapper.outlined.disabled{outline:none;color:#BFBBBB;border:1px solid #BFBBBB}.chip__wrapper.outlined.disabled:hover{outline:none;border-color:#BFBBBB;background-color:white}.chip__wrapper.outlined.read-only{border:1px solid black}.chip__wrapper.outlined.read-only:focus-visible{outline:2px solid #0A8276;outline-offset:2px}.chip__wrapper.filled-dark{background-color:#3C3A39;color:white}.chip__wrapper.filled-dark:hover:not(.chip__wrapper--selected,.disabled,.read-only){background-color:#575352}.chip__wrapper.filled-dark:active:not(.chip__wrapper--selected,.disabled,.read-only){background-color:#8D8786;color:black}.chip__wrapper.filled-dark.disabled{outline:none;color:#BFBBBB}.chip__wrapper.filled-dark.disabled:hover:not(.chip__wrapper--selected){background-color:#3C3A39}.chip__wrapper.filled-dark.chip__wrapper--selected.read-only{border:1px solid #8D8786}.chip__wrapper.filled-dark.read-only{border:1px solid #8D8786}.chip__wrapper.filled-light{background-color:#EEEDED}.chip__wrapper.filled-light:hover:not(.read-only){background-color:#BFBBBB}.chip__wrapper.filled-light:active:not(.read-only){background-color:#8D8786}.chip__wrapper.filled-light.disabled{outline:none;color:#BFBBBB}.chip__wrapper.filled-light.disabled:hover:not(.chip__wrapper--selected){background-color:#EEEDED}.chip__wrapper.filled-light.chip__wrapper--selected.read-only{border:1px solid black}.chip__wrapper.filled-light.read-only{border:1px solid black}.chip__wrapper.chip__wrapper--small{padding:4px 8px;height:24px}.chip__wrapper.chip__wrapper--medium{padding:4px 12px;height:28px}.chip__wrapper.chip__wrapper--large{padding:8px 12px;height:36px}.wrapper__label{display:inline-flex;align-items:center;gap:4px}.wrapper__label .label__selected-options{font:600 0.875rem/1.25rem \"Source Sans 3\"}.wrapper__open-button{display:flex;align-items:center}.wrapper__unselect-button{display:flex;align-items:center}.chip__dropdown{position:absolute;z-index:1;box-shadow:0px 6px 9px 0px rgba(29, 29, 29, 0.1019607843);border:1px solid #EEEDED;border-radius:1px;padding:8px 0;min-width:222px;background-color:#FFFFFF}";
8
+
9
+ const Chip = class {
10
+ constructor(hostRef) {
11
+ index.registerInstance(this, hostRef);
12
+ this.ifxChange = index.createEvent(this, "ifxChange", 7);
13
+ this.placeholder = '';
14
+ this.size = 'medium';
15
+ this.value = undefined;
16
+ this.variant = 'single';
17
+ this.theme = 'outlined';
18
+ this.readOnly = false;
19
+ this.disabled = false;
20
+ this.icon = "";
21
+ this.opened = false;
22
+ this.selectedOptions = [];
23
+ }
24
+ handleValueChange(newValue) {
25
+ this.syncSelectedOptionsWithProp(newValue);
26
+ }
27
+ handleReadOnlyChange(newValue) {
28
+ if (newValue) {
29
+ this.opened = false;
30
+ }
31
+ }
32
+ closeDropdownOnOutsideClick(event) {
33
+ const path = event.composedPath();
34
+ const chipWrapper = this.chip.shadowRoot.querySelector('.chip__wrapper');
35
+ const chipDropdown = this.chip.shadowRoot.querySelector('.chip__dropdown');
36
+ if (!path.includes(chipDropdown) && !path.includes(chipWrapper) && this.opened) {
37
+ this.toggleDropdownMenu();
38
+ }
39
+ }
40
+ handleKeyDown(event) {
41
+ // override behavior of all keys except Tab. Users should be able to tab out of the component.
42
+ if (event.code !== 'Tab') {
43
+ event.preventDefault();
44
+ }
45
+ if (event.target.tagName === 'IFX-CHIP') {
46
+ this.handleWrapperKeyDown(event);
47
+ }
48
+ else if (event.target.tagName === 'IFX-CHIP-ITEM') {
49
+ this.handleDropdownKeyDown(event);
50
+ }
51
+ }
52
+ updateSelectedOptions(event) {
53
+ const eventDetail = event.detail;
54
+ const previousSelection = [...this.selectedOptions];
55
+ if (this.variant !== 'multi') {
56
+ if (eventDetail.selected) {
57
+ this.opened = false;
58
+ const chipItems = this.getChipItems();
59
+ chipItems.forEach((chipItem) => {
60
+ if (chipItem.selected && chipItem !== event.target) {
61
+ chipItem.chipState = Object.assign(Object.assign({}, chipItem.chipState), { emitIfxChipItemSelect: false });
62
+ chipItem.selected = false;
63
+ }
64
+ });
65
+ this.selectedOptions = [eventDetail];
66
+ }
67
+ else {
68
+ this.selectedOptions = [];
69
+ }
70
+ this.value = this.selectedOptions[0] ? this.selectedOptions[0].value : undefined;
71
+ }
72
+ else {
73
+ if (eventDetail.selected) {
74
+ // Prevent duplicate entries
75
+ if (!this.selectedOptions.find(option => option.value === eventDetail.value)) {
76
+ this.selectedOptions = [...this.selectedOptions, eventDetail];
77
+ }
78
+ }
79
+ else {
80
+ this.selectedOptions = this.selectedOptions.filter((option) => option.value !== eventDetail.value);
81
+ }
82
+ this.value = this.selectedOptions.map((option) => option.value);
83
+ }
84
+ if (eventDetail.emitIfxChange) {
85
+ this.ifxChange.emit({
86
+ previousSelection: previousSelection,
87
+ currentSelection: this.selectedOptions,
88
+ name: this.placeholder
89
+ });
90
+ }
91
+ }
92
+ getChipItems() {
93
+ return this.chip.querySelectorAll('ifx-chip-item');
94
+ }
95
+ getSelectedOptions() {
96
+ if (this.variant !== 'multi') {
97
+ return this.selectedOptions.map(option => option.label).join('');
98
+ }
99
+ return this.selectedOptions.slice(0, 2).map(option => option.label).join(', ');
100
+ }
101
+ toggleDropdownMenu() {
102
+ if (this.readOnly)
103
+ return;
104
+ this.opened = !this.opened;
105
+ }
106
+ /**
107
+ * Focuses the chip item at the specified index.
108
+ * @param index the index of the chip item to focus. -1 will focus the last chip item.
109
+ */
110
+ focusChipItemAt(index = 0) {
111
+ this.opened = true;
112
+ const chipItems = this.getChipItems();
113
+ let item;
114
+ if (index === -1) {
115
+ item = chipItems.item(chipItems.length - 1);
116
+ }
117
+ else if (index >= 0 && index < chipItems.length) {
118
+ item = chipItems.item(index);
119
+ }
120
+ else {
121
+ console.error(`Invalid index: ${index}`);
122
+ return;
123
+ }
124
+ const shadowItem = item.shadowRoot.querySelector('.chip-item');
125
+ if (shadowItem) {
126
+ // Delay needed for the shadow item to be rendered.
127
+ setTimeout(() => {
128
+ shadowItem.focus();
129
+ }, 1);
130
+ }
131
+ }
132
+ focusChip() {
133
+ const chipWrapper = this.chip.shadowRoot.querySelector('.chip__wrapper');
134
+ chipWrapper.focus();
135
+ }
136
+ handleUnselectButtonClick(event) {
137
+ event.stopPropagation();
138
+ this.opened = false;
139
+ let itemGotUnselected = false;
140
+ const chipItems = this.getChipItems();
141
+ chipItems.forEach((chipItem) => {
142
+ if (chipItem.selected) {
143
+ itemGotUnselected = true;
144
+ chipItem.chipState = Object.assign(Object.assign({}, chipItem.chipState), { emitIfxChipItemSelect: false });
145
+ chipItem.selected = false;
146
+ }
147
+ });
148
+ /* Emit event only if at least one item was unselected. */
149
+ if (itemGotUnselected) {
150
+ const previousSelection = this.selectedOptions;
151
+ this.selectedOptions = [];
152
+ this.value = [];
153
+ this.ifxChange.emit({
154
+ previousSelection: previousSelection,
155
+ currentSelection: [],
156
+ name: this.placeholder
157
+ });
158
+ }
159
+ }
160
+ handleWrapperClick() {
161
+ if (!this.readOnly) {
162
+ this.toggleDropdownMenu();
163
+ }
164
+ }
165
+ handleWrapperKeyDown(event) {
166
+ // Keymap oriented at https://www.w3.org/WAI/ARIA/apg/patterns/combobox/#keyboard_interaction
167
+ if (this.readOnly)
168
+ return;
169
+ if (!this.opened) {
170
+ switch (event.code) {
171
+ case 'Space':
172
+ case 'Enter':
173
+ case 'ArrowDown':
174
+ this.focusChipItemAt(0);
175
+ break;
176
+ case 'ArrowUp':
177
+ this.focusChipItemAt(-1);
178
+ break;
179
+ }
180
+ }
181
+ else {
182
+ switch (event.code) {
183
+ case 'Escape':
184
+ this.opened = false;
185
+ this.focusChip();
186
+ break;
187
+ }
188
+ }
189
+ }
190
+ handleDropdownKeyDown(event) {
191
+ let chipitems = this.getChipItems();
192
+ let targetIndex = Array.from(chipitems).indexOf(event.target);
193
+ if (targetIndex === -1) {
194
+ console.error('Target not found in chip items');
195
+ return;
196
+ }
197
+ switch (event.code) {
198
+ case 'ArrowDown':
199
+ if (targetIndex === chipitems.length - 1)
200
+ break;
201
+ this.focusChipItemAt(targetIndex + 1);
202
+ break;
203
+ case 'ArrowUp':
204
+ if (targetIndex === 0)
205
+ break;
206
+ this.focusChipItemAt(targetIndex - 1);
207
+ break;
208
+ case 'Escape':
209
+ this.opened = false;
210
+ this.focusChip();
211
+ break;
212
+ case 'Space':
213
+ // selection is handled by the chip-item component
214
+ if (this.variant === 'single') {
215
+ // only close dropdown if single select
216
+ this.opened = false;
217
+ this.focusChip();
218
+ }
219
+ break;
220
+ case 'Enter':
221
+ // selection is handled by the chip-item component
222
+ this.opened = false;
223
+ this.focusChip();
224
+ break;
225
+ }
226
+ }
227
+ syncChipState() {
228
+ const chipItems = this.getChipItems();
229
+ let key = 0;
230
+ chipItems.forEach((chipItem) => {
231
+ chipItem.chipState = {
232
+ emitIfxChipItemSelect: true,
233
+ size: this.size ? this.size : 'medium',
234
+ variant: (this.variant === 'multi' ? 'multi' : 'single'),
235
+ key: key++
236
+ };
237
+ });
238
+ }
239
+ syncSelectedOptionsWithProp(newValue) {
240
+ // Clear old selected options
241
+ this.selectedOptions = [];
242
+ const generateKey = (() => {
243
+ let count = 0;
244
+ return () => count++;
245
+ })();
246
+ if (Array.isArray(newValue)) {
247
+ this.selectedOptions = newValue.map(value => ({
248
+ value,
249
+ label: value,
250
+ selected: true,
251
+ key: generateKey(),
252
+ emitIfxChange: true
253
+ }));
254
+ }
255
+ else if (typeof newValue === 'string') {
256
+ this.selectedOptions = [{
257
+ value: newValue,
258
+ label: newValue,
259
+ selected: true,
260
+ key: generateKey(),
261
+ emitIfxChange: true
262
+ }];
263
+ }
264
+ this.syncChipState();
265
+ }
266
+ componentWillLoad() {
267
+ this.syncSelectedOptionsWithProp(this.value);
268
+ }
269
+ async componentDidLoad() {
270
+ if (!domUtils.isNestedInIfxComponent(this.chip)) {
271
+ const framework = frameworkDetection.detectFramework();
272
+ frameworkDetection.trackComponent('ifx-chip', await framework);
273
+ }
274
+ }
275
+ render() {
276
+ return (index.h("div", { key: 'cd16644a94a1e31cea0b2cbbe39394d4a05a5a5b', class: 'chip' }, index.h("div", { key: '951decf38e88ff684f283a09f6bc513ca4a2c704', class: `chip__wrapper chip__wrapper--${this.size ? this.size : 'medium'}
277
+ chip__wrapper--${this.variant === 'multi' ? 'multi' : 'single'}
278
+ ${this.opened && !this.readOnly ? 'chip__wrapper--opened' : ''}
279
+ ${this.selectedOptions.length ? 'chip__wrapper--selected' : ''}
280
+ ${this.theme ? this.theme : 'outlined'}
281
+ ${this.disabled ? 'disabled' : ""}
282
+ ${this.readOnly ? 'read-only' : ""}`, tabIndex: 0, onClick: !this.readOnly && !this.disabled ? () => { this.handleWrapperClick(); } : undefined, role: 'combobox', "aria-label": this.ariaLabel, "aria-value": this.getSelectedOptions(), "aria-haspopup": !this.readOnly ? 'listbox' : undefined, "aria-expanded": !this.readOnly ? this.opened.toString() : undefined, "aria-controls": !this.readOnly ? 'dropdown' : undefined, "aria-readonly": this.readOnly ? 'true' : undefined, "aria-multiselectable": this.variant === 'multi' ? 'true' : undefined }, this.icon &&
283
+ index.h("div", { key: 'cd8ab00ddfde3ba1dcdb7a82f963df1b81e4b5d5', class: "icon__wrapper" }, index.h("ifx-icon", { key: 'b14f92a609f24bc0b4617bb2b0d8262c52f11fab', icon: this.icon })), index.h("div", { key: '7ac3305d90985ddf45eb4df3cc22f9de89bf60de', class: 'wrapper__label' }, (this.selectedOptions.length === 0) && `${this.placeholder}`, (this.selectedOptions.length !== 0 && (this.variant === 'multi') && this.placeholder !== '') &&
284
+ `${this.placeholder}:`, (this.selectedOptions.length !== 0) &&
285
+ index.h("div", { key: 'e7c907adafd7e1601a4cbd05e1a7b415e1da05b6', class: 'label__selected-options' }, this.getSelectedOptions()), (this.selectedOptions.length > 2 && this.variant === 'multi') &&
286
+ index.h("ifx-indicator", { key: '4520777b0d729d95d57d87d5a32a95fcf44e0d84', variant: 'number', inverted: this.theme === 'outlined' ? false : true, number: this.selectedOptions.length - 2 })), !this.readOnly && (this.variant !== 'multi' || (this.variant === 'multi' && this.selectedOptions.length === 0)) &&
287
+ index.h("div", { key: 'ade24c6456b5443be577a4c0bd61d1b2dba68c91', class: 'wrapper__open-button' }, index.h("ifx-icon", { key: 1, icon: `chevron-down-16` })), ((this.selectedOptions.length >= 1) && this.variant === 'multi') &&
288
+ index.h("div", { key: '8b1937382b467ca305493896aaf065c10f7a01e8', class: 'wrapper__unselect-button', onClick: !this.readOnly && !this.disabled ? (e) => { this.handleUnselectButtonClick(e); } : undefined }, index.h("ifx-icon", { key: 2, icon: `cross16` }))), this.opened && !this.readOnly &&
289
+ index.h("div", { key: '073b6641d2320716a6d4b1149e72b61fa9b47dd8', id: 'dropdown', role: 'listbox', class: 'chip__dropdown' }, index.h("slot", { key: '55587cb1d438b11f0682c3b1d596a5dfb1d251d0' }))));
290
+ }
291
+ get chip() { return index.getElement(this); }
292
+ static get watchers() { return {
293
+ "value": ["handleValueChange"],
294
+ "readOnly": ["handleReadOnlyChange"]
295
+ }; }
296
+ };
297
+ Chip.style = chipCss;
298
+
299
+ const chipItemCss = ":root{--ifx-font-family:\"Source Sans 3\", \"Arial, sans-serif\"}.chip-item{display:flex;align-items:center;gap:8px;padding:8px 16px;user-select:none;transition:all 100ms ease;transition-property:background, color}.chip-item:hover{cursor:pointer;background-color:#EEEDED}.chip-item:active{background-color:#BFBBBB}.chip-item:focus{outline:2px solid #0A8276}.chip-item.chip-item--large{font:400 1rem/1.5rem \"Source Sans 3\"}.chip-item.chip-item--small{font:400 0.875rem/1.25rem \"Source Sans 3\"}.chip-item.chip-item--selected{color:#0A8276}.chip-item.chip-item--selected .chip-item__selected-indicator{display:block}.chip-item__selected-indicator{display:none;margin-left:auto}";
300
+
301
+ const ChipItem = class {
302
+ constructor(hostRef) {
303
+ index.registerInstance(this, hostRef);
304
+ this.ifxChipItemSelect = index.createEvent(this, "ifxChipItemSelect", 5);
305
+ this.value = undefined;
306
+ this.chipState = { emitIfxChipItemSelect: true, variant: 'multi', size: 'large' };
307
+ this.selected = false;
308
+ }
309
+ updateItemSelection(event) {
310
+ if (this.chipState.variant === 'single') {
311
+ const target = event.target;
312
+ /* Also making sure chip items are from the same group (parent) while unselecting. */
313
+ if (this.chipItem !== target && this.chipItem.parentElement === target.parentElement) {
314
+ this.selected = false;
315
+ }
316
+ }
317
+ }
318
+ validateSelected(newValue, oldValue) {
319
+ if (newValue !== oldValue) {
320
+ /* Do not emit if ChipState does not allow. */
321
+ if (this.chipState.emitIfxChipItemSelect) {
322
+ this.emitIfxChipItemSelectEvent();
323
+ }
324
+ else {
325
+ this.chipState.emitIfxChipItemSelect = true;
326
+ }
327
+ }
328
+ }
329
+ getItemLabel() {
330
+ return this.chipItem.innerText;
331
+ }
332
+ toggleItemSelection() {
333
+ this.selected = !this.selected;
334
+ }
335
+ emitIfxChipItemSelectEvent(emitIfxChange = true) {
336
+ this.ifxChipItemSelect.emit({ emitIfxChange: emitIfxChange,
337
+ key: this.chipState.key,
338
+ label: this.getItemLabel(),
339
+ selected: this.selected,
340
+ value: this.value });
341
+ }
342
+ handleItemClick() {
343
+ this.toggleItemSelection();
344
+ }
345
+ handleItemKeyDown(event) {
346
+ if (event.code === 'Enter' || event.code === 'Space') {
347
+ this.toggleItemSelection();
348
+ }
349
+ }
350
+ handleSelectedState() {
351
+ if (this.selected) {
352
+ this.emitIfxChipItemSelectEvent(false);
353
+ }
354
+ }
355
+ componentWillLoad() {
356
+ /* Propogating the selected state to the Chip (Parent) component if it is set. */
357
+ this.handleSelectedState();
358
+ }
359
+ render() {
360
+ return (index.h("div", { key: '4d5ace01c02658ed46fbf42c36138a06c3d46049', class: `chip-item chip-item--${this.chipState.size}
361
+ chip-item--${(this.selected && this.chipState.variant) === 'single' ? 'selected' : ''}`, tabIndex: 0, onClick: () => { this.handleItemClick(); }, onKeyDown: (e) => { this.handleItemKeyDown(e); }, role: "option", "aria-selected": this.selected.toString() }, this.chipState.variant === 'multi' &&
362
+ index.h("ifx-checkbox", { key: 'bf1af2aaf0944351eb33ace8c704bbb4973951d6', checked: this.selected, tabIndex: -1, size: 's' }), index.h("div", { key: '50347975f1554b7a02ef2bde34750b361daad549', class: 'chip-item__label' }, " ", index.h("slot", { key: '9667dd32c70e5f4a7946499f828883efb10caff2' }), " "), index.h("div", { key: 'f2fcab283b717837bc8b6c09b6b3c6c72675e40c', class: 'chip-item__selected-indicator' }, index.h("ifx-icon", { key: '84e489e9a638f2165c436b10bea8d826ae6db11c', icon: 'check-16' }, " "))));
363
+ }
364
+ get chipItem() { return index.getElement(this); }
365
+ static get watchers() { return {
366
+ "selected": ["validateSelected"]
367
+ }; }
368
+ };
369
+ ChipItem.style = chipItemCss;
370
+
371
+ const paginationCss = ":root{--ifx-font-family:\"Source Sans 3\", \"Arial, sans-serif\"}:host{display:inline-flex}.container{display:inline-flex;justify-content:center;align-items:center;gap:32px;font-family:var(--ifx-font-family);flex-wrap:wrap}.container .items__per-page-wrapper{display:flex;align-items:center;gap:16px}.container .items__per-page-wrapper .items__per-page-label{color:#1D1D1D;font-size:14px;font-style:normal;font-weight:600;line-height:20px}.container .items__per-page-wrapper .items__per-page-field{display:flex;flex-direction:column;align-items:flex-start}.container .items__per-page-wrapper .items__per-page-field ifx-select{width:92px}.container .items__total-wrapper{display:flex;justify-content:center;align-items:center;gap:12px}.container .items__total-wrapper .items__total-button{display:flex;width:40px;height:40px;justify-content:center;align-items:center;border-radius:100px;border:1px solid #BFBBBB;background:#FFF}.container .items__total-wrapper .page__numbers-wrapper{display:flex;justify-content:center;align-items:center;gap:12px}.container .items__total-wrapper .page__numbers-wrapper .page__number-item{display:flex;padding:6px;flex-direction:column;justify-content:center;align-items:center;gap:10px;border-radius:100px}.container .items__total-wrapper .page__numbers-wrapper .page__number-item.active{background-color:#0A8276}.container .items__total-wrapper .page__numbers-wrapper .page__number-item.active span{color:#fff}.container .items__total-wrapper .page__numbers-wrapper .page__number-item:hover{cursor:pointer}.container .items__total-wrapper .page__numbers-wrapper .page__number-item:hover:not(.active){background-color:#ddd}.container .items__total-wrapper .page__numbers-wrapper .page__number-item:active:not(.active){background-color:#575352}.container .items__total-wrapper .page__numbers-wrapper .page__number-item span{display:flex;width:16px;height:16px;flex-direction:column;justify-content:center;color:#1D1D1D;text-align:center;font-size:13px;font-style:normal;font-weight:400;line-height:20px}.pagination{display:flex}.pagination ifx-icon-button:first-of-type{margin-right:12px}.pagination ifx-icon-button:last-of-type{margin-left:12px}.page__button{padding:8px;border-radius:100px}ol{list-style-type:none;padding:0;margin:0;display:inline-flex;align-items:center;gap:12px}li{display:flex;flex-direction:column;justify-content:center;align-items:center;border-radius:100px}li:hover:not(.active) page__button{background-color:#EEEDED}li:active:not(.active) .page__button{background-color:#575352;color:#fff}li.active{background-color:#0A8276}li.active .page__button{color:#fff}li:hover{cursor:pointer}li .page__button{text-decoration:none;display:flex;width:16px;height:16px;flex-direction:column;justify-content:center;color:#1D1D1D;text-align:center;font-size:13px;font-style:normal;font-weight:400;line-height:20px;align-items:center}.prev.disabled,.next.disabled{cursor:default}.prev.disabled:hover,.next.disabled:hover{cursor:default;text-decoration:none}.prev{margin-right:2.5px}.next{margin-left:2.5px}@media (max-width: 768px){.container{gap:16px;justify-content:left}.container .items__total-wrapper .pagination ol{gap:12px}}@media (max-width: 374px){.pagination .ellipsis+.active{margin-left:8px}.pagination .active+.ellipsis{margin-left:8px}}";
372
+
373
+ const Pagination = class {
374
+ constructor(hostRef) {
375
+ index.registerInstance(this, hostRef);
376
+ this.ifxPageChange = index.createEvent(this, "ifxPageChange", 7);
377
+ this.ifxItemsPerPageChange = index.createEvent(this, "ifxItemsPerPageChange", 7);
378
+ this.currentPage = 1;
379
+ this.showItemsPerPage = true;
380
+ this.internalPage = 1;
381
+ this.internalItemsPerPage = 10;
382
+ this.numberOfPages = [];
383
+ this.total = 1;
384
+ this.filteredItemsPerPage = [];
385
+ this.visiblePages = [];
386
+ this.CLASS_DISABLED = "disabled";
387
+ this.CLASS_ACTIVE = "active";
388
+ this.handlePageClick = (e) => {
389
+ const li = e.currentTarget;
390
+ const page = parseInt(li.dataset.page);
391
+ if (!isNaN(page))
392
+ this.changePage(page);
393
+ };
394
+ this.handleResize = () => {
395
+ // Debounce resize events to prevent excessive calls
396
+ clearTimeout(this.resizeTimeout);
397
+ this.resizeTimeout = setTimeout(() => {
398
+ this.updateVisiblePages();
399
+ }, 100);
400
+ };
401
+ }
402
+ watchTotalHandler() {
403
+ this.calculateNumberOfPages();
404
+ this.updateVisiblePages();
405
+ }
406
+ currentPageWatcher(newVal) {
407
+ this.internalPage = Math.max(1, Math.min(newVal, this.numberOfPages.length));
408
+ this.calculateNumberOfPages();
409
+ this.updateVisiblePages();
410
+ }
411
+ setItemsPerPage(e) {
412
+ var _a, _b;
413
+ const selectedValue = ((_a = e.detail) === null || _a === void 0 ? void 0 : _a.value) || ((_b = e.detail) === null || _b === void 0 ? void 0 : _b.label);
414
+ const newItemsPerPage = parseInt(selectedValue) || 10;
415
+ if (newItemsPerPage === this.internalItemsPerPage) {
416
+ return;
417
+ }
418
+ this.internalItemsPerPage = newItemsPerPage;
419
+ this.internalPage = 1;
420
+ this.calculateNumberOfPages();
421
+ this.updateVisiblePages();
422
+ this.handleEventEmission();
423
+ }
424
+ emitItemsPerPage(e) {
425
+ this.ifxItemsPerPageChange.emit(e.detail.label);
426
+ }
427
+ async componentDidLoad() {
428
+ if (this.showItemsPerPage) {
429
+ const select = this.el.shadowRoot.querySelector('#itemsPerPageSelect');
430
+ if (select) {
431
+ select.addEventListener('ifxSelect', (e) => this.emitItemsPerPage(e));
432
+ }
433
+ }
434
+ // Add resize listener to update pagination on screen size changes
435
+ window.addEventListener('resize', this.handleResize);
436
+ if (!domUtils.isNestedInIfxComponent(this.el)) {
437
+ const framework = frameworkDetection.detectFramework();
438
+ frameworkDetection.trackComponent('ifx-pagination', await framework);
439
+ }
440
+ this.initPagination();
441
+ }
442
+ disconnectedCallback() {
443
+ if (this.showItemsPerPage) {
444
+ const select = this.el.shadowRoot.querySelector('#itemsPerPageSelect');
445
+ if (select) {
446
+ select.removeEventListener('ifxSelect', (e) => this.emitItemsPerPage(e));
447
+ }
448
+ }
449
+ // Remove resize listener
450
+ window.removeEventListener('resize', this.handleResize);
451
+ // Clear any pending resize timeout
452
+ if (this.resizeTimeout) {
453
+ clearTimeout(this.resizeTimeout);
454
+ }
455
+ }
456
+ updateVisiblePages() {
457
+ // Check if screen is mobile (< 375px)
458
+ const isMobile = window.innerWidth < 375;
459
+ const totalPages = this.numberOfPages.length;
460
+ const current = this.internalPage;
461
+ let pages = [];
462
+ if (isMobile) {
463
+ // Mobile logic: maximum 5 elements
464
+ if (totalPages <= 5) {
465
+ pages = [...this.numberOfPages];
466
+ }
467
+ else {
468
+ // Always show first page
469
+ pages.push(1);
470
+ if (current <= 2) {
471
+ // Show: 1 2 3 … 10 (for pages 1 and 2)
472
+ pages.push(2, 3, '...', totalPages);
473
+ }
474
+ else if (current >= totalPages - 1) {
475
+ // Show: 1 … 23 24 25 (for last 2 pages only)
476
+ pages.push('...', totalPages - 2, totalPages - 1, totalPages);
477
+ }
478
+ else {
479
+ // Show: 1 … 5 … 10 (for middle pages, including page 3 and third-to-last page)
480
+ pages.push('...', current, '...', totalPages);
481
+ }
482
+ }
483
+ }
484
+ else {
485
+ // Desktop logic: maximum 7 elements
486
+ const buffer = 2;
487
+ if (totalPages <= 7) {
488
+ pages = [...this.numberOfPages];
489
+ }
490
+ else {
491
+ // Always show first page
492
+ pages.push(1);
493
+ // Determine the range around current page
494
+ let start = Math.max(2, current - buffer);
495
+ let end = Math.min(totalPages - 1, current + buffer);
496
+ // Adjust range to ensure we show enough pages
497
+ // If we're close to the beginning, extend the end
498
+ if (current <= 4) {
499
+ start = 2;
500
+ end = Math.min(totalPages - 1, 5);
501
+ }
502
+ // If we're close to the end, extend the start
503
+ else if (current >= totalPages - 3) {
504
+ start = Math.max(2, totalPages - 4);
505
+ end = totalPages - 1;
506
+ }
507
+ // For middle pages, show current +/- 1
508
+ else {
509
+ start = current - 1;
510
+ end = current + 1;
511
+ }
512
+ // Add ellipsis before the range if there's a gap
513
+ if (start > 2) {
514
+ pages.push('...');
515
+ }
516
+ // Add the range of pages
517
+ for (let i = start; i <= end; i++) {
518
+ pages.push(i);
519
+ }
520
+ // Add ellipsis after the range if there's a gap
521
+ if (end < totalPages - 1) {
522
+ pages.push('...');
523
+ }
524
+ // Always show last page
525
+ pages.push(totalPages);
526
+ }
527
+ }
528
+ this.visiblePages = pages;
529
+ }
530
+ calculateNumberOfPages() {
531
+ const totalPages = Math.ceil(this.total / this.internalItemsPerPage);
532
+ this.numberOfPages = Array.from({ length: totalPages }, (_, i) => i + 1);
533
+ this.internalPage = Math.max(1, Math.min(this.currentPage, totalPages));
534
+ }
535
+ filterOptionsArray() {
536
+ const items = typeof this.itemsPerPage === 'string' ?
537
+ JSON.parse(this.itemsPerPage) : this.itemsPerPage;
538
+ this.filteredItemsPerPage = items.map(item => (Object.assign(Object.assign({}, item), { label: item.label || item.value })));
539
+ }
540
+ componentWillLoad() {
541
+ this.filterOptionsArray();
542
+ const selectedOption = this.filteredItemsPerPage.find(option => option.selected);
543
+ if (selectedOption) {
544
+ this.internalItemsPerPage = Number(selectedOption.value);
545
+ }
546
+ else if (this.filteredItemsPerPage.length > 0) {
547
+ this.internalItemsPerPage = Number(this.filteredItemsPerPage[0].value);
548
+ }
549
+ this.calculateNumberOfPages();
550
+ this.internalPage = Math.max(1, Math.min(this.currentPage, this.numberOfPages.length));
551
+ this.updateVisiblePages();
552
+ }
553
+ componentWillUpdate() {
554
+ if (this.prevInternalPage !== this.internalPage) {
555
+ this.updateVisiblePages();
556
+ this.prevInternalPage = this.internalPage;
557
+ }
558
+ }
559
+ componentDidUpdate() {
560
+ this.initPagination();
561
+ }
562
+ handleEventEmission() {
563
+ this.ifxPageChange.emit({
564
+ currentPage: this.internalPage,
565
+ totalPages: this.numberOfPages.length,
566
+ itemsPerPage: this.internalItemsPerPage
567
+ });
568
+ }
569
+ initPagination() {
570
+ const pagination = this.el.shadowRoot.querySelector('.pagination');
571
+ if (!pagination)
572
+ return;
573
+ const updateButtons = () => {
574
+ const prev = pagination.querySelector('.prev');
575
+ const next = pagination.querySelector('.next');
576
+ if (prev) {
577
+ prev.disabled = this.internalPage === 1;
578
+ prev.classList.toggle(this.CLASS_DISABLED, this.internalPage === 1);
579
+ }
580
+ if (next) {
581
+ next.disabled = this.internalPage === this.numberOfPages.length;
582
+ next.classList.toggle(this.CLASS_DISABLED, this.internalPage === this.numberOfPages.length);
583
+ }
584
+ };
585
+ pagination.querySelectorAll('li').forEach(li => {
586
+ li.removeEventListener('click', this.handlePageClick);
587
+ li.addEventListener('click', this.handlePageClick);
588
+ });
589
+ updateButtons();
590
+ }
591
+ changePage(newPage) {
592
+ newPage = Math.max(1, Math.min(newPage, this.numberOfPages.length));
593
+ if (newPage === this.internalPage)
594
+ return;
595
+ this.internalPage = newPage;
596
+ this.handleEventEmission();
597
+ this.initPagination();
598
+ }
599
+ render() {
600
+ return (index.h("div", { key: '9a4b41bb714202dcc144f626b9a2096480852ad6', class: "container" }, this.showItemsPerPage && (index.h("div", { key: '9e829381e98967180e89bf8f8988c67bbb998814', class: "items__per-page-wrapper" }, index.h("div", { key: 'be5d328337c18096cd1363f3c7c0c060693fe525', class: "items__per-page-label" }, "Results per Page"), index.h("div", { key: '37f663194a695059779305e0723321c26f55d191', class: "items__per-page-field" }, index.h("ifx-select", { key: '916cc188fd2f7d86243db5955f091e188defbacc', id: 'itemsPerPageSelect', placeholder: 'false', "show-search": 'false', value: undefined, disabled: false, error: false, size: "s", options: this.filteredItemsPerPage, "placeholder-value": "Select" })))), index.h("div", { key: 'f6531ac8c0710f53ff375e8ee4fa19bb47be5cef', class: "items__total-wrapper" }, index.h("div", { key: '4edaf3f1bc17c3423c2b39473a0f5ddc959278d6', class: "pagination" }, index.h("ifx-icon-button", { key: '7341fced786739f5970cfc9940381b2b2901de63', class: "prev", icon: "arrow-left-16", "aria-label": 'Previous Page', onClick: () => this.changePage(this.internalPage - 1), variant: "secondary" }), index.h("ol", { key: 'b7af29f3b08ee99b3c880c7af51b4d491630e55c' }, this.visiblePages.map((page, i) => typeof page === 'number' ? (index.h("li", { key: `page-${page}`, class: { [this.CLASS_ACTIVE]: page === this.internalPage }, "data-page": page }, index.h("span", { class: 'page__button', role: "button", tabindex: "0", "aria-current": page === this.internalPage ? "page" : undefined, "aria-label": `Page ${page}`, onClick: () => this.changePage(page), onKeyDown: (e) => (e.key === 'Enter' || e.key === ' ') && this.changePage(page) }, page))) : (index.h("li", { class: "ellipsis", key: `ellipsis-${i}` }, index.h("span", { "aria-hidden": "true" }, "..."))))), index.h("ifx-icon-button", { key: '5bdcefa2773fb49f8d7c4190a48fe5a98f6e0442', class: "next", icon: "arrow-right-16", "aria-label": 'Next Page', onClick: () => this.changePage(this.internalPage + 1), variant: "secondary" })))));
601
+ }
602
+ get el() { return index.getElement(this); }
603
+ static get watchers() { return {
604
+ "total": ["watchTotalHandler"],
605
+ "currentPage": ["currentPageWatcher"]
606
+ }; }
607
+ };
608
+ Pagination.style = paginationCss;
609
+
610
+ exports.ifx_chip = Chip;
611
+ exports.ifx_chip_item = ChipItem;
612
+ exports.ifx_pagination = Pagination;
613
+ //# sourceMappingURL=ifx-chip.ifx-chip-item.ifx-pagination.entry.cjs.js.map
614
+
615
+ //# sourceMappingURL=ifx-chip_3.cjs.entry.js.map