@multiplatform.one/components 6.4.3 → 6.6.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.
- package/dist/cjs/Avatar/index.cjs +4 -0
- package/dist/cjs/Avatar/index.native.js +4 -0
- package/dist/cjs/Avatar/index.native.js.map +1 -1
- package/dist/cjs/Badge/index.cjs +3 -0
- package/dist/cjs/Badge/index.native.js +3 -0
- package/dist/cjs/Badge/index.native.js.map +1 -1
- package/dist/cjs/Carousel/index.cjs +28 -15
- package/dist/cjs/Carousel/index.native.js +34 -17
- package/dist/cjs/Carousel/index.native.js.map +1 -1
- package/dist/cjs/DotIndicator/index.cjs +92 -35
- package/dist/cjs/DotIndicator/index.native.js +93 -35
- package/dist/cjs/DotIndicator/index.native.js.map +1 -1
- package/dist/cjs/Pagination.cjs +112 -167
- package/dist/cjs/Pagination.native.js +125 -180
- package/dist/cjs/Pagination.native.js.map +1 -1
- package/dist/cjs/ProgressSteps/index.cjs +2 -1
- package/dist/cjs/ProgressSteps/index.native.js +2 -1
- package/dist/cjs/ProgressSteps/index.native.js.map +1 -1
- package/dist/cjs/charts/PieChart.cjs +1 -1
- package/dist/cjs/charts/PieChart.native.js +7 -2
- package/dist/cjs/charts/PieChart.native.js.map +1 -1
- package/dist/cjs/feedback/ConfirmDialog.cjs +1 -3
- package/dist/cjs/feedback/ConfirmDialog.native.js +1 -3
- package/dist/cjs/feedback/ConfirmDialog.native.js.map +1 -1
- package/dist/cjs/index.cjs +1 -0
- package/dist/cjs/index.native.js +1 -0
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/layouts/ViewSwitcher.cjs +4 -5
- package/dist/cjs/layouts/ViewSwitcher.native.js +13 -7
- package/dist/cjs/layouts/ViewSwitcher.native.js.map +1 -1
- package/dist/cjs/layouts/attachments.cjs +4 -8
- package/dist/cjs/layouts/attachments.native.js +5 -8
- package/dist/cjs/layouts/attachments.native.js.map +1 -1
- package/dist/cjs/layouts/page.cjs +1 -0
- package/dist/cjs/layouts/page.native.js +4 -1
- package/dist/cjs/layouts/page.native.js.map +1 -1
- package/dist/cjs/layouts/tags.cjs +1 -0
- package/dist/cjs/layouts/tags.native.js +2 -0
- package/dist/cjs/layouts/tags.native.js.map +1 -1
- package/dist/cjs/layouts/timeline.cjs +0 -6
- package/dist/cjs/layouts/timeline.native.js +0 -6
- package/dist/cjs/layouts/timeline.native.js.map +1 -1
- package/dist/cjs/surfaces.cjs +21 -0
- package/dist/cjs/surfaces.native.js +22 -0
- package/dist/cjs/surfaces.native.js.map +1 -1
- package/dist/cjs/views/Calendar.cjs +2 -0
- package/dist/cjs/views/Calendar.native.js +8 -2
- package/dist/cjs/views/Calendar.native.js.map +1 -1
- package/dist/cjs/views/Kanban.cjs +22 -13
- package/dist/cjs/views/Kanban.native.js +1 -0
- package/dist/cjs/views/Kanban.native.js.map +1 -1
- package/dist/cjs/views/ReportBuilder.cjs +12 -2
- package/dist/cjs/views/ReportBuilder.native.js +12 -2
- package/dist/cjs/views/ReportBuilder.native.js.map +1 -1
- package/dist/esm/Avatar/index.mjs +5 -1
- package/dist/esm/Avatar/index.mjs.map +1 -1
- package/dist/esm/Avatar/index.native.js +5 -1
- package/dist/esm/Avatar/index.native.js.map +1 -1
- package/dist/esm/Badge/index.mjs +4 -1
- package/dist/esm/Badge/index.mjs.map +1 -1
- package/dist/esm/Badge/index.native.js +4 -1
- package/dist/esm/Badge/index.native.js.map +1 -1
- package/dist/esm/Carousel/index.mjs +28 -15
- package/dist/esm/Carousel/index.mjs.map +1 -1
- package/dist/esm/Carousel/index.native.js +34 -17
- package/dist/esm/Carousel/index.native.js.map +1 -1
- package/dist/esm/DotIndicator/index.mjs +93 -36
- package/dist/esm/DotIndicator/index.mjs.map +1 -1
- package/dist/esm/DotIndicator/index.native.js +94 -36
- package/dist/esm/DotIndicator/index.native.js.map +1 -1
- package/dist/esm/Pagination.mjs +113 -168
- package/dist/esm/Pagination.mjs.map +1 -1
- package/dist/esm/Pagination.native.js +126 -181
- package/dist/esm/Pagination.native.js.map +1 -1
- package/dist/esm/ProgressSteps/index.mjs +2 -1
- package/dist/esm/ProgressSteps/index.mjs.map +1 -1
- package/dist/esm/ProgressSteps/index.native.js +2 -1
- package/dist/esm/ProgressSteps/index.native.js.map +1 -1
- package/dist/esm/charts/PieChart.mjs +1 -1
- package/dist/esm/charts/PieChart.mjs.map +1 -1
- package/dist/esm/charts/PieChart.native.js +7 -2
- package/dist/esm/charts/PieChart.native.js.map +1 -1
- package/dist/esm/feedback/ConfirmDialog.mjs +2 -4
- package/dist/esm/feedback/ConfirmDialog.mjs.map +1 -1
- package/dist/esm/feedback/ConfirmDialog.native.js +2 -4
- package/dist/esm/feedback/ConfirmDialog.native.js.map +1 -1
- package/dist/esm/index.mjs +2 -2
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +2 -2
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/layouts/ViewSwitcher.mjs +4 -5
- package/dist/esm/layouts/ViewSwitcher.mjs.map +1 -1
- package/dist/esm/layouts/ViewSwitcher.native.js +13 -7
- package/dist/esm/layouts/ViewSwitcher.native.js.map +1 -1
- package/dist/esm/layouts/attachments.mjs +4 -8
- package/dist/esm/layouts/attachments.mjs.map +1 -1
- package/dist/esm/layouts/attachments.native.js +5 -8
- package/dist/esm/layouts/attachments.native.js.map +1 -1
- package/dist/esm/layouts/page.mjs +2 -1
- package/dist/esm/layouts/page.mjs.map +1 -1
- package/dist/esm/layouts/page.native.js +5 -2
- package/dist/esm/layouts/page.native.js.map +1 -1
- package/dist/esm/layouts/tags.mjs +1 -0
- package/dist/esm/layouts/tags.mjs.map +1 -1
- package/dist/esm/layouts/tags.native.js +2 -0
- package/dist/esm/layouts/tags.native.js.map +1 -1
- package/dist/esm/layouts/timeline.mjs +0 -6
- package/dist/esm/layouts/timeline.mjs.map +1 -1
- package/dist/esm/layouts/timeline.native.js +0 -6
- package/dist/esm/layouts/timeline.native.js.map +1 -1
- package/dist/esm/surfaces.mjs +21 -1
- package/dist/esm/surfaces.mjs.map +1 -1
- package/dist/esm/surfaces.native.js +22 -1
- package/dist/esm/surfaces.native.js.map +1 -1
- package/dist/esm/views/Calendar.mjs +3 -1
- package/dist/esm/views/Calendar.mjs.map +1 -1
- package/dist/esm/views/Calendar.native.js +9 -3
- package/dist/esm/views/Calendar.native.js.map +1 -1
- package/dist/esm/views/Kanban.mjs +23 -14
- package/dist/esm/views/Kanban.mjs.map +1 -1
- package/dist/esm/views/Kanban.native.js +2 -1
- package/dist/esm/views/Kanban.native.js.map +1 -1
- package/dist/esm/views/ReportBuilder.mjs +13 -3
- package/dist/esm/views/ReportBuilder.mjs.map +1 -1
- package/dist/esm/views/ReportBuilder.native.js +13 -3
- package/dist/esm/views/ReportBuilder.native.js.map +1 -1
- package/dist/jsx/Avatar/index.mjs +5 -1
- package/dist/jsx/Avatar/index.mjs.map +1 -1
- package/dist/jsx/Avatar/index.native.js +4 -0
- package/dist/jsx/Avatar/index.native.js.map +1 -1
- package/dist/jsx/Badge/index.mjs +4 -1
- package/dist/jsx/Badge/index.mjs.map +1 -1
- package/dist/jsx/Badge/index.native.js +3 -0
- package/dist/jsx/Badge/index.native.js.map +1 -1
- package/dist/jsx/Carousel/index.mjs +28 -15
- package/dist/jsx/Carousel/index.mjs.map +1 -1
- package/dist/jsx/Carousel/index.native.js +34 -17
- package/dist/jsx/Carousel/index.native.js.map +1 -1
- package/dist/jsx/DotIndicator/index.mjs +93 -36
- package/dist/jsx/DotIndicator/index.mjs.map +1 -1
- package/dist/jsx/DotIndicator/index.native.js +93 -35
- package/dist/jsx/DotIndicator/index.native.js.map +1 -1
- package/dist/jsx/Pagination.mjs +113 -168
- package/dist/jsx/Pagination.mjs.map +1 -1
- package/dist/jsx/Pagination.native.js +125 -180
- package/dist/jsx/Pagination.native.js.map +1 -1
- package/dist/jsx/ProgressSteps/index.mjs +2 -1
- package/dist/jsx/ProgressSteps/index.mjs.map +1 -1
- package/dist/jsx/ProgressSteps/index.native.js +2 -1
- package/dist/jsx/ProgressSteps/index.native.js.map +1 -1
- package/dist/jsx/charts/PieChart.mjs +1 -1
- package/dist/jsx/charts/PieChart.mjs.map +1 -1
- package/dist/jsx/charts/PieChart.native.js +7 -2
- package/dist/jsx/charts/PieChart.native.js.map +1 -1
- package/dist/jsx/feedback/ConfirmDialog.mjs +2 -4
- package/dist/jsx/feedback/ConfirmDialog.mjs.map +1 -1
- package/dist/jsx/feedback/ConfirmDialog.native.js +1 -3
- package/dist/jsx/feedback/ConfirmDialog.native.js.map +1 -1
- package/dist/jsx/index.js +2 -2
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +2 -2
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +1 -0
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/layouts/ViewSwitcher.mjs +4 -5
- package/dist/jsx/layouts/ViewSwitcher.mjs.map +1 -1
- package/dist/jsx/layouts/ViewSwitcher.native.js +13 -7
- package/dist/jsx/layouts/ViewSwitcher.native.js.map +1 -1
- package/dist/jsx/layouts/attachments.mjs +4 -8
- package/dist/jsx/layouts/attachments.mjs.map +1 -1
- package/dist/jsx/layouts/attachments.native.js +5 -8
- package/dist/jsx/layouts/attachments.native.js.map +1 -1
- package/dist/jsx/layouts/page.mjs +2 -1
- package/dist/jsx/layouts/page.mjs.map +1 -1
- package/dist/jsx/layouts/page.native.js +4 -1
- package/dist/jsx/layouts/page.native.js.map +1 -1
- package/dist/jsx/layouts/tags.mjs +1 -0
- package/dist/jsx/layouts/tags.mjs.map +1 -1
- package/dist/jsx/layouts/tags.native.js +2 -0
- package/dist/jsx/layouts/tags.native.js.map +1 -1
- package/dist/jsx/layouts/timeline.mjs +0 -6
- package/dist/jsx/layouts/timeline.mjs.map +1 -1
- package/dist/jsx/layouts/timeline.native.js +0 -6
- package/dist/jsx/layouts/timeline.native.js.map +1 -1
- package/dist/jsx/surfaces.mjs +21 -1
- package/dist/jsx/surfaces.mjs.map +1 -1
- package/dist/jsx/surfaces.native.js +22 -0
- package/dist/jsx/surfaces.native.js.map +1 -1
- package/dist/jsx/views/Calendar.mjs +3 -1
- package/dist/jsx/views/Calendar.mjs.map +1 -1
- package/dist/jsx/views/Calendar.native.js +8 -2
- package/dist/jsx/views/Calendar.native.js.map +1 -1
- package/dist/jsx/views/Kanban.mjs +23 -14
- package/dist/jsx/views/Kanban.mjs.map +1 -1
- package/dist/jsx/views/Kanban.native.js +1 -0
- package/dist/jsx/views/Kanban.native.js.map +1 -1
- package/dist/jsx/views/ReportBuilder.mjs +13 -3
- package/dist/jsx/views/ReportBuilder.mjs.map +1 -1
- package/dist/jsx/views/ReportBuilder.native.js +12 -2
- package/dist/jsx/views/ReportBuilder.native.js.map +1 -1
- package/package.json +9 -9
- package/src/Accordion/Accordion.stories.tsx +7 -2
- package/src/Avatar/Avatar.spec.tsx +31 -0
- package/src/Avatar/index.tsx +19 -1
- package/src/Badge/Badge.stories.tsx +3 -1
- package/src/Badge/index.tsx +4 -1
- package/src/Carousel/Carousel.spec.tsx +271 -0
- package/src/Carousel/Carousel.stories.tsx +35 -0
- package/src/Carousel/index.tsx +45 -20
- package/src/DialogContent.stories.tsx +2 -2
- package/src/DotIndicator/dotIndicator.spec.tsx +43 -1
- package/src/DotIndicator/index.tsx +169 -35
- package/src/Pagination.api.spec.tsx +345 -0
- package/src/Pagination.tsx +138 -176
- package/src/Panel.stories.tsx +4 -4
- package/src/ProgressSteps/ProgressSteps.spec.tsx +40 -1
- package/src/ProgressSteps/ProgressSteps.stories.tsx +3 -1
- package/src/ProgressSteps/index.tsx +6 -1
- package/src/charts/PieChart.tsx +4 -1
- package/src/feedback/ConfirmDialog.tsx +2 -2
- package/src/index.ts +1 -0
- package/src/layouts/PageHeader.stories.tsx +21 -3
- package/src/layouts/ScreenToolbar.stories.tsx +12 -5
- package/src/layouts/ViewSwitcher.tsx +25 -6
- package/src/layouts/attachments.tsx +4 -1
- package/src/layouts/layouts.spec.tsx +77 -1
- package/src/layouts/page.tsx +5 -1
- package/src/layouts/pageTitleScale.spec.tsx +70 -0
- package/src/layouts/tags.tsx +2 -0
- package/src/layouts/timeline-radius.spec.tsx +21 -0
- package/src/layouts/timeline.tsx +7 -18
- package/src/shared/t.spec.ts +47 -0
- package/src/surfaces.tsx +33 -0
- package/src/views/Calendar.stories.tsx +4 -2
- package/src/views/Calendar.tsx +6 -1
- package/src/views/Gantt.stories.tsx +2 -2
- package/src/views/Kanban.native.tsx +8 -2
- package/src/views/Kanban.stories.tsx +3 -1
- package/src/views/Kanban.tsx +42 -13
- package/src/views/ReportBuilder.tsx +15 -2
- package/types/Avatar/index.d.ts.map +1 -1
- package/types/Badge/index.d.ts.map +1 -1
- package/types/Carousel/index.d.ts.map +1 -1
- package/types/DotIndicator/index.d.ts +44 -3
- package/types/DotIndicator/index.d.ts.map +1 -1
- package/types/Pagination.d.ts +6 -1
- package/types/Pagination.d.ts.map +1 -1
- package/types/ProgressSteps/index.d.ts.map +1 -1
- package/types/charts/PieChart.d.ts.map +1 -1
- package/types/index.d.ts +1 -1
- package/types/index.d.ts.map +1 -1
- package/types/layouts/ViewSwitcher.d.ts.map +1 -1
- package/types/layouts/attachments.d.ts.map +1 -1
- package/types/layouts/page.d.ts.map +1 -1
- package/types/layouts/tags.d.ts.map +1 -1
- package/types/layouts/timeline.d.ts.map +1 -1
- package/types/surfaces.d.ts +17 -0
- package/types/surfaces.d.ts.map +1 -1
- package/types/views/Calendar.d.ts.map +1 -1
- package/types/views/Kanban.d.ts +13 -1
- package/types/views/Kanban.d.ts.map +1 -1
- package/types/views/ReportBuilder.d.ts.map +1 -1
package/dist/cjs/Pagination.cjs
CHANGED
|
@@ -32,6 +32,7 @@ var import_react2 = require("react");
|
|
|
32
32
|
var import_react_i18next = require("react-i18next");
|
|
33
33
|
var import_forms = require("@multiplatform.one/forms");
|
|
34
34
|
var import_tamagui = require("tamagui");
|
|
35
|
+
var import_DotIndicator = require("./DotIndicator/index.cjs");
|
|
35
36
|
var import_componentColors = require("./componentColors.cjs");
|
|
36
37
|
var import_useDirection = require("./hooks/useDirection.cjs");
|
|
37
38
|
var import_t = require("./shared/t.cjs");
|
|
@@ -60,6 +61,16 @@ function getPaginationItems(total, page, siblingCount = 1, boundaryCount = 1) {
|
|
|
60
61
|
items.push(...endPages);
|
|
61
62
|
return items;
|
|
62
63
|
}
|
|
64
|
+
const stripSteps = {
|
|
65
|
+
base: {
|
|
66
|
+
mark: "$0.75",
|
|
67
|
+
active: "$2"
|
|
68
|
+
},
|
|
69
|
+
large: {
|
|
70
|
+
mark: "$1.5",
|
|
71
|
+
active: "$3"
|
|
72
|
+
}
|
|
73
|
+
};
|
|
63
74
|
function Pagination({
|
|
64
75
|
total,
|
|
65
76
|
activeIndex,
|
|
@@ -121,185 +132,119 @@ function Pagination({
|
|
|
121
132
|
if (enabled) fn();
|
|
122
133
|
}
|
|
123
134
|
};
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
...knobProps.gap,
|
|
139
|
-
...stackProps,
|
|
140
|
-
children: [showFirstLast && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
|
|
141
|
-
size: knobProps.sizeToken,
|
|
142
|
-
variant: "outlined",
|
|
143
|
-
icon: FirstIcon,
|
|
144
|
-
onPress: () => goTo(0),
|
|
145
|
-
disabled: !canPrev,
|
|
146
|
-
"aria-label": t("Go to first page"),
|
|
147
|
-
onKeyDown: activateOnEnterSpace(() => goTo(0), canPrev)
|
|
148
|
-
}), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
|
|
149
|
-
size: knobProps.sizeToken,
|
|
150
|
-
variant: "outlined",
|
|
151
|
-
icon: PrevIcon,
|
|
152
|
-
onPress: handlePrev,
|
|
153
|
-
disabled: !canPrev,
|
|
154
|
-
"aria-label": t("Go to previous page"),
|
|
155
|
-
onKeyDown: activateOnEnterSpace(handlePrev, canPrev)
|
|
156
|
-
}), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.XStack, {
|
|
157
|
-
alignItems: "center",
|
|
158
|
-
gap: "$1",
|
|
159
|
-
children: items.map(item => {
|
|
160
|
-
if (typeof item !== "number") {
|
|
161
|
-
return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
|
|
162
|
-
"aria-hidden": true,
|
|
163
|
-
userSelect: "none",
|
|
164
|
-
textAlign: "center",
|
|
165
|
-
minWidth: "$2",
|
|
166
|
-
...knobProps.body,
|
|
167
|
-
color: import_componentColors.componentColors.text.muted,
|
|
168
|
-
children: "\u2026"
|
|
169
|
-
}, item);
|
|
170
|
-
}
|
|
171
|
-
const isCurrent = item === currentPage;
|
|
172
|
-
return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
|
|
173
|
-
size: knobProps.sizeToken,
|
|
174
|
-
minWidth: knobProps.sizeToken,
|
|
175
|
-
paddingHorizontal: "$2",
|
|
176
|
-
accent: isCurrent,
|
|
177
|
-
chromeless: !isCurrent,
|
|
178
|
-
disabled,
|
|
179
|
-
onPress: () => goTo(item - 1),
|
|
180
|
-
"aria-label": (0, import_t.withInterp)(t("Page {{number}}"), {
|
|
181
|
-
number: item
|
|
182
|
-
}),
|
|
183
|
-
"aria-current": isCurrent ? "page" : void 0,
|
|
184
|
-
onKeyDown: activateOnEnterSpace(() => goTo(item - 1), !disabled),
|
|
185
|
-
children: String(item)
|
|
186
|
-
}, item);
|
|
187
|
-
})
|
|
188
|
-
}), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
|
|
189
|
-
size: knobProps.sizeToken,
|
|
190
|
-
variant: "outlined",
|
|
191
|
-
icon: NextIcon,
|
|
192
|
-
onPress: handleNext,
|
|
193
|
-
disabled: !canNext,
|
|
194
|
-
"aria-label": t("Go to next page"),
|
|
195
|
-
onKeyDown: activateOnEnterSpace(handleNext, canNext)
|
|
196
|
-
}), showFirstLast && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
|
|
197
|
-
size: knobProps.sizeToken,
|
|
198
|
-
variant: "outlined",
|
|
199
|
-
icon: LastIcon,
|
|
200
|
-
onPress: () => goTo(total - 1),
|
|
201
|
-
disabled: !canNext,
|
|
202
|
-
"aria-label": t("Go to last page"),
|
|
203
|
-
onKeyDown: activateOnEnterSpace(() => goTo(total - 1), canNext)
|
|
204
|
-
}), summary && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
|
|
205
|
-
...knobProps.body,
|
|
206
|
-
color: import_componentColors.componentColors.text.muted,
|
|
207
|
-
"aria-live": "polite",
|
|
208
|
-
userSelect: "none",
|
|
209
|
-
children: summary
|
|
210
|
-
})]
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
const dotSize = variant === "bars" ? "$1.5" : "$0.75";
|
|
214
|
-
const activeDotSize = variant === "bars" ? "$3" : "$2";
|
|
135
|
+
const isNumbered = variant === "numbered";
|
|
136
|
+
const canPrev = !disabled && index > 0;
|
|
137
|
+
const canNext = isNumbered ? !disabled && currentPage < total :
|
|
138
|
+
// dots/bars: an onSubmit makes the last step actionable, so the forward
|
|
139
|
+
// control is not dead there.
|
|
140
|
+
!(disabled || !isLastStep && index >= total - 1 && !onSubmit);
|
|
141
|
+
const submits = !isNumbered && isLastStep;
|
|
142
|
+
const items = isNumbered ? getPaginationItems(total, currentPage, siblingCount, boundaryCount) : [];
|
|
143
|
+
const summary = isNumbered && showSummary && totalItems != null && pageSize != null ? (0, import_t.bidiIsolate)(totalItems === 0 ? t("0 of 0") : (0, import_t.withInterp)(t("{{start}}\u2013{{end}} of {{total}}"), {
|
|
144
|
+
start: (currentPage - 1) * pageSize + 1,
|
|
145
|
+
end: Math.min(currentPage * pageSize, totalItems),
|
|
146
|
+
total: totalItems
|
|
147
|
+
})) : void 0;
|
|
148
|
+
const step = variant === "bars" ? stripSteps.large : stripSteps.base;
|
|
215
149
|
return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
|
|
216
150
|
alignItems: "center",
|
|
217
151
|
justifyContent: "center",
|
|
152
|
+
role: "navigation",
|
|
153
|
+
"aria-label": t("Pagination"),
|
|
218
154
|
...knobProps.gap,
|
|
219
155
|
...stackProps,
|
|
220
|
-
children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
|
|
156
|
+
children: [isNumbered && showFirstLast && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
|
|
221
157
|
size: knobProps.sizeToken,
|
|
222
|
-
circular: true,
|
|
223
|
-
icon: PrevArrowIcon,
|
|
224
|
-
onPress: handlePrev,
|
|
225
|
-
disabled: disabled || index === 0,
|
|
226
158
|
variant: "outlined",
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
159
|
+
icon: FirstIcon,
|
|
160
|
+
onPress: () => goTo(0),
|
|
161
|
+
disabled: !canPrev,
|
|
162
|
+
"aria-label": t("Go to first page"),
|
|
163
|
+
onKeyDown: activateOnEnterSpace(() => goTo(0), canPrev)
|
|
164
|
+
}), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
|
|
165
|
+
size: knobProps.sizeToken,
|
|
166
|
+
circular: !isNumbered,
|
|
167
|
+
variant: "outlined",
|
|
168
|
+
icon: isNumbered ? PrevIcon : PrevArrowIcon,
|
|
169
|
+
onPress: handlePrev,
|
|
170
|
+
disabled: !canPrev,
|
|
171
|
+
"aria-label": isNumbered ? t("Go to previous page") : t("Previous page"),
|
|
172
|
+
onKeyDown: activateOnEnterSpace(handlePrev, canPrev)
|
|
173
|
+
}), isNumbered ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.XStack, {
|
|
230
174
|
alignItems: "center",
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
"aria-current":
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
style: {
|
|
261
|
-
transition: `width var(--mp-transition, 100ms) ease, height var(--mp-transition, 100ms) ease, background-color var(--mp-transition, 100ms) ease`
|
|
262
|
-
},
|
|
263
|
-
...(canJump ? {
|
|
264
|
-
onPress: () => goTo(dotIndex),
|
|
265
|
-
role: "button",
|
|
266
|
-
"aria-label": (0, import_t.withInterp)(t("Go to step {{number}}"), {
|
|
267
|
-
number: dotIndex + 1
|
|
268
|
-
}),
|
|
269
|
-
tabIndex: 0,
|
|
270
|
-
focusVisibleStyle: {
|
|
271
|
-
outlineColor: "$outlineColor",
|
|
272
|
-
outlineWidth: 2,
|
|
273
|
-
outlineStyle: "solid",
|
|
274
|
-
outlineOffset: 1
|
|
275
|
-
},
|
|
276
|
-
onKeyDown: e => {
|
|
277
|
-
if (e.key === "Enter" || e.key === " ") {
|
|
278
|
-
e.preventDefault();
|
|
279
|
-
goTo(dotIndex);
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
} : {})
|
|
283
|
-
};
|
|
284
|
-
return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.View, {
|
|
285
|
-
...dotProps,
|
|
286
|
-
children: isCompleted && !isActive && variant === "dots" && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.CheckIcon, {
|
|
287
|
-
size: 8,
|
|
288
|
-
color: "white",
|
|
289
|
-
weight: "bold"
|
|
290
|
-
})
|
|
291
|
-
}, dotIndex);
|
|
175
|
+
gap: "$1",
|
|
176
|
+
children: items.map(item => {
|
|
177
|
+
if (typeof item !== "number") {
|
|
178
|
+
return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
|
|
179
|
+
"aria-hidden": true,
|
|
180
|
+
userSelect: "none",
|
|
181
|
+
textAlign: "center",
|
|
182
|
+
minWidth: "$2",
|
|
183
|
+
...knobProps.body,
|
|
184
|
+
color: import_componentColors.componentColors.text.muted,
|
|
185
|
+
children: "\u2026"
|
|
186
|
+
}, item);
|
|
187
|
+
}
|
|
188
|
+
const isCurrent = item === currentPage;
|
|
189
|
+
return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
|
|
190
|
+
size: knobProps.sizeToken,
|
|
191
|
+
minWidth: knobProps.sizeToken,
|
|
192
|
+
paddingHorizontal: "$2",
|
|
193
|
+
accent: isCurrent,
|
|
194
|
+
chromeless: !isCurrent,
|
|
195
|
+
disabled,
|
|
196
|
+
onPress: () => goTo(item - 1),
|
|
197
|
+
"aria-label": (0, import_t.withInterp)(t("Page {{number}}"), {
|
|
198
|
+
number: item
|
|
199
|
+
}),
|
|
200
|
+
"aria-current": isCurrent ? "page" : void 0,
|
|
201
|
+
onKeyDown: activateOnEnterSpace(() => goTo(item - 1), !disabled),
|
|
202
|
+
children: String(item)
|
|
203
|
+
}, item);
|
|
292
204
|
})
|
|
205
|
+
}) :
|
|
206
|
+
// LC-16: the dot strip IS `DotIndicator` — this component owns the
|
|
207
|
+
// pager frame around it, not a second strip. `completedSteps`, the
|
|
208
|
+
// wizard a11y idiom and the rail all ride the primitive, so the two
|
|
209
|
+
// strips in the catalog cannot drift apart again.
|
|
210
|
+
/* @__PURE__ */
|
|
211
|
+
(0, import_jsx_runtime.jsx)(import_DotIndicator.DotIndicator, {
|
|
212
|
+
total,
|
|
213
|
+
activeIndex: index,
|
|
214
|
+
variant,
|
|
215
|
+
idiom: "step",
|
|
216
|
+
rail: true,
|
|
217
|
+
completedSteps,
|
|
218
|
+
dotSize: step.mark,
|
|
219
|
+
activeDotSize: step.active,
|
|
220
|
+
transition: motionTransition,
|
|
221
|
+
dotStateAttribute: "data-pagination-dot",
|
|
222
|
+
onChange: allowJumpTo && !disabled ? goTo : void 0,
|
|
223
|
+
disabled: allowJumpTo && disabled
|
|
293
224
|
}), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
|
|
294
225
|
size: knobProps.sizeToken,
|
|
295
|
-
circular:
|
|
296
|
-
|
|
226
|
+
circular: !isNumbered,
|
|
227
|
+
variant: submits ? void 0 : "outlined",
|
|
228
|
+
theme: submits ? "active" : void 0,
|
|
229
|
+
icon: isNumbered ? NextIcon : submits ? import_react.CheckIcon : NextArrowIcon,
|
|
297
230
|
onPress: handleNext,
|
|
298
|
-
disabled:
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
231
|
+
disabled: !canNext,
|
|
232
|
+
"aria-label": isNumbered ? t("Go to next page") : submits ? t("Submit") : t("Next page"),
|
|
233
|
+
onKeyDown: activateOnEnterSpace(handleNext, canNext)
|
|
234
|
+
}), isNumbered && showFirstLast && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
|
|
235
|
+
size: knobProps.sizeToken,
|
|
236
|
+
variant: "outlined",
|
|
237
|
+
icon: LastIcon,
|
|
238
|
+
onPress: () => goTo(total - 1),
|
|
239
|
+
disabled: !canNext,
|
|
240
|
+
"aria-label": t("Go to last page"),
|
|
241
|
+
onKeyDown: activateOnEnterSpace(() => goTo(total - 1), canNext)
|
|
242
|
+
}), summary && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
|
|
243
|
+
...knobProps.body,
|
|
244
|
+
color: import_componentColors.componentColors.text.muted,
|
|
245
|
+
"aria-live": "polite",
|
|
246
|
+
userSelect: "none",
|
|
247
|
+
children: summary
|
|
303
248
|
})]
|
|
304
249
|
});
|
|
305
250
|
}
|
|
@@ -35,6 +35,7 @@ var import_react2 = require("react");
|
|
|
35
35
|
var import_react_i18next = require("react-i18next");
|
|
36
36
|
var import_forms = require("@multiplatform.one/forms");
|
|
37
37
|
var import_tamagui = require("tamagui");
|
|
38
|
+
var import_DotIndicator = require("./DotIndicator/index.native.js");
|
|
38
39
|
var import_componentColors = require("./componentColors.native.js");
|
|
39
40
|
var import_useDirection = require("./hooks/useDirection.native.js");
|
|
40
41
|
var import_t = require("./shared/t.native.js");
|
|
@@ -68,6 +69,16 @@ function getPaginationItems(total, page) {
|
|
|
68
69
|
items.push(...endPages);
|
|
69
70
|
return items;
|
|
70
71
|
}
|
|
72
|
+
var stripSteps = {
|
|
73
|
+
base: {
|
|
74
|
+
mark: "$0.75",
|
|
75
|
+
active: "$2"
|
|
76
|
+
},
|
|
77
|
+
large: {
|
|
78
|
+
mark: "$1.5",
|
|
79
|
+
active: "$3"
|
|
80
|
+
}
|
|
81
|
+
};
|
|
71
82
|
function Pagination(param) {
|
|
72
83
|
var {
|
|
73
84
|
total,
|
|
@@ -132,201 +143,135 @@ function Pagination(param) {
|
|
|
132
143
|
}
|
|
133
144
|
};
|
|
134
145
|
};
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
...knobProps.gap,
|
|
150
|
-
...stackProps,
|
|
151
|
-
children: [showFirstLast && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
|
|
152
|
-
size: knobProps.sizeToken,
|
|
153
|
-
variant: "outlined",
|
|
154
|
-
icon: FirstIcon,
|
|
155
|
-
onPress: function onPress() {
|
|
156
|
-
return goTo(0);
|
|
157
|
-
},
|
|
158
|
-
disabled: !canPrev,
|
|
159
|
-
"aria-label": t("Go to first page"),
|
|
160
|
-
onKeyDown: activateOnEnterSpace(function () {
|
|
161
|
-
return goTo(0);
|
|
162
|
-
}, canPrev)
|
|
163
|
-
}), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
|
|
164
|
-
size: knobProps.sizeToken,
|
|
165
|
-
variant: "outlined",
|
|
166
|
-
icon: PrevIcon,
|
|
167
|
-
onPress: handlePrev,
|
|
168
|
-
disabled: !canPrev,
|
|
169
|
-
"aria-label": t("Go to previous page"),
|
|
170
|
-
onKeyDown: activateOnEnterSpace(handlePrev, canPrev)
|
|
171
|
-
}), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.XStack, {
|
|
172
|
-
alignItems: "center",
|
|
173
|
-
gap: "$1",
|
|
174
|
-
children: items.map(function (item) {
|
|
175
|
-
if (typeof item !== "number") {
|
|
176
|
-
return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
|
|
177
|
-
"aria-hidden": true,
|
|
178
|
-
userSelect: "none",
|
|
179
|
-
textAlign: "center",
|
|
180
|
-
minWidth: "$2",
|
|
181
|
-
...knobProps.body,
|
|
182
|
-
color: import_componentColors.componentColors.text.muted,
|
|
183
|
-
children: "\u2026"
|
|
184
|
-
}, item);
|
|
185
|
-
}
|
|
186
|
-
var isCurrent = item === currentPage;
|
|
187
|
-
return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
|
|
188
|
-
size: knobProps.sizeToken,
|
|
189
|
-
minWidth: knobProps.sizeToken,
|
|
190
|
-
paddingHorizontal: "$2",
|
|
191
|
-
accent: isCurrent,
|
|
192
|
-
chromeless: !isCurrent,
|
|
193
|
-
disabled,
|
|
194
|
-
onPress: function onPress() {
|
|
195
|
-
return goTo(item - 1);
|
|
196
|
-
},
|
|
197
|
-
"aria-label": (0, import_t.withInterp)(t("Page {{number}}"), {
|
|
198
|
-
number: item
|
|
199
|
-
}),
|
|
200
|
-
"aria-current": isCurrent ? "page" : void 0,
|
|
201
|
-
onKeyDown: activateOnEnterSpace(function () {
|
|
202
|
-
return goTo(item - 1);
|
|
203
|
-
}, !disabled),
|
|
204
|
-
children: String(item)
|
|
205
|
-
}, item);
|
|
206
|
-
})
|
|
207
|
-
}), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
|
|
208
|
-
size: knobProps.sizeToken,
|
|
209
|
-
variant: "outlined",
|
|
210
|
-
icon: NextIcon,
|
|
211
|
-
onPress: handleNext,
|
|
212
|
-
disabled: !canNext,
|
|
213
|
-
"aria-label": t("Go to next page"),
|
|
214
|
-
onKeyDown: activateOnEnterSpace(handleNext, canNext)
|
|
215
|
-
}), showFirstLast && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
|
|
216
|
-
size: knobProps.sizeToken,
|
|
217
|
-
variant: "outlined",
|
|
218
|
-
icon: LastIcon,
|
|
219
|
-
onPress: function onPress() {
|
|
220
|
-
return goTo(total - 1);
|
|
221
|
-
},
|
|
222
|
-
disabled: !canNext,
|
|
223
|
-
"aria-label": t("Go to last page"),
|
|
224
|
-
onKeyDown: activateOnEnterSpace(function () {
|
|
225
|
-
return goTo(total - 1);
|
|
226
|
-
}, canNext)
|
|
227
|
-
}), summary && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
|
|
228
|
-
...knobProps.body,
|
|
229
|
-
color: import_componentColors.componentColors.text.muted,
|
|
230
|
-
"aria-live": "polite",
|
|
231
|
-
userSelect: "none",
|
|
232
|
-
children: summary
|
|
233
|
-
})]
|
|
234
|
-
});
|
|
235
|
-
}
|
|
236
|
-
var dotSize = variant === "bars" ? "$1.5" : "$0.75";
|
|
237
|
-
var activeDotSize = variant === "bars" ? "$3" : "$2";
|
|
146
|
+
var isNumbered = variant === "numbered";
|
|
147
|
+
var canPrev = !disabled && index > 0;
|
|
148
|
+
var canNext = isNumbered ? !disabled && currentPage < total :
|
|
149
|
+
// dots/bars: an onSubmit makes the last step actionable, so the forward
|
|
150
|
+
// control is not dead there.
|
|
151
|
+
!(disabled || !isLastStep && index >= total - 1 && !onSubmit);
|
|
152
|
+
var submits = !isNumbered && isLastStep;
|
|
153
|
+
var items = isNumbered ? getPaginationItems(total, currentPage, siblingCount, boundaryCount) : [];
|
|
154
|
+
var summary = isNumbered && showSummary && totalItems != null && pageSize != null ? (0, import_t.bidiIsolate)(totalItems === 0 ? t("0 of 0") : (0, import_t.withInterp)(t("{{start}}\u2013{{end}} of {{total}}"), {
|
|
155
|
+
start: (currentPage - 1) * pageSize + 1,
|
|
156
|
+
end: Math.min(currentPage * pageSize, totalItems),
|
|
157
|
+
total: totalItems
|
|
158
|
+
})) : void 0;
|
|
159
|
+
var step = variant === "bars" ? stripSteps.large : stripSteps.base;
|
|
238
160
|
return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_tamagui.XStack, {
|
|
239
161
|
alignItems: "center",
|
|
240
162
|
justifyContent: "center",
|
|
163
|
+
role: "navigation",
|
|
164
|
+
"aria-label": t("Pagination"),
|
|
241
165
|
...knobProps.gap,
|
|
242
166
|
...stackProps,
|
|
243
|
-
children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
|
|
167
|
+
children: [isNumbered && showFirstLast && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
|
|
244
168
|
size: knobProps.sizeToken,
|
|
245
|
-
circular: true,
|
|
246
|
-
icon: PrevArrowIcon,
|
|
247
|
-
onPress: handlePrev,
|
|
248
|
-
disabled: disabled || index === 0,
|
|
249
169
|
variant: "outlined",
|
|
170
|
+
icon: FirstIcon,
|
|
171
|
+
onPress: function onPress() {
|
|
172
|
+
return goTo(0);
|
|
173
|
+
},
|
|
174
|
+
disabled: !canPrev,
|
|
175
|
+
"aria-label": t("Go to first page"),
|
|
176
|
+
onKeyDown: activateOnEnterSpace(function () {
|
|
177
|
+
return goTo(0);
|
|
178
|
+
}, canPrev)
|
|
179
|
+
}), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
|
|
180
|
+
size: knobProps.sizeToken,
|
|
181
|
+
circular: !isNumbered,
|
|
182
|
+
variant: "outlined",
|
|
183
|
+
icon: isNumbered ? PrevIcon : PrevArrowIcon,
|
|
184
|
+
onPress: handlePrev,
|
|
185
|
+
disabled: !canPrev,
|
|
250
186
|
// LC-40: the Button's own disabled wash owns the treatment — the
|
|
251
187
|
// legacy opacity 0.3 dim stacked on top of it (double-dim).
|
|
252
|
-
"aria-label": t("Previous page"),
|
|
253
|
-
onKeyDown: activateOnEnterSpace(handlePrev,
|
|
254
|
-
}), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.XStack, {
|
|
188
|
+
"aria-label": isNumbered ? t("Go to previous page") : t("Previous page"),
|
|
189
|
+
onKeyDown: activateOnEnterSpace(handlePrev, canPrev)
|
|
190
|
+
}), isNumbered ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.XStack, {
|
|
255
191
|
alignItems: "center",
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
alignItems: "center",
|
|
280
|
-
justifyContent: "center",
|
|
281
|
-
"aria-current": isActive ? "step" : void 0,
|
|
282
|
-
"data-pagination-dot": isActive ? "active" : "idle",
|
|
283
|
-
// Belt-and-suspenders for the CSS driver: named `transition` covers
|
|
284
|
-
// Tamagui layout props; explicit width/bg ensures measurable intermediates.
|
|
285
|
-
style: {
|
|
286
|
-
transition: `width var(--mp-transition, 100ms) ease, height var(--mp-transition, 100ms) ease, background-color var(--mp-transition, 100ms) ease`
|
|
192
|
+
gap: "$1",
|
|
193
|
+
children: items.map(function (item) {
|
|
194
|
+
if (typeof item !== "number") {
|
|
195
|
+
return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
|
|
196
|
+
"aria-hidden": true,
|
|
197
|
+
userSelect: "none",
|
|
198
|
+
textAlign: "center",
|
|
199
|
+
minWidth: "$2",
|
|
200
|
+
...knobProps.body,
|
|
201
|
+
color: import_componentColors.componentColors.text.muted,
|
|
202
|
+
children: "\u2026"
|
|
203
|
+
}, item);
|
|
204
|
+
}
|
|
205
|
+
var isCurrent = item === currentPage;
|
|
206
|
+
return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
|
|
207
|
+
size: knobProps.sizeToken,
|
|
208
|
+
minWidth: knobProps.sizeToken,
|
|
209
|
+
paddingHorizontal: "$2",
|
|
210
|
+
accent: isCurrent,
|
|
211
|
+
chromeless: !isCurrent,
|
|
212
|
+
disabled,
|
|
213
|
+
onPress: function onPress() {
|
|
214
|
+
return goTo(item - 1);
|
|
287
215
|
},
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
focusVisibleStyle: {
|
|
298
|
-
outlineColor: "$outlineColor",
|
|
299
|
-
outlineWidth: 2,
|
|
300
|
-
outlineStyle: "solid",
|
|
301
|
-
outlineOffset: 1
|
|
302
|
-
},
|
|
303
|
-
onKeyDown: function onKeyDown(e) {
|
|
304
|
-
if (e.key === "Enter" || e.key === " ") {
|
|
305
|
-
e.preventDefault();
|
|
306
|
-
goTo(dotIndex);
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
} : {})
|
|
310
|
-
};
|
|
311
|
-
return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.View, {
|
|
312
|
-
...dotProps,
|
|
313
|
-
children: isCompleted && !isActive && variant === "dots" && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.CheckIcon, {
|
|
314
|
-
size: 8,
|
|
315
|
-
color: "white",
|
|
316
|
-
weight: "bold"
|
|
317
|
-
})
|
|
318
|
-
}, dotIndex);
|
|
216
|
+
"aria-label": (0, import_t.withInterp)(t("Page {{number}}"), {
|
|
217
|
+
number: item
|
|
218
|
+
}),
|
|
219
|
+
"aria-current": isCurrent ? "page" : void 0,
|
|
220
|
+
onKeyDown: activateOnEnterSpace(function () {
|
|
221
|
+
return goTo(item - 1);
|
|
222
|
+
}, !disabled),
|
|
223
|
+
children: String(item)
|
|
224
|
+
}, item);
|
|
319
225
|
})
|
|
226
|
+
}) :
|
|
227
|
+
// LC-16: the dot strip IS `DotIndicator` — this component owns the
|
|
228
|
+
// pager frame around it, not a second strip. `completedSteps`, the
|
|
229
|
+
// wizard a11y idiom and the rail all ride the primitive, so the two
|
|
230
|
+
// strips in the catalog cannot drift apart again.
|
|
231
|
+
/* @__PURE__ */
|
|
232
|
+
(0, import_jsx_runtime.jsx)(import_DotIndicator.DotIndicator, {
|
|
233
|
+
total,
|
|
234
|
+
activeIndex: index,
|
|
235
|
+
variant,
|
|
236
|
+
idiom: "step",
|
|
237
|
+
rail: true,
|
|
238
|
+
completedSteps,
|
|
239
|
+
dotSize: step.mark,
|
|
240
|
+
activeDotSize: step.active,
|
|
241
|
+
transition: motionTransition,
|
|
242
|
+
dotStateAttribute: "data-pagination-dot",
|
|
243
|
+
onChange: allowJumpTo && !disabled ? goTo : void 0,
|
|
244
|
+
// A strip nobody can press has no disabled state — only a jumpable
|
|
245
|
+
// one is "interactive but blocked".
|
|
246
|
+
disabled: allowJumpTo && disabled
|
|
320
247
|
}), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
|
|
321
248
|
size: knobProps.sizeToken,
|
|
322
|
-
circular:
|
|
323
|
-
|
|
249
|
+
circular: !isNumbered,
|
|
250
|
+
variant: submits ? void 0 : "outlined",
|
|
251
|
+
theme: submits ? "active" : void 0,
|
|
252
|
+
icon: isNumbered ? NextIcon : submits ? import_react.CheckIcon : NextArrowIcon,
|
|
324
253
|
onPress: handleNext,
|
|
325
|
-
disabled:
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
254
|
+
disabled: !canNext,
|
|
255
|
+
"aria-label": isNumbered ? t("Go to next page") : submits ? t("Submit") : t("Next page"),
|
|
256
|
+
onKeyDown: activateOnEnterSpace(handleNext, canNext)
|
|
257
|
+
}), isNumbered && showFirstLast && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
|
|
258
|
+
size: knobProps.sizeToken,
|
|
259
|
+
variant: "outlined",
|
|
260
|
+
icon: LastIcon,
|
|
261
|
+
onPress: function onPress() {
|
|
262
|
+
return goTo(total - 1);
|
|
263
|
+
},
|
|
264
|
+
disabled: !canNext,
|
|
265
|
+
"aria-label": t("Go to last page"),
|
|
266
|
+
onKeyDown: activateOnEnterSpace(function () {
|
|
267
|
+
return goTo(total - 1);
|
|
268
|
+
}, canNext)
|
|
269
|
+
}), summary && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.Text, {
|
|
270
|
+
...knobProps.body,
|
|
271
|
+
color: import_componentColors.componentColors.text.muted,
|
|
272
|
+
"aria-live": "polite",
|
|
273
|
+
userSelect: "none",
|
|
274
|
+
children: summary
|
|
330
275
|
})]
|
|
331
276
|
});
|
|
332
277
|
}
|