@hyalo/angular 0.0.0-stage → 0.3.1

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 (229) hide show
  1. package/CHANGELOG.md +95 -0
  2. package/LICENSE +21 -0
  3. package/README.md +45 -2
  4. package/fesm2022/hyalo-angular-accordion.mjs +230 -0
  5. package/fesm2022/hyalo-angular-accordion.mjs.map +1 -0
  6. package/fesm2022/hyalo-angular-alert.mjs +171 -0
  7. package/fesm2022/hyalo-angular-alert.mjs.map +1 -0
  8. package/fesm2022/hyalo-angular-aspect-ratio.mjs +64 -0
  9. package/fesm2022/hyalo-angular-aspect-ratio.mjs.map +1 -0
  10. package/fesm2022/hyalo-angular-avatar.mjs +169 -0
  11. package/fesm2022/hyalo-angular-avatar.mjs.map +1 -0
  12. package/fesm2022/hyalo-angular-badge.mjs +268 -0
  13. package/fesm2022/hyalo-angular-badge.mjs.map +1 -0
  14. package/fesm2022/hyalo-angular-bento.mjs +132 -0
  15. package/fesm2022/hyalo-angular-bento.mjs.map +1 -0
  16. package/fesm2022/hyalo-angular-blocks.mjs +985 -0
  17. package/fesm2022/hyalo-angular-blocks.mjs.map +1 -0
  18. package/fesm2022/hyalo-angular-border-beam.mjs +73 -0
  19. package/fesm2022/hyalo-angular-border-beam.mjs.map +1 -0
  20. package/fesm2022/hyalo-angular-breadcrumb.mjs +77 -0
  21. package/fesm2022/hyalo-angular-breadcrumb.mjs.map +1 -0
  22. package/fesm2022/hyalo-angular-button-group.mjs +90 -0
  23. package/fesm2022/hyalo-angular-button-group.mjs.map +1 -0
  24. package/fesm2022/hyalo-angular-button.mjs +204 -0
  25. package/fesm2022/hyalo-angular-button.mjs.map +1 -0
  26. package/fesm2022/hyalo-angular-card.mjs +221 -0
  27. package/fesm2022/hyalo-angular-card.mjs.map +1 -0
  28. package/fesm2022/hyalo-angular-carousel.mjs +709 -0
  29. package/fesm2022/hyalo-angular-carousel.mjs.map +1 -0
  30. package/fesm2022/hyalo-angular-chapter-nav.mjs +336 -0
  31. package/fesm2022/hyalo-angular-chapter-nav.mjs.map +1 -0
  32. package/fesm2022/hyalo-angular-chart-engine-DSJop6He.mjs +5 -0
  33. package/fesm2022/hyalo-angular-chart-engine-DSJop6He.mjs.map +1 -0
  34. package/fesm2022/hyalo-angular-chart.mjs +391 -0
  35. package/fesm2022/hyalo-angular-chart.mjs.map +1 -0
  36. package/fesm2022/hyalo-angular-choice.mjs +789 -0
  37. package/fesm2022/hyalo-angular-choice.mjs.map +1 -0
  38. package/fesm2022/hyalo-angular-code-block-highlight-B20d5C76.mjs +40 -0
  39. package/fesm2022/hyalo-angular-code-block-highlight-B20d5C76.mjs.map +1 -0
  40. package/fesm2022/hyalo-angular-code-block.mjs +161 -0
  41. package/fesm2022/hyalo-angular-code-block.mjs.map +1 -0
  42. package/fesm2022/hyalo-angular-command.mjs +193 -0
  43. package/fesm2022/hyalo-angular-command.mjs.map +1 -0
  44. package/fesm2022/hyalo-angular-copy.mjs +138 -0
  45. package/fesm2022/hyalo-angular-copy.mjs.map +1 -0
  46. package/fesm2022/hyalo-angular-core.mjs +424 -0
  47. package/fesm2022/hyalo-angular-core.mjs.map +1 -0
  48. package/fesm2022/hyalo-angular-description-list.mjs +57 -0
  49. package/fesm2022/hyalo-angular-description-list.mjs.map +1 -0
  50. package/fesm2022/hyalo-angular-dialog.mjs +600 -0
  51. package/fesm2022/hyalo-angular-dialog.mjs.map +1 -0
  52. package/fesm2022/hyalo-angular-divider.mjs +66 -0
  53. package/fesm2022/hyalo-angular-divider.mjs.map +1 -0
  54. package/fesm2022/hyalo-angular-empty-state.mjs +123 -0
  55. package/fesm2022/hyalo-angular-empty-state.mjs.map +1 -0
  56. package/fesm2022/hyalo-angular-field.mjs +344 -0
  57. package/fesm2022/hyalo-angular-field.mjs.map +1 -0
  58. package/fesm2022/hyalo-angular-filter.mjs +309 -0
  59. package/fesm2022/hyalo-angular-filter.mjs.map +1 -0
  60. package/fesm2022/hyalo-angular-hotspot.mjs +225 -0
  61. package/fesm2022/hyalo-angular-hotspot.mjs.map +1 -0
  62. package/fesm2022/hyalo-angular-hover-card.mjs +233 -0
  63. package/fesm2022/hyalo-angular-hover-card.mjs.map +1 -0
  64. package/fesm2022/hyalo-angular-icon.mjs +385 -0
  65. package/fesm2022/hyalo-angular-icon.mjs.map +1 -0
  66. package/fesm2022/hyalo-angular-image-compare.mjs +168 -0
  67. package/fesm2022/hyalo-angular-image-compare.mjs.map +1 -0
  68. package/fesm2022/hyalo-angular-interaction.mjs +446 -0
  69. package/fesm2022/hyalo-angular-interaction.mjs.map +1 -0
  70. package/fesm2022/hyalo-angular-kbd.mjs +41 -0
  71. package/fesm2022/hyalo-angular-kbd.mjs.map +1 -0
  72. package/fesm2022/hyalo-angular-lightbox.mjs +228 -0
  73. package/fesm2022/hyalo-angular-lightbox.mjs.map +1 -0
  74. package/fesm2022/hyalo-angular-link.mjs +42 -0
  75. package/fesm2022/hyalo-angular-link.mjs.map +1 -0
  76. package/fesm2022/hyalo-angular-list.mjs +131 -0
  77. package/fesm2022/hyalo-angular-list.mjs.map +1 -0
  78. package/fesm2022/hyalo-angular-marquee.mjs +197 -0
  79. package/fesm2022/hyalo-angular-marquee.mjs.map +1 -0
  80. package/fesm2022/hyalo-angular-menu.mjs +423 -0
  81. package/fesm2022/hyalo-angular-menu.mjs.map +1 -0
  82. package/fesm2022/hyalo-angular-mesh.mjs +126 -0
  83. package/fesm2022/hyalo-angular-mesh.mjs.map +1 -0
  84. package/fesm2022/hyalo-angular-motion.mjs +620 -0
  85. package/fesm2022/hyalo-angular-motion.mjs.map +1 -0
  86. package/fesm2022/hyalo-angular-navbar.mjs +343 -0
  87. package/fesm2022/hyalo-angular-navbar.mjs.map +1 -0
  88. package/fesm2022/hyalo-angular-navigation-menu.mjs +222 -0
  89. package/fesm2022/hyalo-angular-navigation-menu.mjs.map +1 -0
  90. package/fesm2022/hyalo-angular-number-ticker.mjs +174 -0
  91. package/fesm2022/hyalo-angular-number-ticker.mjs.map +1 -0
  92. package/fesm2022/hyalo-angular-overlay.mjs +163 -0
  93. package/fesm2022/hyalo-angular-overlay.mjs.map +1 -0
  94. package/fesm2022/hyalo-angular-pagination.mjs +187 -0
  95. package/fesm2022/hyalo-angular-pagination.mjs.map +1 -0
  96. package/fesm2022/hyalo-angular-popover-overlay-kit-6wPwnxln.mjs +3 -0
  97. package/fesm2022/hyalo-angular-popover.mjs +516 -0
  98. package/fesm2022/hyalo-angular-popover.mjs.map +1 -0
  99. package/fesm2022/hyalo-angular-progress.mjs +209 -0
  100. package/fesm2022/hyalo-angular-progress.mjs.map +1 -0
  101. package/fesm2022/hyalo-angular-progressive-blur.mjs +73 -0
  102. package/fesm2022/hyalo-angular-progressive-blur.mjs.map +1 -0
  103. package/fesm2022/hyalo-angular-refraction-renderer-5ZA-kfsA.mjs +186 -0
  104. package/fesm2022/hyalo-angular-refraction-renderer-5ZA-kfsA.mjs.map +1 -0
  105. package/fesm2022/hyalo-angular-refraction.mjs +178 -0
  106. package/fesm2022/hyalo-angular-refraction.mjs.map +1 -0
  107. package/fesm2022/hyalo-angular-scroll-area.mjs +93 -0
  108. package/fesm2022/hyalo-angular-scroll-area.mjs.map +1 -0
  109. package/fesm2022/hyalo-angular-scroll-to-top.mjs +127 -0
  110. package/fesm2022/hyalo-angular-scroll-to-top.mjs.map +1 -0
  111. package/fesm2022/hyalo-angular-segmented.mjs +223 -0
  112. package/fesm2022/hyalo-angular-segmented.mjs.map +1 -0
  113. package/fesm2022/hyalo-angular-select.mjs +561 -0
  114. package/fesm2022/hyalo-angular-select.mjs.map +1 -0
  115. package/fesm2022/hyalo-angular-sidebar.mjs +241 -0
  116. package/fesm2022/hyalo-angular-sidebar.mjs.map +1 -0
  117. package/fesm2022/hyalo-angular-skeleton.mjs +131 -0
  118. package/fesm2022/hyalo-angular-skeleton.mjs.map +1 -0
  119. package/fesm2022/hyalo-angular-sparkline.mjs +110 -0
  120. package/fesm2022/hyalo-angular-sparkline.mjs.map +1 -0
  121. package/fesm2022/hyalo-angular-split-text.mjs +126 -0
  122. package/fesm2022/hyalo-angular-split-text.mjs.map +1 -0
  123. package/fesm2022/hyalo-angular-stat.mjs +193 -0
  124. package/fesm2022/hyalo-angular-stat.mjs.map +1 -0
  125. package/fesm2022/hyalo-angular-stepper.mjs +254 -0
  126. package/fesm2022/hyalo-angular-stepper.mjs.map +1 -0
  127. package/fesm2022/hyalo-angular-table.mjs +335 -0
  128. package/fesm2022/hyalo-angular-table.mjs.map +1 -0
  129. package/fesm2022/hyalo-angular-tabs.mjs +324 -0
  130. package/fesm2022/hyalo-angular-tabs.mjs.map +1 -0
  131. package/fesm2022/hyalo-angular-theme.mjs +94 -0
  132. package/fesm2022/hyalo-angular-theme.mjs.map +1 -0
  133. package/fesm2022/hyalo-angular-timeline.mjs +157 -0
  134. package/fesm2022/hyalo-angular-timeline.mjs.map +1 -0
  135. package/fesm2022/hyalo-angular-toast.mjs +323 -0
  136. package/fesm2022/hyalo-angular-toast.mjs.map +1 -0
  137. package/fesm2022/hyalo-angular.mjs +2 -0
  138. package/package.json +329 -3
  139. package/styles/hyalo-core.css +25 -0
  140. package/styles/hyalo.css +17 -0
  141. package/styles/overlays/dialog.css +9 -0
  142. package/styles/overlays/popover.css +9 -0
  143. package/styles/overlays/select.css +9 -0
  144. package/styles/overlays/toast.css +8 -0
  145. package/styles/palettes/aurora.css +47 -0
  146. package/styles/palettes/ember.css +47 -0
  147. package/styles/palettes/graphite.css +47 -0
  148. package/styles/palettes/ocean.css +47 -0
  149. package/styles/palettes/orchid.css +47 -0
  150. package/styles/palettes/rose.css +47 -0
  151. package/styles/parts/card.css +49 -0
  152. package/styles/parts/dialog.css +116 -0
  153. package/styles/parts/drawer.css +124 -0
  154. package/styles/parts/field.css +44 -0
  155. package/styles/parts/glass.css +139 -0
  156. package/styles/parts/motion.css +101 -0
  157. package/styles/parts/navbar.css +55 -0
  158. package/styles/parts/popover.css +27 -0
  159. package/styles/parts/presence.css +55 -0
  160. package/styles/parts/reset.css +42 -0
  161. package/styles/parts/select.css +46 -0
  162. package/styles/parts/themes.css +105 -0
  163. package/styles/parts/toast.css +128 -0
  164. package/styles/parts/tokens.css +151 -0
  165. package/styles/parts/typography.css +81 -0
  166. package/types/hyalo-angular-accordion.d.ts +74 -0
  167. package/types/hyalo-angular-alert.d.ts +47 -0
  168. package/types/hyalo-angular-aspect-ratio.d.ts +13 -0
  169. package/types/hyalo-angular-avatar.d.ts +39 -0
  170. package/types/hyalo-angular-badge.d.ts +82 -0
  171. package/types/hyalo-angular-bento.d.ts +25 -0
  172. package/types/hyalo-angular-blocks.d.ts +272 -0
  173. package/types/hyalo-angular-border-beam.d.ts +15 -0
  174. package/types/hyalo-angular-breadcrumb.d.ts +22 -0
  175. package/types/hyalo-angular-button-group.d.ts +19 -0
  176. package/types/hyalo-angular-button.d.ts +89 -0
  177. package/types/hyalo-angular-card.d.ts +61 -0
  178. package/types/hyalo-angular-carousel.d.ts +147 -0
  179. package/types/hyalo-angular-chapter-nav.d.ts +79 -0
  180. package/types/hyalo-angular-chart.d.ts +90 -0
  181. package/types/hyalo-angular-choice.d.ts +259 -0
  182. package/types/hyalo-angular-code-block.d.ts +46 -0
  183. package/types/hyalo-angular-command.d.ts +41 -0
  184. package/types/hyalo-angular-copy.d.ts +39 -0
  185. package/types/hyalo-angular-core.d.ts +210 -0
  186. package/types/hyalo-angular-description-list.d.ts +16 -0
  187. package/types/hyalo-angular-dialog.d.ts +171 -0
  188. package/types/hyalo-angular-divider.d.ts +12 -0
  189. package/types/hyalo-angular-empty-state.d.ts +30 -0
  190. package/types/hyalo-angular-field.d.ts +141 -0
  191. package/types/hyalo-angular-filter.d.ts +122 -0
  192. package/types/hyalo-angular-hotspot.d.ts +70 -0
  193. package/types/hyalo-angular-hover-card.d.ts +47 -0
  194. package/types/hyalo-angular-icon.d.ts +122 -0
  195. package/types/hyalo-angular-image-compare.d.ts +55 -0
  196. package/types/hyalo-angular-interaction.d.ts +131 -0
  197. package/types/hyalo-angular-kbd.d.ts +5 -0
  198. package/types/hyalo-angular-lightbox.d.ts +67 -0
  199. package/types/hyalo-angular-link.d.ts +5 -0
  200. package/types/hyalo-angular-list.d.ts +30 -0
  201. package/types/hyalo-angular-marquee.d.ts +48 -0
  202. package/types/hyalo-angular-menu.d.ts +105 -0
  203. package/types/hyalo-angular-mesh.d.ts +36 -0
  204. package/types/hyalo-angular-motion.d.ts +218 -0
  205. package/types/hyalo-angular-navbar.d.ts +110 -0
  206. package/types/hyalo-angular-navigation-menu.d.ts +47 -0
  207. package/types/hyalo-angular-number-ticker.d.ts +52 -0
  208. package/types/hyalo-angular-overlay.d.ts +40 -0
  209. package/types/hyalo-angular-pagination.d.ts +59 -0
  210. package/types/hyalo-angular-popover.d.ts +152 -0
  211. package/types/hyalo-angular-progress.d.ts +46 -0
  212. package/types/hyalo-angular-progressive-blur.d.ts +14 -0
  213. package/types/hyalo-angular-refraction.d.ts +46 -0
  214. package/types/hyalo-angular-scroll-area.d.ts +18 -0
  215. package/types/hyalo-angular-scroll-to-top.d.ts +31 -0
  216. package/types/hyalo-angular-segmented.d.ts +79 -0
  217. package/types/hyalo-angular-select.d.ts +176 -0
  218. package/types/hyalo-angular-sidebar.d.ts +57 -0
  219. package/types/hyalo-angular-skeleton.d.ts +34 -0
  220. package/types/hyalo-angular-sparkline.d.ts +19 -0
  221. package/types/hyalo-angular-split-text.d.ts +24 -0
  222. package/types/hyalo-angular-stat.d.ts +56 -0
  223. package/types/hyalo-angular-stepper.d.ts +63 -0
  224. package/types/hyalo-angular-table.d.ts +125 -0
  225. package/types/hyalo-angular-tabs.d.ts +102 -0
  226. package/types/hyalo-angular-theme.d.ts +46 -0
  227. package/types/hyalo-angular-timeline.d.ts +36 -0
  228. package/types/hyalo-angular-toast.d.ts +79 -0
  229. package/types/hyalo-angular.d.ts +2 -0
