aeico-components 0.1.4 → 0.1.6
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.
- package/LICENSE +21 -0
- package/README.md +0 -0
- package/dist/chunks/action-button.cjs +296 -0
- package/dist/chunks/action-button.cjs.map +1 -0
- package/dist/chunks/action-button.js +297 -0
- package/dist/chunks/action-button.js.map +1 -0
- package/dist/chunks/alert.cjs +4 -4
- package/dist/chunks/alert.cjs.map +1 -1
- package/dist/chunks/alert.js +5 -5
- package/dist/chunks/alert.js.map +1 -1
- package/dist/chunks/badge.cjs +1 -1
- package/dist/chunks/badge.cjs.map +1 -1
- package/dist/chunks/badge.js +2 -2
- package/dist/chunks/badge.js.map +1 -1
- package/dist/chunks/breadcrumb-item.cjs +2 -2
- package/dist/chunks/breadcrumb-item.cjs.map +1 -1
- package/dist/chunks/breadcrumb-item.js +3 -3
- package/dist/chunks/breadcrumb-item.js.map +1 -1
- package/dist/chunks/button-group.cjs +1 -1
- package/dist/chunks/button-group.cjs.map +1 -1
- package/dist/chunks/button-group.js +2 -2
- package/dist/chunks/button-group.js.map +1 -1
- package/dist/chunks/button.cjs +12 -15
- package/dist/chunks/button.cjs.map +1 -1
- package/dist/chunks/button.js +13 -16
- package/dist/chunks/button.js.map +1 -1
- package/dist/chunks/card.cjs +1 -1
- package/dist/chunks/card.cjs.map +1 -1
- package/dist/chunks/card.js +2 -2
- package/dist/chunks/card.js.map +1 -1
- package/dist/chunks/checkbox.cjs +18 -5
- package/dist/chunks/checkbox.cjs.map +1 -1
- package/dist/chunks/checkbox.js +18 -5
- package/dist/chunks/checkbox.js.map +1 -1
- package/dist/chunks/copy-button.cjs +168 -0
- package/dist/chunks/copy-button.cjs.map +1 -0
- package/dist/chunks/copy-button.js +169 -0
- package/dist/chunks/copy-button.js.map +1 -0
- package/dist/chunks/detail.cjs +7 -4
- package/dist/chunks/detail.cjs.map +1 -1
- package/dist/chunks/detail.js +8 -5
- package/dist/chunks/detail.js.map +1 -1
- package/dist/chunks/dialog.cjs +1 -1
- package/dist/chunks/dialog.cjs.map +1 -1
- package/dist/chunks/dialog.js +2 -2
- package/dist/chunks/dialog.js.map +1 -1
- package/dist/chunks/divider.cjs +1 -1
- package/dist/chunks/divider.cjs.map +1 -1
- package/dist/chunks/divider.js +2 -2
- package/dist/chunks/divider.js.map +1 -1
- package/dist/chunks/drawer.cjs +180 -0
- package/dist/chunks/drawer.cjs.map +1 -0
- package/dist/chunks/drawer.js +181 -0
- package/dist/chunks/drawer.js.map +1 -0
- package/dist/chunks/dropdown-button.cjs +2 -2
- package/dist/chunks/dropdown-button.cjs.map +1 -1
- package/dist/chunks/dropdown-button.js +6 -6
- package/dist/chunks/dropdown-button.js.map +1 -1
- package/dist/chunks/icon.cjs +31 -1
- package/dist/chunks/icon.cjs.map +1 -1
- package/dist/chunks/icon.js +32 -2
- package/dist/chunks/icon.js.map +1 -1
- package/dist/chunks/menu.cjs +396 -0
- package/dist/chunks/menu.cjs.map +1 -0
- package/dist/chunks/menu.js +397 -0
- package/dist/chunks/menu.js.map +1 -0
- package/dist/chunks/navbar.cjs +2 -3
- package/dist/chunks/navbar.cjs.map +1 -1
- package/dist/chunks/navbar.js +3 -4
- package/dist/chunks/navbar.js.map +1 -1
- package/dist/chunks/pagination.cjs +475 -0
- package/dist/chunks/pagination.cjs.map +1 -0
- package/dist/chunks/pagination.js +476 -0
- package/dist/chunks/pagination.js.map +1 -0
- package/dist/chunks/progress-bar.cjs +101 -0
- package/dist/chunks/progress-bar.cjs.map +1 -0
- package/dist/chunks/progress-bar.js +102 -0
- package/dist/chunks/progress-bar.js.map +1 -0
- package/dist/chunks/radio.cjs +11 -7
- package/dist/chunks/radio.cjs.map +1 -1
- package/dist/chunks/radio.js +11 -7
- package/dist/chunks/radio.js.map +1 -1
- package/dist/chunks/select.cjs +97 -66
- package/dist/chunks/select.cjs.map +1 -1
- package/dist/chunks/select.js +97 -66
- package/dist/chunks/select.js.map +1 -1
- package/dist/chunks/slider.cjs +9 -46
- package/dist/chunks/slider.cjs.map +1 -1
- package/dist/chunks/slider.js +9 -46
- package/dist/chunks/slider.js.map +1 -1
- package/dist/chunks/spinner.cjs +102 -0
- package/dist/chunks/spinner.cjs.map +1 -0
- package/dist/chunks/spinner.js +103 -0
- package/dist/chunks/spinner.js.map +1 -0
- package/dist/chunks/switch.cjs +110 -16
- package/dist/chunks/switch.cjs.map +1 -1
- package/dist/chunks/switch.js +111 -17
- package/dist/chunks/switch.js.map +1 -1
- package/dist/chunks/tab-panel.cjs +6 -7
- package/dist/chunks/tab-panel.cjs.map +1 -1
- package/dist/chunks/tab-panel.js +7 -8
- package/dist/chunks/tab-panel.js.map +1 -1
- package/dist/chunks/tag.cjs +1 -1
- package/dist/chunks/tag.cjs.map +1 -1
- package/dist/chunks/tag.js +2 -2
- package/dist/chunks/tag.js.map +1 -1
- package/dist/chunks/text-input.cjs +11 -16
- package/dist/chunks/text-input.cjs.map +1 -1
- package/dist/chunks/text-input.js +11 -16
- package/dist/chunks/text-input.js.map +1 -1
- package/dist/chunks/textarea.cjs +137 -0
- package/dist/chunks/textarea.cjs.map +1 -0
- package/dist/chunks/textarea.js +138 -0
- package/dist/chunks/textarea.js.map +1 -0
- package/dist/chunks/tooltip.cjs +293 -0
- package/dist/chunks/tooltip.cjs.map +1 -0
- package/dist/chunks/tooltip.js +294 -0
- package/dist/chunks/tooltip.js.map +1 -0
- package/dist/chunks/tree.cjs +468 -0
- package/dist/chunks/tree.cjs.map +1 -0
- package/dist/chunks/tree.js +469 -0
- package/dist/chunks/tree.js.map +1 -0
- package/dist/chunks/variables.cjs +2 -2
- package/dist/chunks/variables.js +2 -2
- package/dist/copy-button.cjs +6 -0
- package/dist/copy-button.cjs.map +1 -0
- package/dist/copy-button.js +6 -0
- package/dist/copy-button.js.map +1 -0
- package/dist/drawer.cjs +6 -0
- package/dist/drawer.cjs.map +1 -0
- package/dist/drawer.js +6 -0
- package/dist/drawer.js.map +1 -0
- package/dist/dropdown.js +4 -4
- package/dist/index.cjs +186 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +201 -15
- package/dist/index.js.map +1 -1
- package/dist/menu.cjs +6 -0
- package/dist/menu.cjs.map +1 -0
- package/dist/menu.js +6 -0
- package/dist/menu.js.map +1 -0
- package/dist/pagination.cjs +6 -0
- package/dist/pagination.cjs.map +1 -0
- package/dist/pagination.js +6 -0
- package/dist/pagination.js.map +1 -0
- package/dist/progress-bar.cjs +6 -0
- package/dist/progress-bar.cjs.map +1 -0
- package/dist/progress-bar.js +6 -0
- package/dist/progress-bar.js.map +1 -0
- package/dist/select.cjs +1 -1
- package/dist/select.cjs.map +1 -1
- package/dist/select.js +2 -2
- package/dist/select.js.map +1 -1
- package/dist/spinner.cjs +6 -0
- package/dist/spinner.cjs.map +1 -0
- package/dist/spinner.js +6 -0
- package/dist/spinner.js.map +1 -0
- package/dist/textarea.cjs +5 -0
- package/dist/textarea.cjs.map +1 -0
- package/dist/textarea.js +5 -0
- package/dist/textarea.js.map +1 -0
- package/dist/tooltip.cjs +6 -0
- package/dist/tooltip.cjs.map +1 -0
- package/dist/tooltip.js +6 -0
- package/dist/tooltip.js.map +1 -0
- package/dist/tree.cjs +6 -0
- package/dist/tree.cjs.map +1 -0
- package/dist/tree.js +6 -0
- package/dist/tree.js.map +1 -0
- package/dist/types/aeico-field.d.ts +57 -5
- package/dist/types/alert/alert.d.ts +1 -0
- package/dist/types/button/button.d.ts +2 -1
- package/dist/types/checkbox/checkbox.d.ts +5 -5
- package/dist/types/copy-button/copy-button.d.ts +32 -0
- package/dist/types/copy-button/defines.d.ts +1 -0
- package/dist/types/copy-button/index.d.ts +3 -0
- package/dist/types/detail/defines.d.ts +1 -0
- package/dist/types/detail/detail.d.ts +3 -1
- package/dist/types/detail/index.d.ts +1 -1
- package/dist/types/detail-group/detail-group.d.ts +39 -0
- package/dist/types/detail-group/index.d.ts +2 -0
- package/dist/types/drawer/defines.d.ts +1 -0
- package/dist/types/drawer/drawer.d.ts +31 -0
- package/dist/types/drawer/index.d.ts +3 -0
- package/dist/types/icon/built-in-icons.d.ts +1 -0
- package/dist/types/icon/icon.d.ts +1 -0
- package/dist/types/icon/registry.d.ts +8 -0
- package/dist/types/index.d.ts +19 -0
- package/dist/types/menu/defines.d.ts +15 -0
- package/dist/types/menu/index.d.ts +5 -0
- package/dist/types/menu/menu-item.d.ts +63 -0
- package/dist/types/menu/menu.d.ts +34 -0
- package/dist/types/number-input/index.d.ts +2 -0
- package/dist/types/number-input/number-input.d.ts +35 -0
- package/dist/types/pagination/defines.d.ts +2 -0
- package/dist/types/pagination/index.d.ts +3 -0
- package/dist/types/pagination/pagination.d.ts +77 -0
- package/dist/types/progress-bar/defines.d.ts +1 -0
- package/dist/types/progress-bar/index.d.ts +3 -0
- package/dist/types/progress-bar/progress-bar.d.ts +37 -0
- package/dist/types/radio-group/radio-group.d.ts +1 -1
- package/dist/types/select/select.d.ts +3 -3
- package/dist/types/spinner/defines.d.ts +3 -0
- package/dist/types/spinner/index.d.ts +3 -0
- package/dist/types/spinner/spinner.d.ts +35 -0
- package/dist/types/switch/defines.d.ts +1 -0
- package/dist/types/switch/switch.d.ts +13 -9
- package/dist/types/text-input/text-input.d.ts +0 -4
- package/dist/types/textarea/index.d.ts +1 -0
- package/dist/types/textarea/textarea.d.ts +26 -0
- package/dist/types/tooltip/defines.d.ts +2 -0
- package/dist/types/tooltip/index.d.ts +4 -0
- package/dist/types/tooltip/tooltip.d.ts +48 -0
- package/dist/types/tree/defines.d.ts +23 -0
- package/dist/types/tree/index.d.ts +5 -0
- package/dist/types/tree/tree-item.d.ts +54 -0
- package/dist/types/tree/tree.d.ts +64 -0
- package/package.json +6 -6
- package/src/aeico-field.ts +154 -15
- package/src/alert/alert.ts +3 -2
- package/src/button/button.ts +11 -13
- package/src/checkbox/checkbox.ts +21 -6
- package/src/copy-button/copy-button.ts +146 -0
- package/src/copy-button/defines.ts +5 -0
- package/src/copy-button/index.ts +3 -0
- package/src/detail/defines.ts +1 -0
- package/src/detail/detail.ts +5 -1
- package/src/detail/index.ts +1 -1
- package/src/detail-group/detail-group.ts +104 -0
- package/src/detail-group/index.ts +2 -0
- package/src/drawer/defines.ts +1 -0
- package/src/drawer/drawer.ts +157 -0
- package/src/drawer/index.ts +3 -0
- package/src/icon/built-in-icons.ts +21 -0
- package/src/icon/icon.ts +1 -0
- package/src/icon/registry.ts +22 -0
- package/src/index.ts +32 -0
- package/src/menu/defines.ts +17 -0
- package/src/menu/index.ts +5 -0
- package/src/menu/menu-item.ts +315 -0
- package/src/menu/menu.ts +81 -0
- package/src/navbar/navbar.ts +1 -3
- package/src/number-input/index.ts +2 -0
- package/src/number-input/number-input.ts +137 -0
- package/src/pagination/defines.ts +2 -0
- package/src/pagination/index.ts +3 -0
- package/src/pagination/pagination.ts +310 -0
- package/src/progress-bar/defines.ts +8 -0
- package/src/progress-bar/index.ts +3 -0
- package/src/progress-bar/progress-bar.ts +80 -0
- package/src/radio-group/radio-group.ts +12 -5
- package/src/select/select.ts +112 -71
- package/src/slider/slider.ts +9 -2
- package/src/spinner/defines.ts +12 -0
- package/src/spinner/index.ts +3 -0
- package/src/spinner/spinner.ts +81 -0
- package/src/styles/components/action-button.css +37 -0
- package/src/styles/components/checkbox.css +4 -26
- package/src/styles/components/copy-button.css +119 -0
- package/src/styles/components/detail-group.css +10 -0
- package/src/styles/components/detail.css +10 -1
- package/src/styles/components/drawer.css +161 -0
- package/src/styles/components/field-label.css +120 -0
- package/src/styles/components/menu-item.css +168 -0
- package/src/styles/components/menu.css +17 -0
- package/src/styles/components/number-input.css +167 -0
- package/src/styles/components/pagination.css +205 -0
- package/src/styles/components/progress-bar.css +44 -0
- package/src/styles/components/radio-group.css +0 -23
- package/src/styles/components/select.css +12 -39
- package/src/styles/components/slider.css +0 -42
- package/src/styles/components/spinner.css +80 -0
- package/src/styles/components/switch.css +68 -19
- package/src/styles/components/tab-panel.css +1 -1
- package/src/styles/components/tabs.css +1 -0
- package/src/styles/components/text-input.css +7 -45
- package/src/styles/components/textarea.css +75 -0
- package/src/styles/components/tooltip.css +103 -0
- package/src/styles/components/tree-item.css +152 -0
- package/src/styles/components/tree.css +10 -0
- package/src/styles/layout.css +457 -25
- package/src/switch/defines.ts +1 -0
- package/src/switch/switch.ts +65 -16
- package/src/tabs/tab.ts +1 -1
- package/src/tabs/tabs.ts +1 -2
- package/src/text-input/text-input.ts +10 -15
- package/src/textarea/index.ts +1 -0
- package/src/textarea/textarea.ts +107 -0
- package/src/tooltip/defines.ts +11 -0
- package/src/tooltip/index.ts +4 -0
- package/src/tooltip/tooltip.ts +183 -0
- package/src/tree/defines.ts +26 -0
- package/src/tree/index.ts +5 -0
- package/src/tree/tree-item.ts +258 -0
- package/src/tree/tree.ts +237 -0
- package/dist/chunks/aeico-field.cjs +0 -179
- package/dist/chunks/aeico-field.cjs.map +0 -1
- package/dist/chunks/aeico-field.js +0 -180
- package/dist/chunks/aeico-field.js.map +0 -1
|
@@ -0,0 +1,475 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const aeico = require("aeico");
|
|
3
|
+
const aeicoComponent = require("./aeico-component.cjs");
|
|
4
|
+
const variables = require("./variables.cjs");
|
|
5
|
+
const size = require("./size.cjs");
|
|
6
|
+
const paginationStyle = `:host {
|
|
7
|
+
display: inline-flex;
|
|
8
|
+
align-items: center;
|
|
9
|
+
font-size: var(--size-m);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
nav {
|
|
13
|
+
display: flex;
|
|
14
|
+
align-items: center;
|
|
15
|
+
gap: 4px;
|
|
16
|
+
margin: 0;
|
|
17
|
+
padding: 0;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
button {
|
|
21
|
+
display: inline-flex;
|
|
22
|
+
align-items: center;
|
|
23
|
+
justify-content: center;
|
|
24
|
+
min-width: 2em;
|
|
25
|
+
height: 2em;
|
|
26
|
+
padding: 0 0.5em;
|
|
27
|
+
font-family: inherit;
|
|
28
|
+
font-size: inherit;
|
|
29
|
+
line-height: 1;
|
|
30
|
+
cursor: pointer;
|
|
31
|
+
user-select: none;
|
|
32
|
+
border-radius: 4px;
|
|
33
|
+
border: 1px solid var(--border-default);
|
|
34
|
+
background: transparent;
|
|
35
|
+
color: var(--color-text-main);
|
|
36
|
+
transition: background 0.15s, border-color 0.15s, color 0.15s;
|
|
37
|
+
outline: none;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
button:focus-visible {
|
|
41
|
+
box-shadow: 0 0 0 2px var(--focus-ring);
|
|
42
|
+
border-color: var(--border-focus);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
button:hover:not(:disabled) {
|
|
46
|
+
border-color: var(--color-primary);
|
|
47
|
+
color: var(--color-primary);
|
|
48
|
+
background: var(--color-primary-bg-subtle);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
button:active:not(:disabled) {
|
|
52
|
+
background: color-mix(in srgb, var(--color-primary-bg-subtle), var(--color-primary) 10%);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
button:disabled {
|
|
56
|
+
opacity: 0.45;
|
|
57
|
+
cursor: not-allowed;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
button.active {
|
|
61
|
+
background: var(--color-primary);
|
|
62
|
+
border-color: var(--color-primary);
|
|
63
|
+
color: white;
|
|
64
|
+
font-weight: 600;
|
|
65
|
+
cursor: default;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
button.active:hover:not(:disabled) {
|
|
69
|
+
background: var(--color-primary-hover);
|
|
70
|
+
border-color: var(--color-primary-hover);
|
|
71
|
+
color: white;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
button.nav-btn {
|
|
75
|
+
min-width: 2em;
|
|
76
|
+
width: 2em;
|
|
77
|
+
padding: 0;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
[part="ellipsis"] {
|
|
81
|
+
display: inline-flex;
|
|
82
|
+
align-items: flex-end;
|
|
83
|
+
justify-content: center;
|
|
84
|
+
min-width: 2em;
|
|
85
|
+
height: 2em;
|
|
86
|
+
color: var(--color-text-muted);
|
|
87
|
+
user-select: none;
|
|
88
|
+
letter-spacing: 0.1em;
|
|
89
|
+
padding-bottom: 0.2em;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
input[part="page-input"] {
|
|
93
|
+
width: 3em;
|
|
94
|
+
height: 2em;
|
|
95
|
+
padding: 0 0.4em;
|
|
96
|
+
text-align: center;
|
|
97
|
+
border: 1px solid var(--border-subtle);
|
|
98
|
+
border-radius: 4px;
|
|
99
|
+
font-size: inherit;
|
|
100
|
+
font-family: inherit;
|
|
101
|
+
color: var(--color-text-main);
|
|
102
|
+
background: var(--surface-base);
|
|
103
|
+
box-shadow: none;
|
|
104
|
+
-webkit-appearance: none;
|
|
105
|
+
-moz-appearance: textfield;
|
|
106
|
+
appearance: textfield;
|
|
107
|
+
outline: none;
|
|
108
|
+
transition: border-color 0.15s, box-shadow 0.15s;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
input[part="page-input"]:hover:not(:disabled) {
|
|
112
|
+
border-color: var(--border-default);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
input[part="page-input"]::-webkit-inner-spin-button,
|
|
116
|
+
input[part="page-input"]::-webkit-outer-spin-button {
|
|
117
|
+
-webkit-appearance: none;
|
|
118
|
+
appearance: none;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
input[part="page-input"]:focus {
|
|
122
|
+
border-color: var(--border-focus);
|
|
123
|
+
box-shadow: 0 0 0 2px var(--focus-ring);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
input[part="page-input"]:disabled {
|
|
127
|
+
opacity: 0.45;
|
|
128
|
+
cursor: not-allowed;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
[part="page-total"] {
|
|
132
|
+
color: var(--color-text-muted);
|
|
133
|
+
white-space: nowrap;
|
|
134
|
+
padding: 0 0.25em;
|
|
135
|
+
line-height: 2em;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/* ── Borderless variant ──────────────────────────────────────────────── */
|
|
139
|
+
:host([variant='borderless']) button {
|
|
140
|
+
border-color: transparent;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
:host([variant='borderless']) button:hover:not(:disabled) {
|
|
144
|
+
border-color: transparent;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
:host([variant='borderless']) button.active {
|
|
148
|
+
border-color: transparent;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
:host([variant='borderless']) input[part='page-input'] {
|
|
152
|
+
border-color: transparent;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
:host([variant='borderless']) input[part='page-input']:hover:not(:disabled) {
|
|
156
|
+
border-color: transparent;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
:host([variant='borderless']) input[part='page-input']:focus {
|
|
160
|
+
border-color: var(--border-focus);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/* ── Link variant ────────────────────────────────────────────────────── */
|
|
164
|
+
:host([variant='link']) button {
|
|
165
|
+
border-color: transparent;
|
|
166
|
+
background: transparent;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
:host([variant='link']) button:hover:not(:disabled) {
|
|
170
|
+
border-color: transparent;
|
|
171
|
+
background: transparent;
|
|
172
|
+
color: var(--color-primary);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
:host([variant='link']) button:active:not(:disabled) {
|
|
176
|
+
background: transparent;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
:host([variant='link']) button:focus-visible {
|
|
180
|
+
border-color: transparent;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
:host([variant='link']) button.active {
|
|
184
|
+
background: transparent;
|
|
185
|
+
border-color: transparent;
|
|
186
|
+
color: var(--color-primary);
|
|
187
|
+
font-weight: 600;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
:host([variant='link']) button.active:hover:not(:disabled) {
|
|
191
|
+
background: transparent;
|
|
192
|
+
color: var(--color-primary);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
:host([variant='link']) input[part='page-input'] {
|
|
196
|
+
border-color: transparent;
|
|
197
|
+
border-bottom-color: var(--border-subtle);
|
|
198
|
+
border-radius: 0;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
:host([variant='link']) input[part='page-input']:hover:not(:disabled) {
|
|
202
|
+
border-color: transparent;
|
|
203
|
+
border-bottom-color: var(--border-default);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
:host([variant='link']) input[part='page-input']:focus {
|
|
207
|
+
border-color: transparent;
|
|
208
|
+
border-bottom-color: var(--border-focus);
|
|
209
|
+
box-shadow: none;
|
|
210
|
+
}
|
|
211
|
+
`;
|
|
212
|
+
var __create = Object.create;
|
|
213
|
+
var __defProp = Object.defineProperty;
|
|
214
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
215
|
+
var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
|
|
216
|
+
var __typeError = (msg) => {
|
|
217
|
+
throw TypeError(msg);
|
|
218
|
+
};
|
|
219
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
220
|
+
var __decoratorStart = (base) => [, , , __create((base == null ? void 0 : base[__knownSymbol("metadata")]) ?? null)];
|
|
221
|
+
var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
|
|
222
|
+
var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
|
|
223
|
+
var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
|
|
224
|
+
var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
|
|
225
|
+
var __runInitializers = (array, flags, self, value) => {
|
|
226
|
+
for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
|
|
227
|
+
return value;
|
|
228
|
+
};
|
|
229
|
+
var __decorateElement = (array, flags, name, decorators, target, extra) => {
|
|
230
|
+
var fn, it, done, ctx, access, k = flags & 7, s = false, p = false;
|
|
231
|
+
var j = array.length + 1, key = __decoratorStrings[k + 5];
|
|
232
|
+
var initializers = array[j - 1] = [], extraInitializers = array[j] || (array[j] = []);
|
|
233
|
+
var desc = (target = target.prototype, __getOwnPropDesc({ get [name]() {
|
|
234
|
+
return __privateGet(this, extra);
|
|
235
|
+
}, set [name](x) {
|
|
236
|
+
return __privateSet(this, extra, x);
|
|
237
|
+
} }, name));
|
|
238
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
239
|
+
ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
|
|
240
|
+
{
|
|
241
|
+
ctx.static = s, ctx.private = p, access = ctx.access = { has: (x) => name in x };
|
|
242
|
+
access.get = (x) => x[name];
|
|
243
|
+
access.set = (x, y) => x[name] = y;
|
|
244
|
+
}
|
|
245
|
+
it = (0, decorators[i])({ get: desc.get, set: desc.set }, ctx), done._ = 1;
|
|
246
|
+
if (it === void 0) __expectFn(it) && (desc[key] = it);
|
|
247
|
+
else if (typeof it !== "object" || it === null) __typeError("Object expected");
|
|
248
|
+
else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
|
|
249
|
+
}
|
|
250
|
+
return desc && __defProp(target, name, desc), target;
|
|
251
|
+
};
|
|
252
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
253
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
254
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), member.get(obj));
|
|
255
|
+
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
256
|
+
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
|
|
257
|
+
var _variant_dec, _showFirstLast_dec, _simple_dec, _disabled_dec, _size_dec, _siblingCount_dec, _pageCount_dec, _total_dec, _pageSize_dec, _page_dec, _a, _init, _page, _pageSize, _total, _pageCount, _siblingCount, _size, _disabled, _simple, _showFirstLast, _variant;
|
|
258
|
+
class Pagination extends (_a = aeicoComponent.AeicoComponent, _page_dec = [aeico.prop({ type: Number })], _pageSize_dec = [aeico.prop({ type: Number })], _total_dec = [aeico.prop({ type: Number })], _pageCount_dec = [aeico.prop({ type: Number })], _siblingCount_dec = [aeico.prop({ type: Number })], _size_dec = [aeico.prop({ type: String })], _disabled_dec = [aeico.prop({ type: Boolean })], _simple_dec = [aeico.prop({ type: Boolean })], _showFirstLast_dec = [aeico.prop({ type: Boolean })], _variant_dec = [aeico.prop({ type: String })], _a) {
|
|
259
|
+
constructor() {
|
|
260
|
+
super(...arguments);
|
|
261
|
+
__privateAdd(this, _page, __runInitializers(_init, 8, this, 1)), __runInitializers(_init, 11, this);
|
|
262
|
+
__privateAdd(this, _pageSize, __runInitializers(_init, 12, this, 10)), __runInitializers(_init, 15, this);
|
|
263
|
+
__privateAdd(this, _total, __runInitializers(_init, 16, this, 0)), __runInitializers(_init, 19, this);
|
|
264
|
+
__privateAdd(this, _pageCount, __runInitializers(_init, 20, this)), __runInitializers(_init, 23, this);
|
|
265
|
+
__privateAdd(this, _siblingCount, __runInitializers(_init, 24, this, 1)), __runInitializers(_init, 27, this);
|
|
266
|
+
__privateAdd(this, _size, __runInitializers(_init, 28, this)), __runInitializers(_init, 31, this);
|
|
267
|
+
__privateAdd(this, _disabled, __runInitializers(_init, 32, this, false)), __runInitializers(_init, 35, this);
|
|
268
|
+
__privateAdd(this, _simple, __runInitializers(_init, 36, this, false)), __runInitializers(_init, 39, this);
|
|
269
|
+
__privateAdd(this, _showFirstLast, __runInitializers(_init, 40, this, false)), __runInitializers(_init, 43, this);
|
|
270
|
+
__privateAdd(this, _variant, __runInitializers(_init, 44, this)), __runInitializers(_init, 47, this);
|
|
271
|
+
__publicField(this, "_simpleInput", null);
|
|
272
|
+
__publicField(this, "_handleItemClick", (e) => {
|
|
273
|
+
const btn = e.currentTarget;
|
|
274
|
+
const p = Number(btn.dataset.page);
|
|
275
|
+
if (!isNaN(p)) this._goToPage(p);
|
|
276
|
+
});
|
|
277
|
+
__publicField(this, "_handlePrevClick", () => {
|
|
278
|
+
this._goToPage(this._currentPage - 1);
|
|
279
|
+
});
|
|
280
|
+
__publicField(this, "_handleNextClick", () => {
|
|
281
|
+
this._goToPage(this._currentPage + 1);
|
|
282
|
+
});
|
|
283
|
+
__publicField(this, "_handleFirstClick", () => {
|
|
284
|
+
this._goToPage(1);
|
|
285
|
+
});
|
|
286
|
+
__publicField(this, "_handleLastClick", () => {
|
|
287
|
+
this._goToPage(this._computedPageCount);
|
|
288
|
+
});
|
|
289
|
+
__publicField(this, "_handleSimpleInputChange", (e) => {
|
|
290
|
+
const input = e.target;
|
|
291
|
+
const val = parseInt(input.value, 10);
|
|
292
|
+
if (!isNaN(val)) {
|
|
293
|
+
this._goToPage(val);
|
|
294
|
+
}
|
|
295
|
+
input.value = String(this._currentPage);
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
get _computedPageCount() {
|
|
299
|
+
if (this.pageCount != null) return Math.max(1, this.pageCount);
|
|
300
|
+
const ps = this.pageSize > 0 ? this.pageSize : 10;
|
|
301
|
+
return Math.max(1, Math.ceil(this.total / ps));
|
|
302
|
+
}
|
|
303
|
+
get _currentPage() {
|
|
304
|
+
const count = this._computedPageCount;
|
|
305
|
+
return Math.max(1, Math.min(this.page ?? 1, count));
|
|
306
|
+
}
|
|
307
|
+
_getPageItems() {
|
|
308
|
+
const count = this._computedPageCount;
|
|
309
|
+
const page = this._currentPage;
|
|
310
|
+
const sc = Math.max(0, this.siblingCount ?? 1);
|
|
311
|
+
const rangeStart = Math.max(2, page - sc);
|
|
312
|
+
const rangeEnd = Math.min(count - 1, page + sc);
|
|
313
|
+
const showLeftEllipsis = rangeStart > 2;
|
|
314
|
+
const showRightEllipsis = rangeEnd < count - 1;
|
|
315
|
+
const items = [];
|
|
316
|
+
items.push(1);
|
|
317
|
+
if (count <= 1) return items;
|
|
318
|
+
if (showLeftEllipsis) {
|
|
319
|
+
items.push("ellipsis-start");
|
|
320
|
+
} else {
|
|
321
|
+
for (let i = 2; i < rangeStart; i++) items.push(i);
|
|
322
|
+
}
|
|
323
|
+
for (let i = rangeStart; i <= rangeEnd; i++) items.push(i);
|
|
324
|
+
if (showRightEllipsis) {
|
|
325
|
+
items.push("ellipsis-end");
|
|
326
|
+
} else {
|
|
327
|
+
for (let i = rangeEnd + 1; i < count; i++) items.push(i);
|
|
328
|
+
}
|
|
329
|
+
items.push(count);
|
|
330
|
+
return items;
|
|
331
|
+
}
|
|
332
|
+
_goToPage(page) {
|
|
333
|
+
const count = this._computedPageCount;
|
|
334
|
+
const next = Math.max(1, Math.min(count, page));
|
|
335
|
+
if (next === this._currentPage) return;
|
|
336
|
+
this.page = next;
|
|
337
|
+
this.emit("change", { detail: { page: this.page } });
|
|
338
|
+
}
|
|
339
|
+
onUpdated() {
|
|
340
|
+
if (this._simpleInput) {
|
|
341
|
+
this._simpleInput.value = String(this._currentPage);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
_renderNavBtn(name, iconName, label, disabled, onClick) {
|
|
345
|
+
const { button, slot, aeIcon } = aeico.tags;
|
|
346
|
+
button(
|
|
347
|
+
{
|
|
348
|
+
key: name,
|
|
349
|
+
part: name,
|
|
350
|
+
className: "nav-btn",
|
|
351
|
+
disabled,
|
|
352
|
+
"aria-label": label,
|
|
353
|
+
"@click": onClick
|
|
354
|
+
},
|
|
355
|
+
() => {
|
|
356
|
+
slot({ name }, () => {
|
|
357
|
+
aeIcon({ name: iconName });
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
);
|
|
361
|
+
}
|
|
362
|
+
_renderSimpleMode(page, count, disabled) {
|
|
363
|
+
this._simpleInput = aeico.tags.input({
|
|
364
|
+
key: "page-input",
|
|
365
|
+
part: "page-input",
|
|
366
|
+
type: "number",
|
|
367
|
+
min: "1",
|
|
368
|
+
max: String(count),
|
|
369
|
+
value: String(page),
|
|
370
|
+
disabled,
|
|
371
|
+
"aria-label": "Page number",
|
|
372
|
+
"@change": this._handleSimpleInputChange
|
|
373
|
+
});
|
|
374
|
+
aeico.tags.span({ key: "page-total", part: "page-total", textContent: `/ ${count}` });
|
|
375
|
+
}
|
|
376
|
+
_renderPageItems(page, disabled) {
|
|
377
|
+
for (const item of this._getPageItems()) {
|
|
378
|
+
if (item === "ellipsis-start" || item === "ellipsis-end") {
|
|
379
|
+
aeico.tags.span({
|
|
380
|
+
key: item,
|
|
381
|
+
part: "ellipsis",
|
|
382
|
+
className: "ellipsis",
|
|
383
|
+
"aria-hidden": "true",
|
|
384
|
+
textContent: "…"
|
|
385
|
+
});
|
|
386
|
+
} else {
|
|
387
|
+
const isActive = item === page;
|
|
388
|
+
aeico.tags.button({
|
|
389
|
+
key: `item-${item}`,
|
|
390
|
+
part: isActive ? "item item-active" : "item",
|
|
391
|
+
className: isActive ? "item active" : "item",
|
|
392
|
+
disabled,
|
|
393
|
+
"aria-current": isActive ? "page" : void 0,
|
|
394
|
+
"aria-label": `Page ${item}`,
|
|
395
|
+
"data-page": String(item),
|
|
396
|
+
textContent: String(item),
|
|
397
|
+
"@click": this._handleItemClick
|
|
398
|
+
});
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
render() {
|
|
403
|
+
const count = this._computedPageCount;
|
|
404
|
+
const page = this._currentPage;
|
|
405
|
+
const disabled = this.disabled;
|
|
406
|
+
const isFirst = page <= 1;
|
|
407
|
+
const isLast = page >= count;
|
|
408
|
+
return aeico.html(({ nav }) => {
|
|
409
|
+
nav({ part: "root", role: "navigation", "aria-label": "Pagination" }, () => {
|
|
410
|
+
if (this.showFirstLast)
|
|
411
|
+
this._renderNavBtn(
|
|
412
|
+
"first",
|
|
413
|
+
"chevrons-left",
|
|
414
|
+
"First page",
|
|
415
|
+
disabled || isFirst,
|
|
416
|
+
this._handleFirstClick
|
|
417
|
+
);
|
|
418
|
+
this._renderNavBtn(
|
|
419
|
+
"prev",
|
|
420
|
+
"chevron-left",
|
|
421
|
+
"Previous page",
|
|
422
|
+
disabled || isFirst,
|
|
423
|
+
this._handlePrevClick
|
|
424
|
+
);
|
|
425
|
+
if (this.simple) {
|
|
426
|
+
this._renderSimpleMode(page, count, disabled);
|
|
427
|
+
} else {
|
|
428
|
+
this._renderPageItems(page, disabled);
|
|
429
|
+
}
|
|
430
|
+
this._renderNavBtn(
|
|
431
|
+
"next",
|
|
432
|
+
"chevron-right",
|
|
433
|
+
"Next page",
|
|
434
|
+
disabled || isLast,
|
|
435
|
+
this._handleNextClick
|
|
436
|
+
);
|
|
437
|
+
if (this.showFirstLast)
|
|
438
|
+
this._renderNavBtn(
|
|
439
|
+
"last",
|
|
440
|
+
"chevrons-right",
|
|
441
|
+
"Last page",
|
|
442
|
+
disabled || isLast,
|
|
443
|
+
this._handleLastClick
|
|
444
|
+
);
|
|
445
|
+
});
|
|
446
|
+
});
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
_init = __decoratorStart(_a);
|
|
450
|
+
_page = /* @__PURE__ */ new WeakMap();
|
|
451
|
+
_pageSize = /* @__PURE__ */ new WeakMap();
|
|
452
|
+
_total = /* @__PURE__ */ new WeakMap();
|
|
453
|
+
_pageCount = /* @__PURE__ */ new WeakMap();
|
|
454
|
+
_siblingCount = /* @__PURE__ */ new WeakMap();
|
|
455
|
+
_size = /* @__PURE__ */ new WeakMap();
|
|
456
|
+
_disabled = /* @__PURE__ */ new WeakMap();
|
|
457
|
+
_simple = /* @__PURE__ */ new WeakMap();
|
|
458
|
+
_showFirstLast = /* @__PURE__ */ new WeakMap();
|
|
459
|
+
_variant = /* @__PURE__ */ new WeakMap();
|
|
460
|
+
__decorateElement(_init, 4, "page", _page_dec, Pagination, _page);
|
|
461
|
+
__decorateElement(_init, 4, "pageSize", _pageSize_dec, Pagination, _pageSize);
|
|
462
|
+
__decorateElement(_init, 4, "total", _total_dec, Pagination, _total);
|
|
463
|
+
__decorateElement(_init, 4, "pageCount", _pageCount_dec, Pagination, _pageCount);
|
|
464
|
+
__decorateElement(_init, 4, "siblingCount", _siblingCount_dec, Pagination, _siblingCount);
|
|
465
|
+
__decorateElement(_init, 4, "size", _size_dec, Pagination, _size);
|
|
466
|
+
__decorateElement(_init, 4, "disabled", _disabled_dec, Pagination, _disabled);
|
|
467
|
+
__decorateElement(_init, 4, "simple", _simple_dec, Pagination, _simple);
|
|
468
|
+
__decorateElement(_init, 4, "showFirstLast", _showFirstLast_dec, Pagination, _showFirstLast);
|
|
469
|
+
__decorateElement(_init, 4, "variant", _variant_dec, Pagination, _variant);
|
|
470
|
+
__decoratorMetadata(_init, Pagination);
|
|
471
|
+
__publicField(Pagination, "tagName", "pagination");
|
|
472
|
+
__publicField(Pagination, "styles", [variables.variables, size.sizeCSS, paginationStyle]);
|
|
473
|
+
Pagination.register();
|
|
474
|
+
exports.Pagination = Pagination;
|
|
475
|
+
//# sourceMappingURL=pagination.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.cjs","sources":["../../src/pagination/pagination.ts"],"sourcesContent":["import { html, prop, tags } from 'aeico';\nimport type { InferProps } from 'aeico';\nimport AeicoComponent from '../aeico-component';\nimport styleVariables from '../styles/variables.css?inline';\nimport sizeCSS from '../styles/size.css?inline';\nimport paginationStyle from '../styles/components/pagination.css?inline';\nimport type { PaginationSize, PaginationVariant } from './defines';\nimport '../icon/icon';\n\ntype PageItem = number | 'ellipsis-start' | 'ellipsis-end';\n\n/**\n * Pagination component for navigating between pages of content.\n *\n * @prop {number} page - Current page number (1-indexed). Default: 1.\n * @prop {number} pageSize - Number of items per page. Default: 10.\n * @prop {number} total - Total number of items. Used to compute pageCount when pageCount is not set.\n * @prop {number} pageCount - Total number of pages. Overrides total/pageSize calculation when set.\n * @prop {number} siblingCount - Number of page buttons to show on each side of the current page. Default: 1.\n * @prop {'xs'|'sm'|'md'|'lg'} size - Size variant.\n * @prop {boolean} disabled - Disables all interactive controls.\n * @prop {boolean} simple - Simple mode: shows only prev/next buttons and a page number input.\n * @prop {boolean} showFirstLast - Show dedicated first-page and last-page jump buttons.\n * @prop {'borderless'|'link'} variant - Visual variant. `borderless` removes borders; `link` renders page numbers as plain text links with no borders or backgrounds.\n *\n * @event {CustomEvent<{page: number}>} change - Fired when the page changes.\n *\n * @slot prev - Custom content for the previous-page button (default: chevron-left icon).\n * @slot next - Custom content for the next-page button (default: chevron-right icon).\n * @slot first - Custom content for the first-page button (default: chevrons-left icon). Requires showFirstLast.\n * @slot last - Custom content for the last-page button (default: chevrons-right icon). Requires showFirstLast.\n *\n * @csspart root - The outer <nav> element.\n * @csspart prev - The previous-page button.\n * @csspart next - The next-page button.\n * @csspart first - The first-page button (visible when showFirstLast).\n * @csspart last - The last-page button (visible when showFirstLast).\n * @csspart item - A page number button.\n * @csspart ellipsis - An ellipsis span between page groups.\n * @csspart page-input - The page number input in simple mode.\n * @csspart page-total - The \"/ N\" label in simple mode.\n *\n * @example\n * ```html\n * <ae-pagination total=\"100\" page-size=\"10\" page=\"1\"></ae-pagination>\n * ```\n */\nclass Pagination extends AeicoComponent {\n static tagName = 'pagination';\n\n protected static styles = [styleVariables, sizeCSS, paginationStyle];\n\n @prop({ type: Number })\n accessor page: number = 1;\n\n @prop({ type: Number })\n accessor pageSize: number = 10;\n\n @prop({ type: Number })\n accessor total: number = 0;\n\n @prop({ type: Number })\n accessor pageCount: number | undefined;\n\n @prop({ type: Number })\n accessor siblingCount: number = 1;\n\n @prop({ type: String })\n accessor size: PaginationSize | undefined;\n\n @prop({ type: Boolean })\n accessor disabled: boolean = false;\n\n @prop({ type: Boolean })\n accessor simple: boolean = false;\n\n @prop({ type: Boolean })\n accessor showFirstLast: boolean = false;\n\n @prop({ type: String })\n accessor variant: PaginationVariant | undefined;\n\n private _simpleInput: HTMLInputElement | null = null;\n\n private get _computedPageCount(): number {\n if (this.pageCount != null) return Math.max(1, this.pageCount);\n const ps = this.pageSize > 0 ? this.pageSize : 10;\n return Math.max(1, Math.ceil(this.total / ps));\n }\n\n private get _currentPage(): number {\n const count = this._computedPageCount;\n return Math.max(1, Math.min(this.page ?? 1, count));\n }\n\n private _getPageItems(): PageItem[] {\n const count = this._computedPageCount;\n const page = this._currentPage;\n const sc = Math.max(0, this.siblingCount ?? 1);\n\n const rangeStart = Math.max(2, page - sc);\n const rangeEnd = Math.min(count - 1, page + sc);\n\n const showLeftEllipsis = rangeStart > 2;\n const showRightEllipsis = rangeEnd < count - 1;\n\n const items: PageItem[] = [];\n\n // First page always shown\n items.push(1);\n\n if (count <= 1) return items;\n\n // Left side\n if (showLeftEllipsis) {\n items.push('ellipsis-start');\n } else {\n for (let i = 2; i < rangeStart; i++) items.push(i);\n }\n\n // Sibling range (bounded to 2..count-1)\n for (let i = rangeStart; i <= rangeEnd; i++) items.push(i);\n\n // Right side\n if (showRightEllipsis) {\n items.push('ellipsis-end');\n } else {\n for (let i = rangeEnd + 1; i < count; i++) items.push(i);\n }\n\n // Last page always shown\n items.push(count);\n\n return items;\n }\n\n private _goToPage(page: number): void {\n const count = this._computedPageCount;\n const next = Math.max(1, Math.min(count, page));\n if (next === this._currentPage) return;\n this.page = next;\n this.emit('change', { detail: { page: this.page } });\n }\n\n private _handleItemClick = (e: Event): void => {\n const btn = e.currentTarget as HTMLElement;\n const p = Number(btn.dataset.page);\n if (!isNaN(p)) this._goToPage(p);\n };\n\n private _handlePrevClick = (): void => {\n this._goToPage(this._currentPage - 1);\n };\n private _handleNextClick = (): void => {\n this._goToPage(this._currentPage + 1);\n };\n private _handleFirstClick = (): void => {\n this._goToPage(1);\n };\n private _handleLastClick = (): void => {\n this._goToPage(this._computedPageCount);\n };\n\n private _handleSimpleInputChange = (e: Event): void => {\n const input = e.target as HTMLInputElement;\n const val = parseInt(input.value, 10);\n if (!isNaN(val)) {\n this._goToPage(val);\n }\n\n input.value = String(this._currentPage);\n };\n\n protected onUpdated(): void {\n if (this._simpleInput) {\n this._simpleInput.value = String(this._currentPage);\n }\n }\n\n private _renderNavBtn(\n name: 'first' | 'prev' | 'next' | 'last',\n iconName: string,\n label: string,\n disabled: boolean,\n onClick: () => void,\n ): void {\n const { button, slot, aeIcon } = tags;\n\n button(\n {\n key: name,\n part: name,\n className: 'nav-btn',\n disabled,\n 'aria-label': label,\n '@click': onClick,\n },\n () => {\n slot({ name }, () => {\n aeIcon({ name: iconName });\n });\n },\n );\n }\n\n private _renderSimpleMode(page: number, count: number, disabled: boolean): void {\n this._simpleInput = tags.input({\n key: 'page-input',\n part: 'page-input',\n type: 'number',\n min: '1',\n max: String(count),\n value: String(page),\n disabled,\n 'aria-label': 'Page number',\n '@change': this._handleSimpleInputChange,\n });\n tags.span({ key: 'page-total', part: 'page-total', textContent: `/ ${count}` });\n }\n\n private _renderPageItems(page: number, disabled: boolean): void {\n for (const item of this._getPageItems()) {\n if (item === 'ellipsis-start' || item === 'ellipsis-end') {\n tags.span({\n key: item,\n part: 'ellipsis',\n className: 'ellipsis',\n 'aria-hidden': 'true',\n textContent: '…',\n });\n } else {\n const isActive = item === page;\n tags.button({\n key: `item-${item}`,\n part: isActive ? 'item item-active' : 'item',\n className: isActive ? 'item active' : 'item',\n disabled,\n 'aria-current': isActive ? 'page' : undefined,\n 'aria-label': `Page ${item}`,\n 'data-page': String(item),\n textContent: String(item),\n '@click': this._handleItemClick,\n });\n }\n }\n }\n\n protected render() {\n const count = this._computedPageCount;\n const page = this._currentPage;\n const disabled = this.disabled;\n const isFirst = page <= 1;\n const isLast = page >= count;\n\n return html(({ nav }) => {\n nav({ part: 'root', role: 'navigation', 'aria-label': 'Pagination' }, () => {\n if (this.showFirstLast)\n this._renderNavBtn(\n 'first',\n 'chevrons-left',\n 'First page',\n disabled || isFirst,\n this._handleFirstClick,\n );\n\n this._renderNavBtn(\n 'prev',\n 'chevron-left',\n 'Previous page',\n disabled || isFirst,\n this._handlePrevClick,\n );\n\n if (this.simple) {\n this._renderSimpleMode(page, count, disabled);\n } else {\n this._renderPageItems(page, disabled);\n }\n\n this._renderNavBtn(\n 'next',\n 'chevron-right',\n 'Next page',\n disabled || isLast,\n this._handleNextClick,\n );\n\n if (this.showFirstLast)\n this._renderNavBtn(\n 'last',\n 'chevrons-right',\n 'Last page',\n disabled || isLast,\n this._handleLastClick,\n );\n });\n });\n }\n}\n\nPagination.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-pagination': Pagination;\n }\n}\n\nexport default Pagination;\nexport type PaginationProps = InferProps<typeof Pagination>;\n"],"names":["AeicoComponent","prop","tags","html","styleVariables","sizeCSS"],"mappings":"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"}
|