panelui-native 0.36.0 → 0.40.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/README.md +13 -1
- package/lib/module/components/combobox/index.js +718 -0
- package/lib/module/components/combobox/index.js.map +1 -0
- package/lib/module/components/form/use-field.js +18 -0
- package/lib/module/components/form/use-field.js.map +1 -1
- package/lib/module/components/form/use-form.js +91 -8
- package/lib/module/components/form/use-form.js.map +1 -1
- package/lib/module/components/heatmap-chart/index.js +113 -6
- package/lib/module/components/heatmap-chart/index.js.map +1 -1
- package/lib/module/components/input/index.js +10 -3
- package/lib/module/components/input/index.js.map +1 -1
- package/lib/module/components/pagination/index.js +519 -0
- package/lib/module/components/pagination/index.js.map +1 -0
- package/lib/module/components/ring-chart/index.js +183 -45
- package/lib/module/components/ring-chart/index.js.map +1 -1
- package/lib/module/components/select/index.js +116 -15
- package/lib/module/components/select/index.js.map +1 -1
- package/lib/module/components/steps/index.js +8 -6
- package/lib/module/components/steps/index.js.map +1 -1
- package/lib/module/components/table/index.js +100 -26
- package/lib/module/components/table/index.js.map +1 -1
- package/lib/module/components/timeline/index.js +8 -7
- package/lib/module/components/timeline/index.js.map +1 -1
- package/lib/module/index.js +2 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/theme/use-theme.js +1 -1
- package/lib/typescript/src/components/combobox/index.d.ts +164 -0
- package/lib/typescript/src/components/combobox/index.d.ts.map +1 -0
- package/lib/typescript/src/components/form/use-field.d.ts.map +1 -1
- package/lib/typescript/src/components/form/use-form.d.ts.map +1 -1
- package/lib/typescript/src/components/heatmap-chart/index.d.ts +51 -3
- package/lib/typescript/src/components/heatmap-chart/index.d.ts.map +1 -1
- package/lib/typescript/src/components/input/index.d.ts +18 -4
- package/lib/typescript/src/components/input/index.d.ts.map +1 -1
- package/lib/typescript/src/components/pagination/index.d.ts +285 -0
- package/lib/typescript/src/components/pagination/index.d.ts.map +1 -0
- package/lib/typescript/src/components/ring-chart/index.d.ts +75 -8
- package/lib/typescript/src/components/ring-chart/index.d.ts.map +1 -1
- package/lib/typescript/src/components/select/index.d.ts +32 -0
- package/lib/typescript/src/components/select/index.d.ts.map +1 -1
- package/lib/typescript/src/components/steps/index.d.ts +8 -6
- package/lib/typescript/src/components/steps/index.d.ts.map +1 -1
- package/lib/typescript/src/components/table/index.d.ts +59 -17
- package/lib/typescript/src/components/table/index.d.ts.map +1 -1
- package/lib/typescript/src/components/timeline/index.d.ts +8 -7
- package/lib/typescript/src/components/timeline/index.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +4 -2
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/theme/use-theme.d.ts +1 -1
- package/package.json +1 -1
- package/src/components/combobox/index.tsx +927 -0
- package/src/components/form/use-field.ts +23 -0
- package/src/components/form/use-form.ts +106 -16
- package/src/components/heatmap-chart/index.tsx +147 -5
- package/src/components/input/index.tsx +21 -7
- package/src/components/pagination/index.tsx +591 -0
- package/src/components/ring-chart/index.tsx +269 -47
- package/src/components/select/index.tsx +114 -15
- package/src/components/steps/index.tsx +8 -6
- package/src/components/table/index.tsx +146 -30
- package/src/components/timeline/index.tsx +8 -7
- package/src/index.ts +25 -0
|
@@ -29,6 +29,13 @@
|
|
|
29
29
|
* field, so anything centred on the component as a whole drifts upward the
|
|
30
30
|
* moment a label is added.
|
|
31
31
|
*
|
|
32
|
+
* Both are pressable. A button dropped in there — a clear ✕, a show-password
|
|
33
|
+
* eye — gets its own touches, while the padding around it stays transparent so
|
|
34
|
+
* a tap that misses still lands on the field and puts the caret in it. An icon
|
|
35
|
+
* that is only decoration should say so with `interactiveContent={false}`,
|
|
36
|
+
* which gives the whole field back to the caret and takes the icon out of the
|
|
37
|
+
* accessibility tree.
|
|
38
|
+
*
|
|
32
39
|
* `InputGroup` is still the right answer for a decorator that is not part of
|
|
33
40
|
* the field — a button attached to its end, a select bolted to its start, an
|
|
34
41
|
* addon with its own background. It measures the same way; it just spans a
|
|
@@ -145,7 +152,7 @@ export const Input = /*#__PURE__*/forwardRef(({
|
|
|
145
152
|
disabled,
|
|
146
153
|
startContent,
|
|
147
154
|
endContent,
|
|
148
|
-
interactiveContent =
|
|
155
|
+
interactiveContent = true,
|
|
149
156
|
variant,
|
|
150
157
|
size,
|
|
151
158
|
avoidKeyboard = false,
|
|
@@ -261,7 +268,7 @@ export const Input = /*#__PURE__*/forwardRef(({
|
|
|
261
268
|
className: slots.fieldBox(),
|
|
262
269
|
children: [startContent ? /*#__PURE__*/_jsx(View, {
|
|
263
270
|
onLayout: handleStartLayout,
|
|
264
|
-
pointerEvents: interactiveContent ? '
|
|
271
|
+
pointerEvents: interactiveContent ? 'box-none' : 'none',
|
|
265
272
|
accessibilityElementsHidden: !interactiveContent,
|
|
266
273
|
importantForAccessibility: interactiveContent ? 'auto' : 'no-hide-descendants',
|
|
267
274
|
className: slots.startContent(),
|
|
@@ -271,7 +278,7 @@ export const Input = /*#__PURE__*/forwardRef(({
|
|
|
271
278
|
})
|
|
272
279
|
}) : null, field, endContent ? /*#__PURE__*/_jsx(View, {
|
|
273
280
|
onLayout: handleEndLayout,
|
|
274
|
-
pointerEvents: interactiveContent ? '
|
|
281
|
+
pointerEvents: interactiveContent ? 'box-none' : 'none',
|
|
275
282
|
accessibilityElementsHidden: !interactiveContent,
|
|
276
283
|
importantForAccessibility: interactiveContent ? 'auto' : 'no-hide-descendants',
|
|
277
284
|
className: slots.endContent(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["forwardRef","useCallback","useEffect","useState","TextInput","View","Animated","interpolateColor","useAnimatedStyle","useSharedValue","withTiming","tv","useCSSVariable","IconColorProvider","KeyboardAvoider","Text","textChildren","Label","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","FOCUS_DURATION","inputVariants","slots","container","field","description","error","fieldBox","startContent","endContent","variants","variant","outline","filled","size","sm","md","lg","multiline","true","disabled","defaultVariants","AnimatedTextInput","createAnimatedComponent","Input","className","containerClassName","label","errorMessage","isRequired","interactiveContent","avoidKeyboard","keyboardMode","keyboardOffset","keyboardBottomInset","onFocus","onBlur","style","props","ref","focused","setFocused","invalid","startWidth","setStartWidth","endWidth","setEndWidth","placeholderColor","restColor","focusColor","errorColor","focus","value","duration","resting","active","idle","borderStyle","borderColor","handleFocus","event","handleBlur","handleStartLayout","nativeEvent","layout","width","handleEndLayout","iconColor","undefined","editable","accessibilityLabel","accessibilityState","paddingStart","paddingEnd","placeholderTextColor","body","children","isInvalid","isDisabled","onLayout","pointerEvents","accessibilityElementsHidden","importantForAccessibility","color","containerClasses","mode","offset","bottomInset","displayName"],"sourceRoot":"../../../../src","sources":["components/input/index.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,UAAU,EAAEC,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAwB,OAAO;AACpF,SACEC,SAAS,EACTC,IAAI,QAGC,cAAc;AACrB,OAAOC,QAAQ,IACbC,gBAAgB,EAChBC,gBAAgB,EAChBC,cAAc,EACdC,UAAU,QACL,yBAAyB;AAChC,SAASC,EAAE,QAA2B,mBAAmB;AACzD,SAASC,cAAc,QAAQ,SAAS;AAExC,SAASC,iBAAiB,QAAQ,sBAAa;AAC/C,SAASC,eAAe,QAAQ,sCAAmC;AACnE,SAASC,IAAI,EAAEC,YAAY,QAAQ,0BAAuB;AAC1D,SAASC,KAAK,QAAQ,mBAAU;;AAEhC;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA,EAAAC,QAAA,IAAAC,SAAA;AACA,MAAMC,cAAc,GAAG,GAAG;AAE1B,MAAMC,aAAa,GAAGd,EAAE,CAAC;EACvBe,KAAK,EAAE;IACLC,SAAS,EAAE,gBAAgB;IAC3B;AACJ;AACA;AACA;AACA;AACA;IACIC,KAAK,EAAE,sDAAsD;IAC7DC,WAAW,EAAE,+BAA+B;IAC5CC,KAAK,EAAE,0BAA0B;IACjC;AACJ;AACA;AACA;AACA;IACIC,QAAQ,EAAE,iBAAiB;IAC3BC,YAAY,EACV,iFAAiF;IACnFC,UAAU,EACR;EACJ,CAAC;EACDC,QAAQ,EAAE;IACRC,OAAO,EAAE;MACP;MACA;MACAC,OAAO,EAAE;QAAER,KAAK,EAAE;MAAgB,CAAC;MACnCS,MAAM,EAAE;QAAET,KAAK,EAAE;MAAW;IAC9B,CAAC;IACDU,IAAI,EAAE;MACJ;AACN;AACA;AACA;AACA;AACA;AACA;AACA;MACM;MACA;MACAC,EAAE,EAAE;QAAEX,KAAK,EAAE,uBAAuB;QAAEI,YAAY,EAAE,MAAM;QAAEC,UAAU,EAAE;MAAO,CAAC;MAChFO,EAAE,EAAE;QAAEZ,KAAK,EAAE,yBAAyB;QAAEI,YAAY,EAAE,QAAQ;QAAEC,UAAU,EAAE;MAAS,CAAC;MACtFQ,EAAE,EAAE;QAAEb,KAAK,EAAE,uBAAuB;QAAEI,YAAY,EAAE,MAAM;QAAEC,UAAU,EAAE;MAAO;IACjF,CAAC;IACDS,SAAS,EAAE;MACT;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACAC,IAAI,EAAE;QACJf,KAAK,EAAE,qCAAqC;QAC5CI,YAAY,EAAE,kBAAkB;QAChCC,UAAU,EAAE;MACd;IACF,CAAC;IACDW,QAAQ,EAAE;MACRD,IAAI,EAAE;QACJf,KAAK,EAAE,gBAAgB;QACvBI,YAAY,EAAE,gBAAgB;QAC9BC,UAAU,EAAE;MACd;IACF;EACF,CAAC;EACDY,eAAe,EAAE;IACfV,OAAO,EAAE,SAAS;IAClBG,IAAI,EAAE;EACR;AACF,CAAC,CAAC;
|
|
1
|
+
{"version":3,"names":["forwardRef","useCallback","useEffect","useState","TextInput","View","Animated","interpolateColor","useAnimatedStyle","useSharedValue","withTiming","tv","useCSSVariable","IconColorProvider","KeyboardAvoider","Text","textChildren","Label","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","FOCUS_DURATION","inputVariants","slots","container","field","description","error","fieldBox","startContent","endContent","variants","variant","outline","filled","size","sm","md","lg","multiline","true","disabled","defaultVariants","AnimatedTextInput","createAnimatedComponent","Input","className","containerClassName","label","errorMessage","isRequired","interactiveContent","avoidKeyboard","keyboardMode","keyboardOffset","keyboardBottomInset","onFocus","onBlur","style","props","ref","focused","setFocused","invalid","startWidth","setStartWidth","endWidth","setEndWidth","placeholderColor","restColor","focusColor","errorColor","focus","value","duration","resting","active","idle","borderStyle","borderColor","handleFocus","event","handleBlur","handleStartLayout","nativeEvent","layout","width","handleEndLayout","iconColor","undefined","editable","accessibilityLabel","accessibilityState","paddingStart","paddingEnd","placeholderTextColor","body","children","isInvalid","isDisabled","onLayout","pointerEvents","accessibilityElementsHidden","importantForAccessibility","color","containerClasses","mode","offset","bottomInset","displayName"],"sourceRoot":"../../../../src","sources":["components/input/index.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,519 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Pagination — moving through a result set one page at a time.
|
|
5
|
+
*
|
|
6
|
+
* The component owns the arithmetic and nothing else. Give it how many pages
|
|
7
|
+
* there are and which one you are on, and it works out which numbers to show,
|
|
8
|
+
* where the gaps fall, and which controls are dead at the ends; it never fetches
|
|
9
|
+
* and never slices, because the data is yours.
|
|
10
|
+
*
|
|
11
|
+
* ```tsx
|
|
12
|
+
* <Pagination count={12} page={page} onPageChange={setPage} />
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* Three presentations, because a phone is not a desktop:
|
|
16
|
+
*
|
|
17
|
+
* - `numbers` — the full run, with the middle folded into ellipses. Fits about
|
|
18
|
+
* seven targets across a phone, which is what `siblings` and `boundaries`
|
|
19
|
+
* are tuned for.
|
|
20
|
+
* - `compact` — the two arrows with `3 / 12` between them. Digits and a slash,
|
|
21
|
+
* so there is no sentence to translate.
|
|
22
|
+
* - `simple` — labelled Previous and Next, for a flow you walk rather than
|
|
23
|
+
* jump around in: a wizard, an article, a set of onboarding cards.
|
|
24
|
+
*
|
|
25
|
+
* Every target is at least 44pt in both axes, and the small size keeps that
|
|
26
|
+
* reach with `hitSlop` rather than by growing — the row gets denser, the
|
|
27
|
+
* fingers do not get smaller.
|
|
28
|
+
*
|
|
29
|
+
* An ellipsis is a button, not punctuation. A dead 44pt target in the middle of
|
|
30
|
+
* a row of live ones is a thing people tap and then think is broken, so tapping
|
|
31
|
+
* one jumps `pageJump` pages that way.
|
|
32
|
+
*
|
|
33
|
+
* Given children, the root becomes a row with them on the leading edge and the
|
|
34
|
+
* controls on the trailing one — which is where `Pagination.Status` goes:
|
|
35
|
+
*
|
|
36
|
+
* ```tsx
|
|
37
|
+
* <Pagination count={12} page={page} onPageChange={setPage} variant="compact">
|
|
38
|
+
* <Pagination.Status page={page} pageSize={20} total={240} />
|
|
39
|
+
* </Pagination>
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
import { createContext, forwardRef, useCallback, useContext, useMemo, useState } from 'react';
|
|
43
|
+
import { View } from 'react-native';
|
|
44
|
+
import { tv } from 'tailwind-variants';
|
|
45
|
+
import { useCSSVariable } from 'uniwind';
|
|
46
|
+
import { ChevronLeftIcon, ChevronRightIcon, EllipsisIcon } from "../../icons/index.js";
|
|
47
|
+
import { useDirection } from "../../hooks/use-direction.js";
|
|
48
|
+
import { AnimatedPressable } from "../../primitives/animated-pressable.js";
|
|
49
|
+
import { Text, textChildren } from "../../primitives/text.js";
|
|
50
|
+
import { cn } from "../../utils/cn.js";
|
|
51
|
+
import { selectionTick } from "../../utils/haptics.js";
|
|
52
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
53
|
+
/**
|
|
54
|
+
* What the small size gives back as padding. 44pt is the smallest target a
|
|
55
|
+
* finger reliably hits, and the row is allowed to get tighter than that only
|
|
56
|
+
* because the reach is restored outside the paint.
|
|
57
|
+
*/
|
|
58
|
+
const SMALL_HIT_SLOP = {
|
|
59
|
+
top: 4,
|
|
60
|
+
bottom: 4,
|
|
61
|
+
left: 4,
|
|
62
|
+
right: 4
|
|
63
|
+
};
|
|
64
|
+
const paginationVariants = tv({
|
|
65
|
+
slots: {
|
|
66
|
+
root: 'flex-row items-center',
|
|
67
|
+
list: 'flex-row items-center',
|
|
68
|
+
item: 'items-center justify-center rounded-lg',
|
|
69
|
+
itemLabel: 'font-medium tabular-nums',
|
|
70
|
+
ellipsis: 'items-center justify-center',
|
|
71
|
+
status: 'text-muted-foreground tabular-nums',
|
|
72
|
+
summary: 'text-muted-foreground tabular-nums'
|
|
73
|
+
},
|
|
74
|
+
variants: {
|
|
75
|
+
size: {
|
|
76
|
+
default: {
|
|
77
|
+
list: 'gap-1',
|
|
78
|
+
item: 'h-11 min-w-11 px-1',
|
|
79
|
+
itemLabel: 'text-sm',
|
|
80
|
+
ellipsis: 'h-11 w-11',
|
|
81
|
+
status: 'text-sm',
|
|
82
|
+
summary: 'text-sm'
|
|
83
|
+
},
|
|
84
|
+
sm: {
|
|
85
|
+
list: 'gap-0.5',
|
|
86
|
+
item: 'h-9 min-w-9 px-1',
|
|
87
|
+
itemLabel: 'text-xs',
|
|
88
|
+
ellipsis: 'h-9 w-9',
|
|
89
|
+
status: 'text-xs',
|
|
90
|
+
summary: 'text-xs'
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
/** Whether the item is the page you are on. */
|
|
94
|
+
current: {
|
|
95
|
+
true: {
|
|
96
|
+
item: 'bg-primary',
|
|
97
|
+
itemLabel: 'text-primary-foreground'
|
|
98
|
+
},
|
|
99
|
+
false: {
|
|
100
|
+
itemLabel: 'text-foreground'
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
disabled: {
|
|
104
|
+
true: {
|
|
105
|
+
item: 'opacity-[0.4]'
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
defaultVariants: {
|
|
110
|
+
size: 'default',
|
|
111
|
+
current: false
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
const iconSize = {
|
|
115
|
+
default: 20,
|
|
116
|
+
sm: 16
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* The state every part reads. A `Pagination.Previous` dropped into a row of
|
|
121
|
+
* your own still knows which page it is on and whether it is at the start,
|
|
122
|
+
* because that answer lives here rather than in the props it was given.
|
|
123
|
+
*/
|
|
124
|
+
|
|
125
|
+
const PaginationContext = /*#__PURE__*/createContext(null);
|
|
126
|
+
function usePagination(part) {
|
|
127
|
+
const context = useContext(PaginationContext);
|
|
128
|
+
if (!context) {
|
|
129
|
+
throw new Error(`${part} must be used inside <Pagination>.`);
|
|
130
|
+
}
|
|
131
|
+
return context;
|
|
132
|
+
}
|
|
133
|
+
const range = (start, end) => end < start ? [] : Array.from({
|
|
134
|
+
length: end - start + 1
|
|
135
|
+
}, (_, i) => start + i);
|
|
136
|
+
/**
|
|
137
|
+
* Which numbers to draw, and where the gaps go.
|
|
138
|
+
*
|
|
139
|
+
* The run is a fixed width rather than a sliding window: the same number of
|
|
140
|
+
* targets whichever page you are on, so the row does not reflow under the
|
|
141
|
+
* finger as you step through it and the arrow you were aiming at stays put.
|
|
142
|
+
* `boundaries` pins the ends, `siblings` pads the middle, and a gap of exactly
|
|
143
|
+
* one page is drawn as that page instead of an ellipsis — a `…` that hides a
|
|
144
|
+
* single number is longer than the number.
|
|
145
|
+
*
|
|
146
|
+
* Exported because a caller sometimes needs the same run for a control of their
|
|
147
|
+
* own, and two implementations of this would drift.
|
|
148
|
+
*/
|
|
149
|
+
export function paginationRange({
|
|
150
|
+
count,
|
|
151
|
+
page,
|
|
152
|
+
siblings = 1,
|
|
153
|
+
boundaries = 1
|
|
154
|
+
}) {
|
|
155
|
+
const startPages = range(1, Math.min(boundaries, count));
|
|
156
|
+
const endPages = range(Math.max(count - boundaries + 1, boundaries + 1), count);
|
|
157
|
+
const siblingsStart = Math.max(Math.min(page - siblings, count - boundaries - siblings * 2 - 1), boundaries + 2);
|
|
158
|
+
const siblingsEnd = Math.min(Math.max(page + siblings, boundaries + siblings * 2 + 2), endPages.length > 0 ? endPages[0] - 2 : count - 1);
|
|
159
|
+
return [...startPages, ...(siblingsStart > boundaries + 2 ? ['start-ellipsis'] : boundaries + 1 < count - boundaries ? [boundaries + 1] : []), ...range(siblingsStart, siblingsEnd), ...(siblingsEnd < count - boundaries - 1 ? ['end-ellipsis'] : count - boundaries > boundaries ? [count - boundaries] : []), ...endPages];
|
|
160
|
+
}
|
|
161
|
+
const PaginationRoot = /*#__PURE__*/forwardRef(({
|
|
162
|
+
className,
|
|
163
|
+
count,
|
|
164
|
+
page: controlledPage,
|
|
165
|
+
defaultPage = 1,
|
|
166
|
+
onPageChange,
|
|
167
|
+
variant = 'numbers',
|
|
168
|
+
size = 'default',
|
|
169
|
+
siblings = 1,
|
|
170
|
+
boundaries = 1,
|
|
171
|
+
controls = true,
|
|
172
|
+
pageJump = 5,
|
|
173
|
+
disabled = false,
|
|
174
|
+
accessibilityLabel = 'Pagination',
|
|
175
|
+
children,
|
|
176
|
+
...props
|
|
177
|
+
}, ref) => {
|
|
178
|
+
const [internalPage, setInternalPage] = useState(defaultPage);
|
|
179
|
+
const isControlled = controlledPage !== undefined;
|
|
180
|
+
// Clamped on the way out as well as on the way in: `count` can shrink under
|
|
181
|
+
// a controlled page — a filter narrowing the result set — and a page number
|
|
182
|
+
// past the end would light nothing and disable both arrows at once.
|
|
183
|
+
const page = Math.min(Math.max(isControlled ? controlledPage : internalPage, 1), count);
|
|
184
|
+
const goTo = useCallback(next => {
|
|
185
|
+
const clamped = Math.min(Math.max(next, 1), count);
|
|
186
|
+
if (clamped === page || disabled) return;
|
|
187
|
+
// On the frame of the press rather than after the fetch: the tick is
|
|
188
|
+
// what ties the feeling to the tap, and the rows arrive whenever they
|
|
189
|
+
// arrive.
|
|
190
|
+
selectionTick();
|
|
191
|
+
if (!isControlled) setInternalPage(clamped);
|
|
192
|
+
onPageChange?.(clamped);
|
|
193
|
+
}, [count, page, disabled, isControlled, onPageChange]);
|
|
194
|
+
const context = useMemo(() => ({
|
|
195
|
+
page,
|
|
196
|
+
count,
|
|
197
|
+
size,
|
|
198
|
+
disabled,
|
|
199
|
+
goTo
|
|
200
|
+
}), [page, count, size, disabled, goTo]);
|
|
201
|
+
const items = useMemo(() => variant === 'numbers' ? paginationRange({
|
|
202
|
+
count,
|
|
203
|
+
page,
|
|
204
|
+
siblings,
|
|
205
|
+
boundaries
|
|
206
|
+
}) : [], [variant, count, page, siblings, boundaries]);
|
|
207
|
+
const {
|
|
208
|
+
root,
|
|
209
|
+
list
|
|
210
|
+
} = paginationVariants({
|
|
211
|
+
size
|
|
212
|
+
});
|
|
213
|
+
return /*#__PURE__*/_jsx(PaginationContext.Provider, {
|
|
214
|
+
value: context,
|
|
215
|
+
children: /*#__PURE__*/_jsxs(View, {
|
|
216
|
+
ref: ref,
|
|
217
|
+
role: "navigation",
|
|
218
|
+
accessibilityLabel: accessibilityLabel,
|
|
219
|
+
className: root({
|
|
220
|
+
// With nothing on the leading edge the controls are the whole row
|
|
221
|
+
// and centre in it; with something there they part to the two ends,
|
|
222
|
+
// which is the shape a table footer wants.
|
|
223
|
+
className: cn(children ? 'justify-between gap-3' : 'justify-center', className)
|
|
224
|
+
}),
|
|
225
|
+
...props,
|
|
226
|
+
children: [textChildren(children, text => /*#__PURE__*/_jsx(PaginationStatus, {
|
|
227
|
+
children: text
|
|
228
|
+
})), /*#__PURE__*/_jsxs(View, {
|
|
229
|
+
className: list(),
|
|
230
|
+
children: [controls ? /*#__PURE__*/_jsx(PaginationPrevious, {
|
|
231
|
+
label: variant === 'simple'
|
|
232
|
+
}) : null, variant === 'numbers' ? items.map((item, index) => typeof item === 'number' ? /*#__PURE__*/_jsx(PaginationItem, {
|
|
233
|
+
page: item
|
|
234
|
+
}, item) : /*#__PURE__*/_jsx(PaginationEllipsis, {
|
|
235
|
+
direction: item === 'start-ellipsis' ? -1 : 1,
|
|
236
|
+
jump: pageJump
|
|
237
|
+
}, `${item}-${index}`)) : null, variant === 'compact' ? /*#__PURE__*/_jsx(PaginationSummary, {}) : null, controls ? /*#__PURE__*/_jsx(PaginationNext, {
|
|
238
|
+
label: variant === 'simple'
|
|
239
|
+
}) : null]
|
|
240
|
+
})]
|
|
241
|
+
})
|
|
242
|
+
});
|
|
243
|
+
});
|
|
244
|
+
PaginationRoot.displayName = 'Pagination';
|
|
245
|
+
/**
|
|
246
|
+
* One numbered target. Announced as a selected button when it is the page you
|
|
247
|
+
* are on, so the current page is spoken as state rather than only painted.
|
|
248
|
+
*/
|
|
249
|
+
const PaginationItem = /*#__PURE__*/forwardRef(({
|
|
250
|
+
className,
|
|
251
|
+
labelClassName,
|
|
252
|
+
page,
|
|
253
|
+
children,
|
|
254
|
+
...props
|
|
255
|
+
}, ref) => {
|
|
256
|
+
const {
|
|
257
|
+
page: current,
|
|
258
|
+
size,
|
|
259
|
+
disabled,
|
|
260
|
+
goTo
|
|
261
|
+
} = usePagination('Pagination.Item');
|
|
262
|
+
const isCurrent = page === current;
|
|
263
|
+
const {
|
|
264
|
+
item,
|
|
265
|
+
itemLabel
|
|
266
|
+
} = paginationVariants({
|
|
267
|
+
size,
|
|
268
|
+
current: isCurrent,
|
|
269
|
+
disabled
|
|
270
|
+
});
|
|
271
|
+
return /*#__PURE__*/_jsx(AnimatedPressable, {
|
|
272
|
+
ref: ref,
|
|
273
|
+
accessibilityRole: "button",
|
|
274
|
+
accessibilityLabel: `Page ${page}`,
|
|
275
|
+
accessibilityState: {
|
|
276
|
+
selected: isCurrent,
|
|
277
|
+
disabled
|
|
278
|
+
},
|
|
279
|
+
disabled: disabled,
|
|
280
|
+
hitSlop: size === 'sm' ? SMALL_HIT_SLOP : undefined,
|
|
281
|
+
onPress: () => goTo(page),
|
|
282
|
+
className: item({
|
|
283
|
+
className
|
|
284
|
+
}),
|
|
285
|
+
...props,
|
|
286
|
+
children: textChildren(children ?? String(page), text => /*#__PURE__*/_jsx(Text, {
|
|
287
|
+
className: itemLabel({
|
|
288
|
+
className: labelClassName
|
|
289
|
+
}),
|
|
290
|
+
children: text
|
|
291
|
+
}))
|
|
292
|
+
});
|
|
293
|
+
});
|
|
294
|
+
PaginationItem.displayName = 'Pagination.Item';
|
|
295
|
+
/**
|
|
296
|
+
* The two arrows, which are the same button pointed the other way.
|
|
297
|
+
*
|
|
298
|
+
* Which glyph is "back" is a question about the reading direction, not about
|
|
299
|
+
* the component: in a right-to-left layout the previous page is to the right.
|
|
300
|
+
* Yoga mirrors the row on its own; the arrowhead inside it has to be chosen.
|
|
301
|
+
*/
|
|
302
|
+
function useArrow(step, part) {
|
|
303
|
+
const {
|
|
304
|
+
page,
|
|
305
|
+
count,
|
|
306
|
+
size,
|
|
307
|
+
disabled,
|
|
308
|
+
goTo
|
|
309
|
+
} = usePagination(part);
|
|
310
|
+
const rtl = useDirection() === 'rtl';
|
|
311
|
+
const color = useCSSVariable('--color-foreground');
|
|
312
|
+
const target = page + step;
|
|
313
|
+
const spent = disabled || target < 1 || target > count;
|
|
314
|
+
const Glyph = step === -1 === rtl ? ChevronRightIcon : ChevronLeftIcon;
|
|
315
|
+
return {
|
|
316
|
+
Glyph,
|
|
317
|
+
size,
|
|
318
|
+
spent,
|
|
319
|
+
color: typeof color === 'string' ? color : '#0a0a0a',
|
|
320
|
+
press: () => goTo(target)
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
function PaginationArrow({
|
|
324
|
+
step,
|
|
325
|
+
part,
|
|
326
|
+
word,
|
|
327
|
+
className,
|
|
328
|
+
label,
|
|
329
|
+
...props
|
|
330
|
+
}) {
|
|
331
|
+
const {
|
|
332
|
+
Glyph,
|
|
333
|
+
size,
|
|
334
|
+
spent,
|
|
335
|
+
color,
|
|
336
|
+
press
|
|
337
|
+
} = useArrow(step, part);
|
|
338
|
+
const {
|
|
339
|
+
item,
|
|
340
|
+
itemLabel
|
|
341
|
+
} = paginationVariants({
|
|
342
|
+
size,
|
|
343
|
+
disabled: spent
|
|
344
|
+
});
|
|
345
|
+
return /*#__PURE__*/_jsxs(AnimatedPressable, {
|
|
346
|
+
accessibilityRole: "button",
|
|
347
|
+
accessibilityLabel: word,
|
|
348
|
+
accessibilityState: {
|
|
349
|
+
disabled: spent
|
|
350
|
+
},
|
|
351
|
+
disabled: spent,
|
|
352
|
+
hitSlop: size === 'sm' ? SMALL_HIT_SLOP : undefined,
|
|
353
|
+
onPress: press,
|
|
354
|
+
className: item({
|
|
355
|
+
className: cn('flex-row gap-1', label && (size === 'sm' ? 'px-2' : 'px-3'), className)
|
|
356
|
+
}),
|
|
357
|
+
...props,
|
|
358
|
+
children: [step === -1 ? /*#__PURE__*/_jsx(Glyph, {
|
|
359
|
+
size: iconSize[size],
|
|
360
|
+
color: color
|
|
361
|
+
}) : null, label ? /*#__PURE__*/_jsx(Text, {
|
|
362
|
+
className: itemLabel(),
|
|
363
|
+
children: word
|
|
364
|
+
}) : null, step === 1 ? /*#__PURE__*/_jsx(Glyph, {
|
|
365
|
+
size: iconSize[size],
|
|
366
|
+
color: color
|
|
367
|
+
}) : null]
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
/** Back one page. Dead on the first page rather than looping to the last. */
|
|
372
|
+
const PaginationPrevious = ({
|
|
373
|
+
...props
|
|
374
|
+
}) => /*#__PURE__*/_jsx(PaginationArrow, {
|
|
375
|
+
step: -1,
|
|
376
|
+
part: "Pagination.Previous",
|
|
377
|
+
word: "Previous",
|
|
378
|
+
...props
|
|
379
|
+
});
|
|
380
|
+
PaginationPrevious.displayName = 'Pagination.Previous';
|
|
381
|
+
|
|
382
|
+
/** Forward one page. Dead on the last page rather than looping to the first. */
|
|
383
|
+
const PaginationNext = ({
|
|
384
|
+
...props
|
|
385
|
+
}) => /*#__PURE__*/_jsx(PaginationArrow, {
|
|
386
|
+
step: 1,
|
|
387
|
+
part: "Pagination.Next",
|
|
388
|
+
word: "Next",
|
|
389
|
+
...props
|
|
390
|
+
});
|
|
391
|
+
PaginationNext.displayName = 'Pagination.Next';
|
|
392
|
+
/**
|
|
393
|
+
* The gap in the run, and a way across it. Tapping jumps `jump` pages towards
|
|
394
|
+
* the end the gap is on — which is why the two ellipses are told apart: a jump
|
|
395
|
+
* that always went forwards would strand anyone reading the row right to left.
|
|
396
|
+
*/
|
|
397
|
+
const PaginationEllipsis = /*#__PURE__*/forwardRef(({
|
|
398
|
+
className,
|
|
399
|
+
direction = 1,
|
|
400
|
+
jump = 5,
|
|
401
|
+
...props
|
|
402
|
+
}, ref) => {
|
|
403
|
+
const {
|
|
404
|
+
page,
|
|
405
|
+
size,
|
|
406
|
+
disabled,
|
|
407
|
+
goTo
|
|
408
|
+
} = usePagination('Pagination.Ellipsis');
|
|
409
|
+
const color = useCSSVariable('--color-muted-foreground');
|
|
410
|
+
const {
|
|
411
|
+
ellipsis
|
|
412
|
+
} = paginationVariants({
|
|
413
|
+
size
|
|
414
|
+
});
|
|
415
|
+
return /*#__PURE__*/_jsx(AnimatedPressable, {
|
|
416
|
+
ref: ref,
|
|
417
|
+
accessibilityRole: "button",
|
|
418
|
+
accessibilityLabel: direction === -1 ? `Back ${jump} pages` : `Forward ${jump} pages`,
|
|
419
|
+
accessibilityState: {
|
|
420
|
+
disabled
|
|
421
|
+
},
|
|
422
|
+
disabled: disabled,
|
|
423
|
+
hitSlop: size === 'sm' ? SMALL_HIT_SLOP : undefined,
|
|
424
|
+
onPress: () => goTo(page + direction * jump),
|
|
425
|
+
className: ellipsis({
|
|
426
|
+
className
|
|
427
|
+
}),
|
|
428
|
+
...props,
|
|
429
|
+
children: /*#__PURE__*/_jsx(EllipsisIcon, {
|
|
430
|
+
size: iconSize[size],
|
|
431
|
+
color: typeof color === 'string' ? color : '#737373'
|
|
432
|
+
})
|
|
433
|
+
});
|
|
434
|
+
});
|
|
435
|
+
PaginationEllipsis.displayName = 'Pagination.Ellipsis';
|
|
436
|
+
/**
|
|
437
|
+
* `3 / 12` — where you are, in the space two arrows leave between them.
|
|
438
|
+
*
|
|
439
|
+
* Digits and a slash rather than "Page 3 of 12", because a phone has no room
|
|
440
|
+
* for the sentence and the sentence would need translating. `Pagination.Status`
|
|
441
|
+
* is the place for words.
|
|
442
|
+
*/
|
|
443
|
+
const PaginationSummary = /*#__PURE__*/forwardRef(({
|
|
444
|
+
className,
|
|
445
|
+
...props
|
|
446
|
+
}, ref) => {
|
|
447
|
+
const {
|
|
448
|
+
page,
|
|
449
|
+
count,
|
|
450
|
+
size
|
|
451
|
+
} = usePagination('Pagination.Summary');
|
|
452
|
+
const {
|
|
453
|
+
summary
|
|
454
|
+
} = paginationVariants({
|
|
455
|
+
size
|
|
456
|
+
});
|
|
457
|
+
return /*#__PURE__*/_jsxs(Text, {
|
|
458
|
+
ref: ref,
|
|
459
|
+
accessibilityLabel: `Page ${page} of ${count}`,
|
|
460
|
+
className: summary({
|
|
461
|
+
className: cn('px-2', className)
|
|
462
|
+
}),
|
|
463
|
+
...props,
|
|
464
|
+
children: [page, " / ", count]
|
|
465
|
+
});
|
|
466
|
+
});
|
|
467
|
+
PaginationSummary.displayName = 'Pagination.Summary';
|
|
468
|
+
/**
|
|
469
|
+
* The line that says how much of the set you are looking at — `1–20 of 240`.
|
|
470
|
+
*
|
|
471
|
+
* Worth having beside a table because a page number alone does not answer the
|
|
472
|
+
* question people actually have, which is how much is left. Given `children`
|
|
473
|
+
* it renders those instead, for a set whose size is not known yet.
|
|
474
|
+
*/
|
|
475
|
+
const PaginationStatus = /*#__PURE__*/forwardRef(({
|
|
476
|
+
className,
|
|
477
|
+
page: ownPage,
|
|
478
|
+
pageSize,
|
|
479
|
+
total,
|
|
480
|
+
children,
|
|
481
|
+
...props
|
|
482
|
+
}, ref) => {
|
|
483
|
+
const context = useContext(PaginationContext);
|
|
484
|
+
const size = context?.size ?? 'default';
|
|
485
|
+
const page = ownPage ?? context?.page ?? 1;
|
|
486
|
+
const {
|
|
487
|
+
status
|
|
488
|
+
} = paginationVariants({
|
|
489
|
+
size
|
|
490
|
+
});
|
|
491
|
+
const span = useMemo(() => {
|
|
492
|
+
if (children !== undefined) return null;
|
|
493
|
+
if (pageSize === undefined || total === undefined) return null;
|
|
494
|
+
if (total <= 0) return 'None';
|
|
495
|
+
const from = (page - 1) * pageSize + 1;
|
|
496
|
+
// The last page is nearly always short; counting a full one past the end
|
|
497
|
+
// is the classic off-by-a-page-size.
|
|
498
|
+
const to = Math.min(page * pageSize, total);
|
|
499
|
+
return `${from}–${to} of ${total}`;
|
|
500
|
+
}, [children, page, pageSize, total]);
|
|
501
|
+
return /*#__PURE__*/_jsx(Text, {
|
|
502
|
+
ref: ref,
|
|
503
|
+
className: status({
|
|
504
|
+
className
|
|
505
|
+
}),
|
|
506
|
+
...props,
|
|
507
|
+
children: span ?? textChildren(children)
|
|
508
|
+
});
|
|
509
|
+
});
|
|
510
|
+
PaginationStatus.displayName = 'Pagination.Status';
|
|
511
|
+
export const Pagination = Object.assign(PaginationRoot, {
|
|
512
|
+
Item: PaginationItem,
|
|
513
|
+
Previous: PaginationPrevious,
|
|
514
|
+
Next: PaginationNext,
|
|
515
|
+
Ellipsis: PaginationEllipsis,
|
|
516
|
+
Summary: PaginationSummary,
|
|
517
|
+
Status: PaginationStatus
|
|
518
|
+
});
|
|
519
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createContext","forwardRef","useCallback","useContext","useMemo","useState","View","tv","useCSSVariable","ChevronLeftIcon","ChevronRightIcon","EllipsisIcon","useDirection","AnimatedPressable","Text","textChildren","cn","selectionTick","jsx","_jsx","jsxs","_jsxs","SMALL_HIT_SLOP","top","bottom","left","right","paginationVariants","slots","root","list","item","itemLabel","ellipsis","status","summary","variants","size","default","sm","current","true","false","disabled","defaultVariants","iconSize","PaginationContext","usePagination","part","context","Error","range","start","end","Array","from","length","_","i","paginationRange","count","page","siblings","boundaries","startPages","Math","min","endPages","max","siblingsStart","siblingsEnd","PaginationRoot","className","controlledPage","defaultPage","onPageChange","variant","controls","pageJump","accessibilityLabel","children","props","ref","internalPage","setInternalPage","isControlled","undefined","goTo","next","clamped","items","Provider","value","role","text","PaginationStatus","PaginationPrevious","label","map","index","PaginationItem","PaginationEllipsis","direction","jump","PaginationSummary","PaginationNext","displayName","labelClassName","isCurrent","accessibilityRole","accessibilityState","selected","hitSlop","onPress","String","useArrow","step","rtl","color","target","spent","Glyph","press","PaginationArrow","word","ownPage","pageSize","total","span","to","Pagination","Object","assign","Item","Previous","Next","Ellipsis","Summary","Status"],"sourceRoot":"../../../../src","sources":["components/pagination/index.tsx"],"mappings":"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","ignoreList":[]}
|