@@ -0,0 +1,187 @@
1
+ import { HyLocale } from "@hyalo/angular/core";
2
+ import * as i0 from "@angular/core";
3
+ import { ChangeDetectionStrategy, Component, computed, inject, input, model } from "@angular/core";
4
+ const positive = (value) => Number.isFinite(value) ? Math.min(Number.MAX_SAFE_INTEGER, Math.max(1, Math.floor(value))) : 1;
5
+ var HyPagination = class HyPagination {
6
+ page = model(1, ...ngDevMode ? [{ debugName: "page" }] : /* istanbul ignore next */ []);
7
+ total = input.required(...ngDevMode ? [{ debugName: "total" }] : /* istanbul ignore next */ []);
8
+ pageSize = input(10, ...ngDevMode ? [{ debugName: "pageSize" }] : /* istanbul ignore next */ []);
9
+ locale = input(...ngDevMode ? [void 0, { debugName: "locale" }] : /* istanbul ignore next */ []);
10
+ globalLocale = inject(HyLocale);
11
+ effectiveLocale = computed(() => this.locale() ?? this.globalLocale.locale(), ...ngDevMode ? [{ debugName: "effectiveLocale" }] : /* istanbul ignore next */ []);
12
+ label = input("Pagination", ...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
13
+ previousLabel = input("Previous page", ...ngDevMode ? [{ debugName: "previousLabel" }] : /* istanbul ignore next */ []);
14
+ nextLabel = input("Next page", ...ngDevMode ? [{ debugName: "nextLabel" }] : /* istanbul ignore next */ []);
15
+ pageCount = computed(() => Math.max(1, Math.min(Number.MAX_SAFE_INTEGER, Math.ceil((Number.isFinite(this.total()) ? Math.max(0, this.total()) : 0) / positive(this.pageSize())))), ...ngDevMode ? [{ debugName: "pageCount" }] : /* istanbul ignore next */ []);
16
+ current = computed(() => Math.min(this.pageCount(), positive(this.page())), ...ngDevMode ? [{ debugName: "current" }] : /* istanbul ignore next */ []);
17
+ pages = computed(() => {
18
+ const current = this.current(), last = this.pageCount(), set = /* @__PURE__ */ new Set([1, last]);
19
+ for (let n = Math.max(1, current - 1); n <= Math.min(last, current + 1); n++) set.add(n);
20
+ const nums = [...set].sort((a, b) => a - b), result = [];
21
+ const fmt = new Intl.NumberFormat(this.effectiveLocale());
22
+ let previous = 0;
23
+ for (const value of nums) {
24
+ if (previous && value - previous > 1) result.push(null);
25
+ result.push({
26
+ value,
27
+ label: fmt.format(value)
28
+ });
29
+ previous = value;
30
+ }
31
+ return result;
32
+ }, ...ngDevMode ? [{ debugName: "pages" }] : /* istanbul ignore next */ []);
33
+ go(page) {
34
+ const next = Math.min(this.pageCount(), positive(page));
35
+ if (next !== this.current()) this.page.set(next);
36
+ }
37
+ static ɵfac = i0.ɵɵngDeclareFactory({
38
+ minVersion: "12.0.0",
39
+ version: "22.2.3",
40
+ ngImport: i0,
41
+ type: HyPagination,
42
+ deps: [],
43
+ target: i0.ɵɵFactoryTarget.Component
44
+ });
45
+ static ɵcmp = i0.ɵɵngDeclareComponent({
46
+ minVersion: "17.0.0",
47
+ version: "22.2.3",
48
+ type: HyPagination,
49
+ isStandalone: true,
50
+ selector: "hy-pagination",
51
+ inputs: {
52
+ page: {
53
+ classPropertyName: "page",
54
+ publicName: "page",
55
+ isSignal: true,
56
+ isRequired: false,
57
+ transformFunction: null
58
+ },
59
+ total: {
60
+ classPropertyName: "total",
61
+ publicName: "total",
62
+ isSignal: true,
63
+ isRequired: true,
64
+ transformFunction: null
65
+ },
66
+ pageSize: {
67
+ classPropertyName: "pageSize",
68
+ publicName: "pageSize",
69
+ isSignal: true,
70
+ isRequired: false,
71
+ transformFunction: null
72
+ },
73
+ locale: {
74
+ classPropertyName: "locale",
75
+ publicName: "locale",
76
+ isSignal: true,
77
+ isRequired: false,
78
+ transformFunction: null
79
+ },
80
+ label: {
81
+ classPropertyName: "label",
82
+ publicName: "label",
83
+ isSignal: true,
84
+ isRequired: false,
85
+ transformFunction: null
86
+ },
87
+ previousLabel: {
88
+ classPropertyName: "previousLabel",
89
+ publicName: "previousLabel",
90
+ isSignal: true,
91
+ isRequired: false,
92
+ transformFunction: null
93
+ },
94
+ nextLabel: {
95
+ classPropertyName: "nextLabel",
96
+ publicName: "nextLabel",
97
+ isSignal: true,
98
+ isRequired: false,
99
+ transformFunction: null
100
+ }
101
+ },
102
+ outputs: { page: "pageChange" },
103
+ ngImport: i0,
104
+ template: "<nav [attr.aria-label]=\"label()\">\r\n <button\r\n type=\"button\"\r\n [attr.aria-label]=\"previousLabel()\"\r\n [disabled]=\"current() === 1\"\r\n (click)=\"go(current() - 1)\"\r\n >\r\n <span aria-hidden=\"true\" class=\"arrow\">‹</span>\r\n </button>\r\n @for (item of pages(); track $index) {\r\n @if (item) {\r\n <button\r\n type=\"button\"\r\n [attr.aria-label]=\"'Page ' + item.label\"\r\n [attr.aria-current]=\"item.value === current() ? 'page' : null\"\r\n (click)=\"go(item.value)\"\r\n >\r\n {{ item.label }}\r\n </button>\r\n } @else {\r\n <span aria-hidden=\"true\">…</span>\r\n }\r\n }\r\n <button\r\n type=\"button\"\r\n [attr.aria-label]=\"nextLabel()\"\r\n [disabled]=\"current() === pageCount()\"\r\n (click)=\"go(current() + 1)\"\r\n >\r\n <span aria-hidden=\"true\" class=\"arrow\">›</span>\r\n </button>\r\n</nav>\r\n",
105
+ styles: [":host{display:block}nav{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem}button{min-inline-size:44px;min-block-size:44px;padding:.5rem;border:1px solid transparent;border-radius:var(--hy-radius-s);background:transparent;color:var(--hy-ink);font:inherit;font-variant-numeric:tabular-nums;cursor:pointer}button:hover:enabled{background:var(--hy-surface-3)}button[aria-current]{background:var(--hy-primary);color:var(--hy-primary-ink)}button:disabled{opacity:.4;cursor:default}.arrow{display:block;font-size:1.5rem}:host-context([dir=\"rtl\"]) .arrow{transform:scaleX(-1)}:is(button,a,input):focus-visible{outline:2px solid var(--hy-primary);outline-offset:3px}\n"],
106
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
107
+ });
108
+ };
109
+ i0.ɵɵngDeclareClassMetadata({
110
+ minVersion: "12.0.0",
111
+ version: "22.2.3",
112
+ ngImport: i0,
113
+ type: HyPagination,
114
+ decorators: [{
115
+ type: Component,
116
+ args: [{
117
+ selector: "hy-pagination",
118
+ changeDetection: ChangeDetectionStrategy.OnPush,
119
+ template: "<nav [attr.aria-label]=\"label()\">\r\n <button\r\n type=\"button\"\r\n [attr.aria-label]=\"previousLabel()\"\r\n [disabled]=\"current() === 1\"\r\n (click)=\"go(current() - 1)\"\r\n >\r\n <span aria-hidden=\"true\" class=\"arrow\">‹</span>\r\n </button>\r\n @for (item of pages(); track $index) {\r\n @if (item) {\r\n <button\r\n type=\"button\"\r\n [attr.aria-label]=\"'Page ' + item.label\"\r\n [attr.aria-current]=\"item.value === current() ? 'page' : null\"\r\n (click)=\"go(item.value)\"\r\n >\r\n {{ item.label }}\r\n </button>\r\n } @else {\r\n <span aria-hidden=\"true\">…</span>\r\n }\r\n }\r\n <button\r\n type=\"button\"\r\n [attr.aria-label]=\"nextLabel()\"\r\n [disabled]=\"current() === pageCount()\"\r\n (click)=\"go(current() + 1)\"\r\n >\r\n <span aria-hidden=\"true\" class=\"arrow\">›</span>\r\n </button>\r\n</nav>\r\n",
120
+ styles: [":host{display:block}nav{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem}button{min-inline-size:44px;min-block-size:44px;padding:.5rem;border:1px solid transparent;border-radius:var(--hy-radius-s);background:transparent;color:var(--hy-ink);font:inherit;font-variant-numeric:tabular-nums;cursor:pointer}button:hover:enabled{background:var(--hy-surface-3)}button[aria-current]{background:var(--hy-primary);color:var(--hy-primary-ink)}button:disabled{opacity:.4;cursor:default}.arrow{display:block;font-size:1.5rem}:host-context([dir=\"rtl\"]) .arrow{transform:scaleX(-1)}:is(button,a,input):focus-visible{outline:2px solid var(--hy-primary);outline-offset:3px}\n"]
121
+ }]
122
+ }],
123
+ propDecorators: {
124
+ page: [{
125
+ type: i0.Input,
126
+ args: [{
127
+ isSignal: true,
128
+ alias: "page",
129
+ required: false
130
+ }]
131
+ }, {
132
+ type: i0.Output,
133
+ args: ["pageChange"]
134
+ }],
135
+ total: [{
136
+ type: i0.Input,
137
+ args: [{
138
+ isSignal: true,
139
+ alias: "total",
140
+ required: true
141
+ }]
142
+ }],
143
+ pageSize: [{
144
+ type: i0.Input,
145
+ args: [{
146
+ isSignal: true,
147
+ alias: "pageSize",
148
+ required: false
149
+ }]
150
+ }],
151
+ locale: [{
152
+ type: i0.Input,
153
+ args: [{
154
+ isSignal: true,
155
+ alias: "locale",
156
+ required: false
157
+ }]
158
+ }],
159
+ label: [{
160
+ type: i0.Input,
161
+ args: [{
162
+ isSignal: true,
163
+ alias: "label",
164
+ required: false
165
+ }]
166
+ }],
167
+ previousLabel: [{
168
+ type: i0.Input,
169
+ args: [{
170
+ isSignal: true,
171
+ alias: "previousLabel",
172
+ required: false
173
+ }]
174
+ }],
175
+ nextLabel: [{
176
+ type: i0.Input,
177
+ args: [{
178
+ isSignal: true,
179
+ alias: "nextLabel",
180
+ required: false
181
+ }]
182
+ }]
183
+ }
184
+ });
185
+ export { HyPagination };
186
+
187
+ //# sourceMappingURL=hyalo-angular-pagination.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hyalo-angular-pagination.mjs","names":[],"sources":["../../../projects/hyalo/pagination/pagination.ts","../../../projects/hyalo/pagination/pagination.html"],"sourcesContent":["import { HyLocale } from '@hyalo/angular/core';\r\nimport { ChangeDetectionStrategy, Component, computed, input, model } from '@angular/core';\r\nimport { inject } from '@angular/core';\r\nconst positive = (value: number): number =>\r\n Number.isFinite(value) ? Math.min(Number.MAX_SAFE_INTEGER, Math.max(1, Math.floor(value))) : 1;\r\n@Component({\r\n selector: 'hy-pagination',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n templateUrl: './pagination.html',\r\n styleUrl: './pagination.css',\r\n})\r\nexport class HyPagination {\r\n readonly page = model(1);\r\n readonly total = input.required<number>();\r\n readonly pageSize = input(10);\r\n readonly locale = input<string>();\r\n private readonly globalLocale = inject(HyLocale);\r\n private readonly effectiveLocale = computed(() => this.locale() ?? this.globalLocale.locale());\r\n readonly label = input('Pagination');\r\n readonly previousLabel = input('Previous page');\r\n readonly nextLabel = input('Next page');\r\n readonly pageCount = computed(() =>\r\n Math.max(\r\n 1,\r\n Math.min(\r\n Number.MAX_SAFE_INTEGER,\r\n Math.ceil(\r\n (Number.isFinite(this.total()) ? Math.max(0, this.total()) : 0) /\r\n positive(this.pageSize()),\r\n ),\r\n ),\r\n ),\r\n );\r\n readonly current = computed(() => Math.min(this.pageCount(), positive(this.page())));\r\n readonly pages = computed(() => {\r\n const current = this.current(),\r\n last = this.pageCount(),\r\n set = new Set([1, last]);\r\n for (let n = Math.max(1, current - 1); n <= Math.min(last, current + 1); n++) set.add(n);\r\n const nums = [...set].sort((a, b) => a - b),\r\n result: ({ value: number; label: string } | null)[] = [];\r\n const fmt = new Intl.NumberFormat(this.effectiveLocale());\r\n let previous = 0;\r\n for (const value of nums) {\r\n if (previous && value - previous > 1) result.push(null);\r\n result.push({ value, label: fmt.format(value) });\r\n previous = value;\r\n }\r\n return result;\r\n });\r\n go(page: number): void {\r\n const next = Math.min(this.pageCount(), positive(page));\r\n if (next !== this.current()) this.page.set(next);\r\n }\r\n}\r\n","<nav [attr.aria-label]=\"label()\">\r\n <button\r\n type=\"button\"\r\n [attr.aria-label]=\"previousLabel()\"\r\n [disabled]=\"current() === 1\"\r\n (click)=\"go(current() - 1)\"\r\n >\r\n <span aria-hidden=\"true\" class=\"arrow\">‹</span>\r\n </button>\r\n @for (item of pages(); track $index) {\r\n @if (item) {\r\n <button\r\n type=\"button\"\r\n [attr.aria-label]=\"'Page ' + item.label\"\r\n [attr.aria-current]=\"item.value === current() ? 'page' : null\"\r\n (click)=\"go(item.value)\"\r\n >\r\n {{ item.label }}\r\n </button>\r\n } @else {\r\n <span aria-hidden=\"true\">…</span>\r\n }\r\n }\r\n <button\r\n type=\"button\"\r\n [attr.aria-label]=\"nextLabel()\"\r\n [disabled]=\"current() === pageCount()\"\r\n (click)=\"go(current() + 1)\"\r\n >\r\n <span aria-hidden=\"true\" class=\"arrow\">›</span>\r\n </button>\r\n</nav>\r\n"],"mappings":";;;AAGA,MAAM,YAAY,UAChB,OAAO,SAAS,KAAK,IAAI,KAAK,IAAI,OAAO,kBAAkB,KAAK,IAAI,GAAG,KAAK,MAAM,KAAK,CAAC,CAAC,IAAI;AAO/F,IAAa,eAAb,MAAa,aAAY;CACd,OAAO,MAAM,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CACf,QAAQ,MAAM,SAAkB,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAChC,WAAW,MAAM,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,WAAA,CAAA,+BAAA,CAAA,CAAA;CACpB,SAAS,MAAe,GAAA,YAAA,CAAA,QAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;CAChB,eAAe,OAAO,QAAQ;CAC9B,kBAAkB,eAAe,KAAK,OAAM,KAAM,KAAK,aAAa,OAAM,GAAG,GAAA,YAAA,CAAA,EAAA,WAAA,kBAAA,CAAA,+BAAA,CAAA,CAAA;CACrF,QAAQ,MAAM,cAAa,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAC3B,gBAAgB,MAAM,iBAAgB,GAAA,YAAA,CAAA,EAAA,WAAA,gBAAA,CAAA,+BAAA,CAAA,CAAA;CACtC,YAAY,MAAM,aAAY,GAAA,YAAA,CAAA,EAAA,WAAA,YAAA,CAAA,+BAAA,CAAA,CAAA;CAC9B,YAAY,eACnB,KAAK,IACH,GACA,KAAK,IACH,OAAO,kBACP,KAAK,MACF,OAAO,SAAS,KAAK,MAAK,CAAE,IAAI,KAAK,IAAI,GAAG,KAAK,MAAK,CAAE,IAAI,KAC3D,SAAS,KAAK,SAAQ,CAAE,CAAC,CAC5B,CACF,GAEJ,GAAA,YAAA,CAAA,EAAA,WAAA,YAAA,CAAA,+BAAA,CAAA,CAAA;CACQ,UAAU,eAAe,KAAK,IAAI,KAAK,UAAS,GAAI,SAAS,KAAK,KAAI,CAAE,CAAC,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CAC3E,QAAQ,eAAc;EAC7B,MAAM,UAAU,KAAK,QAAO,GAC1B,OAAO,KAAK,UAAS,GACrB,sBAAM,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;EACzB,KAAK,IAAI,IAAI,KAAK,IAAI,GAAG,UAAU,CAAC,GAAG,KAAK,KAAK,IAAI,MAAM,UAAU,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC;EACvF,MAAM,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,GACxC,SAAsD,CAAA;EACxD,MAAM,MAAM,IAAI,KAAK,aAAa,KAAK,gBAAe,CAAE;EACxD,IAAI,WAAW;EACf,KAAK,MAAM,SAAS,MAAM;GACxB,IAAI,YAAY,QAAQ,WAAW,GAAG,OAAO,KAAK,IAAI;GACtD,OAAO,KAAK;IAAE;IAAO,OAAO,IAAI,OAAO,KAAK;GAAC,CAAE;GAC/C,WAAW;EACb;EACA,OAAO;CACT,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CACF,GAAG,MAAY;EACb,MAAM,OAAO,KAAK,IAAI,KAAK,UAAS,GAAI,SAAS,IAAI,CAAC;EACtD,IAAI,SAAS,KAAK,QAAO,GAAI,KAAK,KAAK,IAAI,IAAI;CACjD;CA1CW,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAY,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAZ,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAY,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,MAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,OAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,UAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,QAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,OAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,eAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,WAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;EAAA;EAAA,SAAA,EAAA,MAAA,aAAA;EAAA,UAAA;EAAA,UCXzB;EAgCA,QAAA,CAAA,+pBAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;ADrBa,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAY,YAAA,CAAA;EANxB,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAe,iBACR,wBAAwB;GAAM,UAAA;GAAA,QAAA,CAAA,+pBAAA;EAAA,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { createFlexibleConnectedPositionStrategy, createOverlayRef, createRepositionScrollStrategy } from "@angular/cdk/overlay";
2
+ import { ComponentPortal, TemplatePortal } from "@angular/cdk/portal";
3
+ export { ComponentPortal, TemplatePortal, createFlexibleConnectedPositionStrategy, createOverlayRef, createRepositionScrollStrategy };