@gunkin/uiify 0.0.17-alpha → 0.0.20-alpha
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/agents/components.md +1 -1
- package/agents/index.md +1 -0
- package/agents/reference/components/breadcrumb.md +11 -1
- package/agents/reference/components/button.md +4 -4
- package/agents/reference/components/candle-chart.md +20 -1
- package/agents/reference/components/carousel.md +3 -2
- package/agents/reference/components/combobox.md +2 -1
- package/agents/reference/components/drawer.md +8 -1
- package/agents/reference/components/dropdown-menu.md +1 -1
- package/agents/reference/components/file-upload.md +12 -1
- package/agents/reference/components/line-chart.md +1 -0
- package/agents/reference/components/modal.md +8 -1
- package/agents/reference/components/number-field.md +14 -3
- package/agents/reference/components/pagination.md +22 -1
- package/agents/reference/components/slider.md +9 -1
- package/agents/reference/components/spinner.md +8 -1
- package/agents/reference/components/toast.md +14 -1
- package/dist/components/behavior.css +9 -9
- package/dist/components/behavior.css.map +1 -1
- package/dist/components/breadcrumb/Breadcrumb.d.ts.map +1 -1
- package/dist/components/breadcrumb/Breadcrumb.js +21 -4
- package/dist/components/breadcrumb/Breadcrumb.js.map +1 -1
- package/dist/components/breadcrumb/index.d.ts +1 -1
- package/dist/components/breadcrumb/index.d.ts.map +1 -1
- package/dist/components/breadcrumb/index.js.map +1 -1
- package/dist/components/breadcrumb/types.d.ts +7 -0
- package/dist/components/breadcrumb/types.d.ts.map +1 -1
- package/dist/components/button/types.d.ts +4 -0
- package/dist/components/button/types.d.ts.map +1 -1
- package/dist/components/candle-chart/CandleChart.d.ts +1 -1
- package/dist/components/candle-chart/CandleChart.d.ts.map +1 -1
- package/dist/components/candle-chart/CandleChart.js +81 -46
- package/dist/components/candle-chart/CandleChart.js.map +1 -1
- package/dist/components/candle-chart/client/CandleChartClient.d.ts.map +1 -1
- package/dist/components/candle-chart/client/CandleChartClient.js +5 -0
- package/dist/components/candle-chart/client/CandleChartClient.js.map +1 -1
- package/dist/components/candle-chart/index.d.ts +1 -1
- package/dist/components/candle-chart/index.d.ts.map +1 -1
- package/dist/components/candle-chart/index.js.map +1 -1
- package/dist/components/candle-chart/types.d.ts +17 -0
- package/dist/components/candle-chart/types.d.ts.map +1 -1
- package/dist/components/carousel/CarouselMarkup.d.ts.map +1 -1
- package/dist/components/carousel/CarouselMarkup.js +20 -3
- package/dist/components/carousel/CarouselMarkup.js.map +1 -1
- package/dist/components/carousel/carousel-markup.js +2 -2
- package/dist/components/carousel/carousel-markup.js.map +1 -1
- package/dist/components/carousel/types.d.ts +3 -2
- package/dist/components/carousel/types.d.ts.map +1 -1
- package/dist/components/combobox/Combobox.d.ts.map +1 -1
- package/dist/components/combobox/Combobox.js +37 -23
- package/dist/components/combobox/Combobox.js.map +1 -1
- package/dist/components/combobox/combobox-store.d.ts.map +1 -1
- package/dist/components/combobox/combobox-store.js +5 -2
- package/dist/components/combobox/combobox-store.js.map +1 -1
- package/dist/components/combobox/types.d.ts +2 -3
- package/dist/components/combobox/types.d.ts.map +1 -1
- package/dist/components/context-menu/ContextMenu.d.ts.map +1 -1
- package/dist/components/context-menu/ContextMenu.js +25 -5
- package/dist/components/context-menu/ContextMenu.js.map +1 -1
- package/dist/components/drawer/DrawerNative.d.ts +1 -1
- package/dist/components/drawer/DrawerNative.d.ts.map +1 -1
- package/dist/components/drawer/DrawerNative.js +5 -2
- package/dist/components/drawer/DrawerNative.js.map +1 -1
- package/dist/components/drawer/index.d.ts +1 -1
- package/dist/components/drawer/index.d.ts.map +1 -1
- package/dist/components/drawer/index.js.map +1 -1
- package/dist/components/drawer/types.d.ts +4 -0
- package/dist/components/drawer/types.d.ts.map +1 -1
- package/dist/components/dropdown-menu/DropdownMenu.d.ts.map +1 -1
- package/dist/components/dropdown-menu/DropdownMenu.js +31 -15
- package/dist/components/dropdown-menu/DropdownMenu.js.map +1 -1
- package/dist/components/dropdown-menu/DropdownMenuBar.d.ts.map +1 -1
- package/dist/components/dropdown-menu/DropdownMenuBar.js +7 -5
- package/dist/components/dropdown-menu/DropdownMenuBar.js.map +1 -1
- package/dist/components/dropdown-menu/types.d.ts +1 -1
- package/dist/components/dropdown-menu/types.d.ts.map +1 -1
- package/dist/components/file-upload/FileUpload.d.ts.map +1 -1
- package/dist/components/file-upload/FileUpload.js +11 -4
- package/dist/components/file-upload/FileUpload.js.map +1 -1
- package/dist/components/file-upload/FileUploadRoot.d.ts +1 -1
- package/dist/components/file-upload/FileUploadRoot.d.ts.map +1 -1
- package/dist/components/file-upload/FileUploadRoot.js +9 -0
- package/dist/components/file-upload/FileUploadRoot.js.map +1 -1
- package/dist/components/file-upload/index.d.ts +1 -1
- package/dist/components/file-upload/index.d.ts.map +1 -1
- package/dist/components/file-upload/index.js.map +1 -1
- package/dist/components/file-upload/types.d.ts +8 -0
- package/dist/components/file-upload/types.d.ts.map +1 -1
- package/dist/components/line-chart/LineChart.d.ts.map +1 -1
- package/dist/components/line-chart/LineChart.js +3 -2
- package/dist/components/line-chart/LineChart.js.map +1 -1
- package/dist/components/line-chart/line-chart-geometry.d.ts +2 -2
- package/dist/components/line-chart/line-chart-geometry.d.ts.map +1 -1
- package/dist/components/line-chart/line-chart-geometry.js +6 -6
- package/dist/components/line-chart/line-chart-geometry.js.map +1 -1
- package/dist/components/line-chart/types.d.ts +2 -0
- package/dist/components/line-chart/types.d.ts.map +1 -1
- package/dist/components/modal/Modal.d.ts +1 -1
- package/dist/components/modal/Modal.d.ts.map +1 -1
- package/dist/components/modal/Modal.js +5 -2
- package/dist/components/modal/Modal.js.map +1 -1
- package/dist/components/modal/index.d.ts +1 -1
- package/dist/components/modal/index.d.ts.map +1 -1
- package/dist/components/modal/index.js.map +1 -1
- package/dist/components/modal/types.d.ts +4 -0
- package/dist/components/modal/types.d.ts.map +1 -1
- package/dist/components/number-field/NumberField.d.ts +1 -1
- package/dist/components/number-field/NumberField.d.ts.map +1 -1
- package/dist/components/number-field/NumberField.js +25 -5
- package/dist/components/number-field/NumberField.js.map +1 -1
- package/dist/components/number-field/format.d.ts +1 -1
- package/dist/components/number-field/format.d.ts.map +1 -1
- package/dist/components/number-field/format.js +32 -7
- package/dist/components/number-field/format.js.map +1 -1
- package/dist/components/number-field/index.d.ts +1 -1
- package/dist/components/number-field/index.d.ts.map +1 -1
- package/dist/components/number-field/index.js.map +1 -1
- package/dist/components/number-field/types.d.ts +11 -2
- package/dist/components/number-field/types.d.ts.map +1 -1
- package/dist/components/otp-input/OtpInput.d.ts.map +1 -1
- package/dist/components/otp-input/OtpInput.js +2 -0
- package/dist/components/otp-input/OtpInput.js.map +1 -1
- package/dist/components/pagination/Pagination.d.ts.map +1 -1
- package/dist/components/pagination/Pagination.js +93 -29
- package/dist/components/pagination/Pagination.js.map +1 -1
- package/dist/components/pagination/PaginationShell.d.ts +2 -1
- package/dist/components/pagination/PaginationShell.d.ts.map +1 -1
- package/dist/components/pagination/PaginationShell.js +44 -9
- package/dist/components/pagination/PaginationShell.js.map +1 -1
- package/dist/components/pagination/index.d.ts +1 -1
- package/dist/components/pagination/index.d.ts.map +1 -1
- package/dist/components/pagination/index.js.map +1 -1
- package/dist/components/pagination/types.d.ts +18 -0
- package/dist/components/pagination/types.d.ts.map +1 -1
- package/dist/components/slider/client/SliderClient.d.ts.map +1 -1
- package/dist/components/slider/client/SliderClient.js +11 -2
- package/dist/components/slider/client/SliderClient.js.map +1 -1
- package/dist/components/slider/index.d.ts +1 -1
- package/dist/components/slider/index.d.ts.map +1 -1
- package/dist/components/slider/index.js.map +1 -1
- package/dist/components/slider/types.d.ts +5 -0
- package/dist/components/slider/types.d.ts.map +1 -1
- package/dist/components/spinner/Spinner.d.ts.map +1 -1
- package/dist/components/spinner/Spinner.js +6 -3
- package/dist/components/spinner/Spinner.js.map +1 -1
- package/dist/components/spinner/index.d.ts +1 -1
- package/dist/components/spinner/index.d.ts.map +1 -1
- package/dist/components/spinner/index.js.map +1 -1
- package/dist/components/spinner/types.d.ts +4 -0
- package/dist/components/spinner/types.d.ts.map +1 -1
- package/dist/components/tags-input/TagsInput.d.ts.map +1 -1
- package/dist/components/tags-input/TagsInput.js +2 -0
- package/dist/components/tags-input/TagsInput.js.map +1 -1
- package/dist/components/toast/Toast.d.ts +1 -1
- package/dist/components/toast/Toast.d.ts.map +1 -1
- package/dist/components/toast/Toast.js +33 -29
- package/dist/components/toast/Toast.js.map +1 -1
- package/dist/components/toast/ToastElements.d.ts.map +1 -1
- package/dist/components/toast/ToastElements.js +24 -12
- package/dist/components/toast/ToastElements.js.map +1 -1
- package/dist/components/toast/index.d.ts +1 -1
- package/dist/components/toast/index.d.ts.map +1 -1
- package/dist/components/toast/index.js.map +1 -1
- package/dist/components/toast/types.d.ts +10 -0
- package/dist/components/toast/types.d.ts.map +1 -1
- package/dist/components/toolbar/Toolbar.d.ts +2 -2
- package/dist/components/toolbar/Toolbar.d.ts.map +1 -1
- package/dist/components/toolbar/Toolbar.js +8 -4
- package/dist/components/toolbar/Toolbar.js.map +1 -1
- package/dist/core/direction.d.ts +2 -0
- package/dist/core/direction.d.ts.map +1 -1
- package/dist/core/direction.js +8 -3
- package/dist/core/direction.js.map +1 -1
- package/dist/core/dismissable-layer-registry.d.ts.map +1 -1
- package/dist/core/dismissable-layer-registry.js +3 -1
- package/dist/core/dismissable-layer-registry.js.map +1 -1
- package/dist/core/format-label.d.ts +2 -0
- package/dist/core/format-label.d.ts.map +1 -0
- package/dist/core/format-label.js +13 -0
- package/dist/core/format-label.js.map +1 -0
- package/dist/core/ime.d.ts +16 -0
- package/dist/core/ime.d.ts.map +1 -0
- package/dist/core/ime.js +7 -0
- package/dist/core/ime.js.map +1 -0
- package/dist/core/index.d.ts +3 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +3 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/roving-focus-store.d.ts +3 -2
- package/dist/core/roving-focus-store.d.ts.map +1 -1
- package/dist/core/roving-focus-store.js +5 -3
- package/dist/core/roving-focus-store.js.map +1 -1
- package/dist/core/roving-focus.d.ts.map +1 -1
- package/dist/core/roving-focus.js +10 -5
- package/dist/core/roving-focus.js.map +1 -1
- package/dist/core/text-direction.d.ts +7 -0
- package/dist/core/text-direction.d.ts.map +1 -0
- package/dist/core/text-direction.js +7 -0
- package/dist/core/text-direction.js.map +1 -0
- package/dist/styles/index.css +1 -1
- package/package.json +2 -1
- package/skills/uiify/SKILL.md +58 -33
- package/skills/uiify/references/compositions/card-rhythm.md +0 -2
- package/skills/uiify/references/compositions/destructive-confirmation.md +1 -3
- package/skills/uiify/references/compositions/form-grouping.md +0 -2
- package/skills/uiify/references/compositions/hero-actions.md +3 -5
- package/skills/uiify/references/compositions/page-frame.md +0 -2
- package/skills/uiify/references/compositions/pricing-actions.md +0 -2
- package/skills/uiify/references/compositions/save-feedback.md +1 -3
- package/skills/uiify/references/compositions/table-controls.md +1 -3
- package/skills/uiify/references/elements/accordion.md +38 -0
- package/skills/uiify/references/elements/alert-modal.md +32 -5
- package/skills/uiify/references/elements/avatar.md +31 -2
- package/skills/uiify/references/elements/badge.md +32 -3
- package/skills/uiify/references/elements/bar-chart.md +39 -7
- package/skills/uiify/references/elements/breadcrumb.md +38 -0
- package/skills/uiify/references/elements/button.md +38 -3
- package/skills/uiify/references/elements/candle-chart.md +40 -0
- package/skills/uiify/references/elements/card.md +38 -1
- package/skills/uiify/references/elements/carousel.md +40 -0
- package/skills/uiify/references/elements/checkbox.md +39 -0
- package/skills/uiify/references/elements/code-block.md +31 -2
- package/skills/uiify/references/elements/collapsible.md +38 -0
- package/skills/uiify/references/elements/color-picker.md +39 -0
- package/skills/uiify/references/elements/combobox.md +37 -0
- package/skills/uiify/references/elements/command-palette.md +33 -12
- package/skills/uiify/references/elements/context-menu.md +38 -0
- package/skills/uiify/references/elements/cookie-banner.md +30 -2
- package/skills/uiify/references/elements/date-picker.md +33 -9
- package/skills/uiify/references/elements/divider.md +30 -2
- package/skills/uiify/references/elements/drawer.md +38 -0
- package/skills/uiify/references/elements/dropdown-menu.md +38 -0
- package/skills/uiify/references/elements/empty-state.md +30 -2
- package/skills/uiify/references/elements/feature-grid.md +41 -1
- package/skills/uiify/references/elements/field.md +33 -3
- package/skills/uiify/references/elements/file-upload.md +40 -0
- package/skills/uiify/references/elements/footer.md +35 -4
- package/skills/uiify/references/elements/form.md +31 -4
- package/skills/uiify/references/elements/header.md +31 -3
- package/skills/uiify/references/elements/hero.md +43 -3
- package/skills/uiify/references/elements/hover-card.md +38 -0
- package/skills/uiify/references/elements/image-gallery.md +36 -4
- package/skills/uiify/references/elements/inline-alert.md +30 -2
- package/skills/uiify/references/elements/input.md +31 -4
- package/skills/uiify/references/elements/line-chart.md +38 -0
- package/skills/uiify/references/elements/logo-wall.md +31 -2
- package/skills/uiify/references/elements/modal.md +38 -0
- package/skills/uiify/references/elements/number-field.md +41 -0
- package/skills/uiify/references/elements/otp-input.md +39 -0
- package/skills/uiify/references/elements/pagination.md +33 -4
- package/skills/uiify/references/elements/password-input.md +33 -9
- package/skills/uiify/references/elements/popup.md +38 -0
- package/skills/uiify/references/elements/pricing-table.md +55 -2
- package/skills/uiify/references/elements/progress-bar.md +32 -4
- package/skills/uiify/references/elements/radio-group.md +39 -0
- package/skills/uiify/references/elements/rating.md +39 -0
- package/skills/uiify/references/elements/search-input.md +35 -4
- package/skills/uiify/references/elements/segmented-control.md +39 -0
- package/skills/uiify/references/elements/select.md +29 -1
- package/skills/uiify/references/elements/sidebar.md +33 -10
- package/skills/uiify/references/elements/skeleton.md +38 -0
- package/skills/uiify/references/elements/slider.md +39 -0
- package/skills/uiify/references/elements/spinner.md +38 -0
- package/skills/uiify/references/elements/stats-bar.md +30 -2
- package/skills/uiify/references/elements/stepper.md +32 -9
- package/skills/uiify/references/elements/switch.md +31 -4
- package/skills/uiify/references/elements/table-of-contents.md +39 -0
- package/skills/uiify/references/elements/table.md +32 -3
- package/skills/uiify/references/elements/tabs.md +38 -0
- package/skills/uiify/references/elements/tags-input.md +39 -0
- package/skills/uiify/references/elements/testimonial.md +35 -4
- package/skills/uiify/references/elements/textarea.md +30 -3
- package/skills/uiify/references/elements/timeline.md +31 -3
- package/skills/uiify/references/elements/toast.md +27 -1
- package/skills/uiify/references/elements/toggle-group.md +39 -0
- package/skills/uiify/references/elements/toggle.md +39 -0
- package/skills/uiify/references/elements/toolbar.md +39 -0
- package/skills/uiify/references/elements/tooltip.md +38 -0
- package/skills/uiify/references/elements/virtual-scroll.md +39 -0
- package/skills/uiify/references/examples/alert-confirmation.md +34 -0
- package/skills/uiify/references/examples/field-validation.md +37 -0
- package/skills/uiify/references/examples/select-basic.md +35 -0
- package/skills/uiify/references/examples/table-controls.md +40 -0
- package/skills/uiify/references/guides/assets.md +14 -0
- package/skills/uiify/references/guides/content.md +11 -0
- package/skills/uiify/references/guides/hierarchy.md +14 -0
- package/skills/uiify/references/guides/i18n.md +21 -0
- package/skills/uiify/references/guides/reference.md +9 -0
- package/skills/uiify/references/guides/states.md +12 -0
- package/skills/uiify/references/guides/surface.md +27 -0
- package/skills/uiify/scripts/lint.mjs +1 -1
- package/skills/uiify/scripts/static.mjs +150 -14
|
@@ -1,16 +1,31 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { formatLabel } from "@gunkin/uiify/core/format-label";
|
|
2
3
|
import { useRenderElement } from "@gunkin/uiify/core/render";
|
|
3
4
|
import { buildPaginationItems } from "./pagination-engine.js";
|
|
4
5
|
import { buildPaginationItems as buildPaginationItems2 } from "./pagination-engine.js";
|
|
6
|
+
const DEFAULT_PAGINATION_LABELS = {
|
|
7
|
+
root: "Pagination",
|
|
8
|
+
page: "Page {page}",
|
|
9
|
+
previous: "Previous page",
|
|
10
|
+
next: "Next page",
|
|
11
|
+
first: "First page",
|
|
12
|
+
last: "Last page",
|
|
13
|
+
previousText: "Previous",
|
|
14
|
+
nextText: "Next",
|
|
15
|
+
firstText: "First",
|
|
16
|
+
lastText: "Last"
|
|
17
|
+
};
|
|
5
18
|
function PaginationRoot(props) {
|
|
6
19
|
const {
|
|
7
20
|
as,
|
|
8
21
|
render,
|
|
9
|
-
"aria-label": ariaLabel
|
|
22
|
+
"aria-label": ariaLabel,
|
|
10
23
|
boundaryCount = 1,
|
|
11
24
|
count,
|
|
12
25
|
disabled = false,
|
|
13
26
|
getPageHref,
|
|
27
|
+
labels,
|
|
28
|
+
locale,
|
|
14
29
|
page = 1,
|
|
15
30
|
showFirstLast = false,
|
|
16
31
|
siblingCount = 1,
|
|
@@ -19,6 +34,7 @@ function PaginationRoot(props) {
|
|
|
19
34
|
onPageChange: _onPageChange,
|
|
20
35
|
...consumerProps
|
|
21
36
|
} = props;
|
|
37
|
+
const mergedLabels = { ...DEFAULT_PAGINATION_LABELS, ...labels };
|
|
22
38
|
const items = buildPaginationItems(
|
|
23
39
|
count,
|
|
24
40
|
page,
|
|
@@ -31,6 +47,8 @@ function PaginationRoot(props) {
|
|
|
31
47
|
PaginationItemRenderer,
|
|
32
48
|
{
|
|
33
49
|
item,
|
|
50
|
+
labels: mergedLabels,
|
|
51
|
+
...locale !== void 0 ? { locale } : {},
|
|
34
52
|
page,
|
|
35
53
|
...paginationHrefProps(getPageHref)
|
|
36
54
|
},
|
|
@@ -41,7 +59,7 @@ function PaginationRoot(props) {
|
|
|
41
59
|
defaultTag: "nav",
|
|
42
60
|
props: {
|
|
43
61
|
...consumerProps,
|
|
44
|
-
"aria-label": ariaLabel,
|
|
62
|
+
"aria-label": ariaLabel ?? mergedLabels.root,
|
|
45
63
|
children: content,
|
|
46
64
|
"data-uiify-pagination": ""
|
|
47
65
|
},
|
|
@@ -56,6 +74,8 @@ function paginationHrefProps(getPageHref) {
|
|
|
56
74
|
function PaginationItemRenderer({
|
|
57
75
|
getPageHref,
|
|
58
76
|
item,
|
|
77
|
+
labels,
|
|
78
|
+
locale,
|
|
59
79
|
page
|
|
60
80
|
}) {
|
|
61
81
|
const hrefProps = paginationHrefProps(getPageHref);
|
|
@@ -67,7 +87,8 @@ function PaginationItemRenderer({
|
|
|
67
87
|
PaginationNavControl,
|
|
68
88
|
{
|
|
69
89
|
disabled: item.disabled,
|
|
70
|
-
label:
|
|
90
|
+
label: labels.previous,
|
|
91
|
+
labelText: labels.previousText,
|
|
71
92
|
page: page - 1,
|
|
72
93
|
type: "previous",
|
|
73
94
|
...hrefProps
|
|
@@ -78,7 +99,8 @@ function PaginationItemRenderer({
|
|
|
78
99
|
PaginationNavControl,
|
|
79
100
|
{
|
|
80
101
|
disabled: item.disabled,
|
|
81
|
-
label:
|
|
102
|
+
label: labels.next,
|
|
103
|
+
labelText: labels.nextText,
|
|
82
104
|
page: page + 1,
|
|
83
105
|
type: "next",
|
|
84
106
|
...hrefProps
|
|
@@ -89,7 +111,8 @@ function PaginationItemRenderer({
|
|
|
89
111
|
PaginationNavControl,
|
|
90
112
|
{
|
|
91
113
|
disabled: item.disabled,
|
|
92
|
-
label:
|
|
114
|
+
label: labels.first,
|
|
115
|
+
labelText: labels.firstText,
|
|
93
116
|
page: 1,
|
|
94
117
|
type: "first",
|
|
95
118
|
...hrefProps
|
|
@@ -100,7 +123,8 @@ function PaginationItemRenderer({
|
|
|
100
123
|
PaginationNavControl,
|
|
101
124
|
{
|
|
102
125
|
disabled: item.disabled,
|
|
103
|
-
label:
|
|
126
|
+
label: labels.last,
|
|
127
|
+
labelText: labels.lastText,
|
|
104
128
|
page: item.page ?? page,
|
|
105
129
|
type: "last",
|
|
106
130
|
...hrefProps
|
|
@@ -111,6 +135,8 @@ function PaginationItemRenderer({
|
|
|
111
135
|
PaginationLink,
|
|
112
136
|
{
|
|
113
137
|
disabled: item.disabled,
|
|
138
|
+
...locale !== void 0 ? { locale } : {},
|
|
139
|
+
pageLabelTemplate: labels.page,
|
|
114
140
|
page: item.page ?? 1,
|
|
115
141
|
selected: item.selected,
|
|
116
142
|
...hrefProps
|
|
@@ -145,6 +171,8 @@ function PaginationLink(props) {
|
|
|
145
171
|
render,
|
|
146
172
|
disabled = false,
|
|
147
173
|
getPageHref,
|
|
174
|
+
locale,
|
|
175
|
+
pageLabelTemplate = DEFAULT_PAGINATION_LABELS.page,
|
|
148
176
|
page,
|
|
149
177
|
selected = false,
|
|
150
178
|
...consumerProps
|
|
@@ -157,7 +185,7 @@ function PaginationLink(props) {
|
|
|
157
185
|
props: {
|
|
158
186
|
...consumerProps,
|
|
159
187
|
"aria-current": selected ? "page" : void 0,
|
|
160
|
-
"aria-label":
|
|
188
|
+
"aria-label": formatPageLabel(pageLabelTemplate, page, locale),
|
|
161
189
|
"aria-disabled": disabled ? true : void 0,
|
|
162
190
|
"data-disabled": disabled ? "" : void 0,
|
|
163
191
|
"data-selected": selected ? "" : void 0,
|
|
@@ -166,7 +194,7 @@ function PaginationLink(props) {
|
|
|
166
194
|
"data-uiify-button": "",
|
|
167
195
|
"data-variant": "ghost",
|
|
168
196
|
href,
|
|
169
|
-
children: page
|
|
197
|
+
children: formatPageNumber(page, locale)
|
|
170
198
|
},
|
|
171
199
|
render,
|
|
172
200
|
state: { selected }
|
|
@@ -176,11 +204,11 @@ function PaginationNavControl({
|
|
|
176
204
|
disabled,
|
|
177
205
|
getPageHref,
|
|
178
206
|
label,
|
|
207
|
+
labelText,
|
|
179
208
|
page,
|
|
180
209
|
type
|
|
181
210
|
}) {
|
|
182
211
|
const href = !disabled && getPageHref ? getPageHref(page) : void 0;
|
|
183
|
-
const labelText = type === "previous" ? "Previous" : type === "next" ? "Next" : type === "first" ? "First" : "Last";
|
|
184
212
|
return /* @__PURE__ */ jsx(PaginationItemPart, { children: href ? /* @__PURE__ */ jsx(
|
|
185
213
|
"a",
|
|
186
214
|
{
|
|
@@ -205,6 +233,12 @@ function PaginationNavControl({
|
|
|
205
233
|
) });
|
|
206
234
|
}
|
|
207
235
|
PaginationNavControl.displayName = "PaginationNavControl";
|
|
236
|
+
function formatPageNumber(page, locale) {
|
|
237
|
+
return locale ? new Intl.NumberFormat(locale).format(page) : String(page);
|
|
238
|
+
}
|
|
239
|
+
function formatPageLabel(template, page, locale) {
|
|
240
|
+
return formatLabel(template, { page: locale === void 0 ? String(page) : page }, locale);
|
|
241
|
+
}
|
|
208
242
|
function PaginationEllipsis(props) {
|
|
209
243
|
const { as, render, ...consumerProps } = props;
|
|
210
244
|
const element = useRenderElement({
|
|
@@ -230,6 +264,7 @@ const Pagination = {
|
|
|
230
264
|
Root: PaginationRoot
|
|
231
265
|
};
|
|
232
266
|
export {
|
|
267
|
+
DEFAULT_PAGINATION_LABELS,
|
|
233
268
|
Pagination,
|
|
234
269
|
PaginationEllipsis,
|
|
235
270
|
PaginationItemPart,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/pagination/PaginationShell.tsx"],"sourcesContent":["import type { ElementType, ReactElement } from \"react\";\nimport { useRenderElement } from \"@gunkin/uiify/core/render\";\nimport { buildPaginationItems } from \"./pagination-engine.js\";\n\nimport type {\n PaginationItem,\n PaginationRootProps,\n PaginationListProps,\n PaginationItemProps,\n PaginationLinkProps,\n PaginationEllipsisProps,\n} from \"./types.js\";\n\nexport { buildPaginationItems } from \"./pagination-engine.js\";\n\nexport function PaginationRoot<TAs extends ElementType = \"nav\">(\n props: PaginationRootProps<TAs>,\n): ReactElement | null {\n const {\n as,\n render,\n \"aria-label\": ariaLabel = \"Pagination\",\n boundaryCount = 1,\n count,\n disabled = false,\n getPageHref,\n page = 1,\n showFirstLast = false,\n siblingCount = 1,\n children,\n defaultPage: _defaultPage,\n onPageChange: _onPageChange,\n ...consumerProps\n } = props as PaginationRootProps<\"nav\">;\n\n const items = buildPaginationItems(\n count,\n page,\n siblingCount,\n boundaryCount,\n disabled,\n showFirstLast,\n );\n\n const content = children ?? (\n <ol>\n {items.map((item, index) => (\n <PaginationItemRenderer\n item={item}\n key={`${item.type}-${item.page ?? index}`}\n page={page}\n {...paginationHrefProps(getPageHref)}\n />\n ))}\n </ol>\n );\n\n return useRenderElement({\n as,\n defaultTag: \"nav\",\n props: {\n ...consumerProps,\n \"aria-label\": ariaLabel,\n children: content,\n \"data-uiify-pagination\": \"\",\n },\n render,\n state: { page },\n });\n}\nPaginationRoot.displayName = \"PaginationRoot\";\n\nfunction paginationHrefProps(getPageHref?: (page: number) => string): {\n readonly getPageHref?: (page: number) => string;\n} {\n return getPageHref ? { getPageHref } : {};\n}\n\nfunction PaginationItemRenderer({\n getPageHref,\n item,\n page,\n}: {\n readonly getPageHref?: (page: number) => string;\n readonly item: PaginationItem;\n readonly page: number;\n}): ReactElement {\n const hrefProps = paginationHrefProps(getPageHref);\n\n switch (item.type) {\n case \"ellipsis\":\n return <PaginationEllipsis />;\n case \"previous\":\n return (\n <PaginationNavControl\n disabled={item.disabled}\n label=\"Previous page\"\n page={page - 1}\n type=\"previous\"\n {...hrefProps}\n />\n );\n case \"next\":\n return (\n <PaginationNavControl\n disabled={item.disabled}\n label=\"Next page\"\n page={page + 1}\n type=\"next\"\n {...hrefProps}\n />\n );\n case \"first\":\n return (\n <PaginationNavControl\n disabled={item.disabled}\n label=\"First page\"\n page={1}\n type=\"first\"\n {...hrefProps}\n />\n );\n case \"last\":\n return (\n <PaginationNavControl\n disabled={item.disabled}\n label=\"Last page\"\n page={item.page ?? page}\n type=\"last\"\n {...hrefProps}\n />\n );\n default:\n return (\n <PaginationLink\n disabled={item.disabled}\n page={item.page ?? 1}\n selected={item.selected}\n {...hrefProps}\n />\n );\n }\n}\nPaginationItemRenderer.displayName = \"PaginationItemRenderer\";\n\nexport function PaginationList<TAs extends ElementType = \"ol\">(\n props: PaginationListProps<TAs>,\n): ReactElement | null {\n const { as, render, ...consumerProps } = props as PaginationListProps<\"ol\">;\n\n return useRenderElement({\n as,\n defaultTag: \"ol\",\n props: consumerProps,\n render,\n state: {},\n });\n}\n\nexport function PaginationItemPart<TAs extends ElementType = \"li\">(\n props: PaginationItemProps<TAs>,\n): ReactElement | null {\n const { as, render, children, ...consumerProps } = props as PaginationItemProps<\"li\">;\n\n return useRenderElement({\n as,\n defaultTag: \"li\",\n props: { ...consumerProps, children },\n render,\n state: {},\n });\n}\n\nexport function PaginationLink<TAs extends ElementType = \"a\">(\n props: PaginationLinkProps<TAs>,\n): ReactElement | null {\n const {\n as,\n render,\n disabled = false,\n getPageHref,\n page,\n selected = false,\n ...consumerProps\n } = props as PaginationLinkProps<\"a\">;\n\n const href = !disabled && getPageHref ? getPageHref(page) : undefined;\n const Tag = href ? \"a\" : \"span\";\n\n return useRenderElement({\n as: as ?? Tag,\n defaultTag: Tag,\n props: {\n ...consumerProps,\n \"aria-current\": selected ? \"page\" : undefined,\n \"aria-label\": `Page ${page}`,\n \"aria-disabled\": disabled ? true : undefined,\n \"data-disabled\": disabled ? \"\" : undefined,\n \"data-selected\": selected ? \"\" : undefined,\n \"data-size\": \"icon\",\n \"data-type\": \"page\",\n \"data-uiify-button\": \"\",\n \"data-variant\": \"ghost\",\n href,\n children: page,\n },\n render,\n state: { selected },\n });\n}\n\nfunction PaginationNavControl({\n disabled,\n getPageHref,\n label,\n page,\n type,\n}: {\n readonly disabled: boolean;\n readonly getPageHref?: (page: number) => string;\n readonly label: string;\n readonly page: number;\n readonly type: \"previous\" | \"next\" | \"first\" | \"last\";\n}): ReactElement {\n const href = !disabled && getPageHref ? getPageHref(page) : undefined;\n const labelText =\n type === \"previous\"\n ? \"Previous\"\n : type === \"next\"\n ? \"Next\"\n : type === \"first\"\n ? \"First\"\n : \"Last\";\n\n return (\n <PaginationItemPart>\n {href ? (\n <a\n aria-label={label}\n data-type={type}\n data-uiify-button=\"\"\n data-variant=\"ghost\"\n href={href}\n >\n {labelText}\n </a>\n ) : (\n <span\n aria-disabled={disabled ? true : undefined}\n aria-label={label}\n data-disabled={disabled ? \"\" : undefined}\n data-type={type}\n data-uiify-button=\"\"\n data-variant=\"ghost\"\n >\n {labelText}\n </span>\n )}\n </PaginationItemPart>\n );\n}\nPaginationNavControl.displayName = \"PaginationNavControl\";\n\nexport function PaginationEllipsis<TAs extends ElementType = \"span\">(\n props: PaginationEllipsisProps<TAs>,\n): ReactElement | null {\n const { as, render, ...consumerProps } = props as PaginationEllipsisProps<\"span\">;\n const element = useRenderElement({\n as,\n defaultTag: \"span\",\n props: {\n ...consumerProps,\n \"aria-hidden\": true,\n \"data-type\": \"ellipsis\",\n children: \"…\",\n },\n render,\n state: {},\n });\n\n return <PaginationItemPart>{element}</PaginationItemPart>;\n}\nPaginationEllipsis.displayName = \"PaginationEllipsis\";\n\nexport const Pagination = {\n Ellipsis: PaginationEllipsis,\n Item: PaginationItemPart,\n Link: PaginationLink,\n List: PaginationList,\n Root: PaginationRoot,\n};\n"],"mappings":"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","names":["buildPaginationItems"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/pagination/PaginationShell.tsx"],"sourcesContent":["import type { ElementType, ReactElement } from \"react\";\nimport { formatLabel } from \"@gunkin/uiify/core/format-label\";\nimport { useRenderElement } from \"@gunkin/uiify/core/render\";\nimport { buildPaginationItems } from \"./pagination-engine.js\";\n\nimport type {\n PaginationItem,\n PaginationLabels,\n PaginationRootProps,\n PaginationListProps,\n PaginationItemProps,\n PaginationLinkProps,\n PaginationEllipsisProps,\n} from \"./types.js\";\n\nexport { buildPaginationItems } from \"./pagination-engine.js\";\n\nexport const DEFAULT_PAGINATION_LABELS: PaginationLabels = {\n root: \"Pagination\",\n page: \"Page {page}\",\n previous: \"Previous page\",\n next: \"Next page\",\n first: \"First page\",\n last: \"Last page\",\n previousText: \"Previous\",\n nextText: \"Next\",\n firstText: \"First\",\n lastText: \"Last\",\n};\n\nexport function PaginationRoot<TAs extends ElementType = \"nav\">(\n props: PaginationRootProps<TAs>,\n): ReactElement | null {\n const {\n as,\n render,\n \"aria-label\": ariaLabel,\n boundaryCount = 1,\n count,\n disabled = false,\n getPageHref,\n labels,\n locale,\n page = 1,\n showFirstLast = false,\n siblingCount = 1,\n children,\n defaultPage: _defaultPage,\n onPageChange: _onPageChange,\n ...consumerProps\n } = props as PaginationRootProps<\"nav\">;\n const mergedLabels = { ...DEFAULT_PAGINATION_LABELS, ...labels };\n\n const items = buildPaginationItems(\n count,\n page,\n siblingCount,\n boundaryCount,\n disabled,\n showFirstLast,\n );\n\n const content = children ?? (\n <ol>\n {items.map((item, index) => (\n <PaginationItemRenderer\n item={item}\n key={`${item.type}-${item.page ?? index}`}\n labels={mergedLabels}\n {...(locale !== undefined ? { locale } : {})}\n page={page}\n {...paginationHrefProps(getPageHref)}\n />\n ))}\n </ol>\n );\n\n return useRenderElement({\n as,\n defaultTag: \"nav\",\n props: {\n ...consumerProps,\n \"aria-label\": ariaLabel ?? mergedLabels.root,\n children: content,\n \"data-uiify-pagination\": \"\",\n },\n render,\n state: { page },\n });\n}\nPaginationRoot.displayName = \"PaginationRoot\";\n\nfunction paginationHrefProps(getPageHref?: (page: number) => string): {\n readonly getPageHref?: (page: number) => string;\n} {\n return getPageHref ? { getPageHref } : {};\n}\n\nfunction PaginationItemRenderer({\n getPageHref,\n item,\n labels,\n locale,\n page,\n}: {\n readonly getPageHref?: (page: number) => string;\n readonly item: PaginationItem;\n readonly labels: PaginationLabels;\n readonly locale?: string;\n readonly page: number;\n}): ReactElement {\n const hrefProps = paginationHrefProps(getPageHref);\n\n switch (item.type) {\n case \"ellipsis\":\n return <PaginationEllipsis />;\n case \"previous\":\n return (\n <PaginationNavControl\n disabled={item.disabled}\n label={labels.previous}\n labelText={labels.previousText}\n page={page - 1}\n type=\"previous\"\n {...hrefProps}\n />\n );\n case \"next\":\n return (\n <PaginationNavControl\n disabled={item.disabled}\n label={labels.next}\n labelText={labels.nextText}\n page={page + 1}\n type=\"next\"\n {...hrefProps}\n />\n );\n case \"first\":\n return (\n <PaginationNavControl\n disabled={item.disabled}\n label={labels.first}\n labelText={labels.firstText}\n page={1}\n type=\"first\"\n {...hrefProps}\n />\n );\n case \"last\":\n return (\n <PaginationNavControl\n disabled={item.disabled}\n label={labels.last}\n labelText={labels.lastText}\n page={item.page ?? page}\n type=\"last\"\n {...hrefProps}\n />\n );\n default:\n return (\n <PaginationLink\n disabled={item.disabled}\n {...(locale !== undefined ? { locale } : {})}\n pageLabelTemplate={labels.page}\n page={item.page ?? 1}\n selected={item.selected}\n {...hrefProps}\n />\n );\n }\n}\nPaginationItemRenderer.displayName = \"PaginationItemRenderer\";\n\nexport function PaginationList<TAs extends ElementType = \"ol\">(\n props: PaginationListProps<TAs>,\n): ReactElement | null {\n const { as, render, ...consumerProps } = props as PaginationListProps<\"ol\">;\n\n return useRenderElement({\n as,\n defaultTag: \"ol\",\n props: consumerProps,\n render,\n state: {},\n });\n}\n\nexport function PaginationItemPart<TAs extends ElementType = \"li\">(\n props: PaginationItemProps<TAs>,\n): ReactElement | null {\n const { as, render, children, ...consumerProps } = props as PaginationItemProps<\"li\">;\n\n return useRenderElement({\n as,\n defaultTag: \"li\",\n props: { ...consumerProps, children },\n render,\n state: {},\n });\n}\n\nexport function PaginationLink<TAs extends ElementType = \"a\">(\n props: PaginationLinkProps<TAs>,\n): ReactElement | null {\n const {\n as,\n render,\n disabled = false,\n getPageHref,\n locale,\n pageLabelTemplate = DEFAULT_PAGINATION_LABELS.page,\n page,\n selected = false,\n ...consumerProps\n } = props as PaginationLinkProps<\"a\">;\n\n const href = !disabled && getPageHref ? getPageHref(page) : undefined;\n const Tag = href ? \"a\" : \"span\";\n\n return useRenderElement({\n as: as ?? Tag,\n defaultTag: Tag,\n props: {\n ...consumerProps,\n \"aria-current\": selected ? \"page\" : undefined,\n \"aria-label\": formatPageLabel(pageLabelTemplate, page, locale),\n \"aria-disabled\": disabled ? true : undefined,\n \"data-disabled\": disabled ? \"\" : undefined,\n \"data-selected\": selected ? \"\" : undefined,\n \"data-size\": \"icon\",\n \"data-type\": \"page\",\n \"data-uiify-button\": \"\",\n \"data-variant\": \"ghost\",\n href,\n children: formatPageNumber(page, locale),\n },\n render,\n state: { selected },\n });\n}\n\nfunction PaginationNavControl({\n disabled,\n getPageHref,\n label,\n labelText,\n page,\n type,\n}: {\n readonly disabled: boolean;\n readonly getPageHref?: (page: number) => string;\n readonly label: string;\n readonly labelText: string;\n readonly page: number;\n readonly type: \"previous\" | \"next\" | \"first\" | \"last\";\n}): ReactElement {\n const href = !disabled && getPageHref ? getPageHref(page) : undefined;\n return (\n <PaginationItemPart>\n {href ? (\n <a\n aria-label={label}\n data-type={type}\n data-uiify-button=\"\"\n data-variant=\"ghost\"\n href={href}\n >\n {labelText}\n </a>\n ) : (\n <span\n aria-disabled={disabled ? true : undefined}\n aria-label={label}\n data-disabled={disabled ? \"\" : undefined}\n data-type={type}\n data-uiify-button=\"\"\n data-variant=\"ghost\"\n >\n {labelText}\n </span>\n )}\n </PaginationItemPart>\n );\n}\nPaginationNavControl.displayName = \"PaginationNavControl\";\n\nfunction formatPageNumber(page: number, locale?: string): string {\n return locale ? new Intl.NumberFormat(locale).format(page) : String(page);\n}\n\nfunction formatPageLabel(template: string, page: number, locale?: string): string {\n return formatLabel(template, { page: locale === undefined ? String(page) : page }, locale);\n}\n\nexport function PaginationEllipsis<TAs extends ElementType = \"span\">(\n props: PaginationEllipsisProps<TAs>,\n): ReactElement | null {\n const { as, render, ...consumerProps } = props as PaginationEllipsisProps<\"span\">;\n const element = useRenderElement({\n as,\n defaultTag: \"span\",\n props: {\n ...consumerProps,\n \"aria-hidden\": true,\n \"data-type\": \"ellipsis\",\n children: \"…\",\n },\n render,\n state: {},\n });\n\n return <PaginationItemPart>{element}</PaginationItemPart>;\n}\nPaginationEllipsis.displayName = \"PaginationEllipsis\";\n\nexport const Pagination = {\n Ellipsis: PaginationEllipsis,\n Item: PaginationItemPart,\n Link: PaginationLink,\n List: PaginationList,\n Root: PaginationRoot,\n};\n"],"mappings":"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","names":["buildPaginationItems"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { buildPaginationItems } from "./pagination-engine.js";
|
|
2
2
|
export type { PaginationItem as PaginationItemDescriptor, PaginationItemType, UsePaginationParams, } from "./types.js";
|
|
3
3
|
export { Pagination, PaginationEllipsis, PaginationItemPart as PaginationItem, PaginationLink, PaginationList, PaginationRoot, } from "./Pagination.js";
|
|
4
|
-
export type { PaginationEllipsisProps, PaginationEllipsisOwnProps, PaginationItemProps, PaginationItemOwnProps, PaginationLinkOwnProps, PaginationLinkProps, PaginationListOwnProps, PaginationListProps, PaginationRootOwnProps, PaginationRootProps, } from "./types.js";
|
|
4
|
+
export type { PaginationEllipsisProps, PaginationEllipsisOwnProps, PaginationItemProps, PaginationItemOwnProps, PaginationLinkOwnProps, PaginationLinkProps, PaginationListOwnProps, PaginationListProps, PaginationRootOwnProps, PaginationRootProps, PaginationLabels, } from "./types.js";
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/pagination/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EACV,cAAc,IAAI,wBAAwB,EAC1C,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,kBAAkB,IAAI,cAAc,EACpC,cAAc,EACd,cAAc,EACd,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,uBAAuB,EACvB,0BAA0B,EAC1B,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/pagination/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EACV,cAAc,IAAI,wBAAwB,EAC1C,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,kBAAkB,IAAI,cAAc,EACpC,cAAc,EACd,cAAc,EACd,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,uBAAuB,EACvB,0BAA0B,EAC1B,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/pagination/index.ts"],"sourcesContent":["export { buildPaginationItems } from \"./pagination-engine.js\";\nexport type {\n PaginationItem as PaginationItemDescriptor,\n PaginationItemType,\n UsePaginationParams,\n} from \"./types.js\";\nexport {\n Pagination,\n PaginationEllipsis,\n PaginationItemPart as PaginationItem,\n PaginationLink,\n PaginationList,\n PaginationRoot,\n} from \"./Pagination.js\";\nexport type {\n PaginationEllipsisProps,\n PaginationEllipsisOwnProps,\n PaginationItemProps,\n PaginationItemOwnProps,\n PaginationLinkOwnProps,\n PaginationLinkProps,\n PaginationListOwnProps,\n PaginationListProps,\n PaginationRootOwnProps,\n PaginationRootProps,\n} from \"./types.js\";\n"],"mappings":"AAAA,SAAS,4BAA4B;AAMrC;AAAA,EACE;AAAA,EACA;AAAA,EACsB;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,OACK;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/pagination/index.ts"],"sourcesContent":["export { buildPaginationItems } from \"./pagination-engine.js\";\nexport type {\n PaginationItem as PaginationItemDescriptor,\n PaginationItemType,\n UsePaginationParams,\n} from \"./types.js\";\nexport {\n Pagination,\n PaginationEllipsis,\n PaginationItemPart as PaginationItem,\n PaginationLink,\n PaginationList,\n PaginationRoot,\n} from \"./Pagination.js\";\nexport type {\n PaginationEllipsisProps,\n PaginationEllipsisOwnProps,\n PaginationItemProps,\n PaginationItemOwnProps,\n PaginationLinkOwnProps,\n PaginationLinkProps,\n PaginationListOwnProps,\n PaginationListProps,\n PaginationRootOwnProps,\n PaginationRootProps,\n PaginationLabels,\n} from \"./types.js\";\n"],"mappings":"AAAA,SAAS,4BAA4B;AAMrC;AAAA,EACE;AAAA,EACA;AAAA,EACsB;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,OACK;","names":[]}
|
|
@@ -14,6 +14,18 @@ export interface PaginationControlItem {
|
|
|
14
14
|
readonly type: Exclude<PaginationItemType, "page">;
|
|
15
15
|
}
|
|
16
16
|
export type PaginationItem = PaginationPageItem | PaginationControlItem;
|
|
17
|
+
export interface PaginationLabels {
|
|
18
|
+
readonly root: string;
|
|
19
|
+
readonly page: string;
|
|
20
|
+
readonly previous: string;
|
|
21
|
+
readonly next: string;
|
|
22
|
+
readonly first: string;
|
|
23
|
+
readonly last: string;
|
|
24
|
+
readonly previousText: string;
|
|
25
|
+
readonly nextText: string;
|
|
26
|
+
readonly firstText: string;
|
|
27
|
+
readonly lastText: string;
|
|
28
|
+
}
|
|
17
29
|
export interface UsePaginationParams {
|
|
18
30
|
readonly boundaryCount?: number;
|
|
19
31
|
readonly count: number;
|
|
@@ -32,6 +44,8 @@ export interface UsePaginationReturn {
|
|
|
32
44
|
export interface PaginationContextValue {
|
|
33
45
|
readonly count: number;
|
|
34
46
|
readonly items: readonly PaginationItem[];
|
|
47
|
+
readonly labels: PaginationLabels;
|
|
48
|
+
readonly locale?: string;
|
|
35
49
|
readonly page: number;
|
|
36
50
|
readonly setPage: (page: number) => void;
|
|
37
51
|
}
|
|
@@ -39,6 +53,8 @@ export interface PaginationRootOwnProps extends UsePaginationParams {
|
|
|
39
53
|
readonly "aria-label"?: string;
|
|
40
54
|
readonly children?: ReactNode;
|
|
41
55
|
readonly getPageHref?: (page: number) => string;
|
|
56
|
+
readonly labels?: Partial<PaginationLabels>;
|
|
57
|
+
readonly locale?: string;
|
|
42
58
|
}
|
|
43
59
|
export type PaginationRootProps<TAs extends ElementType = "nav"> = RenderableProps<TAs, PaginationRootOwnProps, {
|
|
44
60
|
page: number;
|
|
@@ -54,6 +70,8 @@ export type PaginationItemProps<TAs extends ElementType = "li"> = RenderableProp
|
|
|
54
70
|
export interface PaginationLinkOwnProps {
|
|
55
71
|
readonly disabled?: boolean;
|
|
56
72
|
readonly getPageHref?: (page: number) => string;
|
|
73
|
+
readonly locale?: string;
|
|
74
|
+
readonly pageLabelTemplate?: string;
|
|
57
75
|
readonly page: number;
|
|
58
76
|
readonly selected?: boolean;
|
|
59
77
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/pagination/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAE9F,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;CACpD;AAED,MAAM,MAAM,cAAc,GAAG,kBAAkB,GAAG,qBAAqB,CAAC;AAExE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,CAAC;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1C;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,CAAC;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1C;AAED,MAAM,WAAW,sBAAuB,SAAQ,mBAAmB;IACjE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/pagination/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SliderClient.d.ts","sourceRoot":"","sources":["../../../../src/components/slider/client/SliderClient.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,WAAW,EAEX,YAAY,EAEb,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"SliderClient.d.ts","sourceRoot":"","sources":["../../../../src/components/slider/client/SliderClient.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,WAAW,EAEX,YAAY,EAEb,MAAM,OAAO,CAAC;AAOf,OAAO,KAAK,EAAE,iBAAiB,EAAiC,MAAM,aAAa,CAAC;AAoDpF,wBAAgB,YAAY,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,EAC1D,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC,GAC5B,YAAY,GAAG,IAAI,CAoLrB;yBAtLe,YAAY"}
|
|
@@ -3,7 +3,12 @@ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
import { useEffect, useState } from "react";
|
|
4
4
|
import { useControllableState } from "@gunkin/uiify/hooks";
|
|
5
5
|
import { useRenderElement } from "@gunkin/uiify/core/render";
|
|
6
|
+
import { resolveDirection } from "@gunkin/uiify/core/text-direction";
|
|
6
7
|
import { getSliderStops, snapSliderToStops } from "../slider-values.js";
|
|
8
|
+
const DEFAULT_SLIDER_LABELS = {
|
|
9
|
+
minimum: "Minimum value",
|
|
10
|
+
maximum: "Maximum value"
|
|
11
|
+
};
|
|
7
12
|
function normalizeValue(value, min, max) {
|
|
8
13
|
if (typeof value === "number") return Math.max(min, Math.min(max, value));
|
|
9
14
|
const first = Math.max(min, Math.min(max, value[0]));
|
|
@@ -39,6 +44,7 @@ function SliderClient(props) {
|
|
|
39
44
|
disabled = false,
|
|
40
45
|
orientation = "horizontal",
|
|
41
46
|
marks = [],
|
|
47
|
+
labels,
|
|
42
48
|
thumbLabels,
|
|
43
49
|
"aria-label": ariaLabel,
|
|
44
50
|
"aria-labelledby": ariaLabelledBy,
|
|
@@ -71,6 +77,7 @@ function SliderClient(props) {
|
|
|
71
77
|
) + "%"
|
|
72
78
|
};
|
|
73
79
|
const visibleMarks = marksInRange(marks, min, max);
|
|
80
|
+
const accessibleLabels = { ...DEFAULT_SLIDER_LABELS, ...labels };
|
|
74
81
|
const setThumbValue = (index, proposed) => {
|
|
75
82
|
if (disabled) return;
|
|
76
83
|
if (!isRange) {
|
|
@@ -90,7 +97,9 @@ function SliderClient(props) {
|
|
|
90
97
|
};
|
|
91
98
|
const handleKeyDown = (index, event) => {
|
|
92
99
|
if (disabled || step !== null) return;
|
|
93
|
-
const
|
|
100
|
+
const horizontalKey = event.key === "ArrowRight" || event.key === "ArrowLeft";
|
|
101
|
+
const mirror = horizontalKey && orientation !== "vertical" && resolveDirection(event.currentTarget) === "rtl" ? -1 : 1;
|
|
102
|
+
const direction = (event.key === "ArrowRight" || event.key === "ArrowUp" ? 1 : event.key === "ArrowLeft" || event.key === "ArrowDown" ? -1 : 0) * mirror;
|
|
94
103
|
if (direction === 0) return;
|
|
95
104
|
event.preventDefault();
|
|
96
105
|
const currentValue = values[index];
|
|
@@ -100,7 +109,7 @@ function SliderClient(props) {
|
|
|
100
109
|
if (nextValue !== void 0) setThumbValue(index, nextValue);
|
|
101
110
|
};
|
|
102
111
|
const inputNodes = values.map((currentValue, index) => {
|
|
103
|
-
const inputLabel = isRange ? thumbLabels?.[index] ?? (index === 0 ?
|
|
112
|
+
const inputLabel = isRange ? thumbLabels?.[index] ?? (index === 0 ? accessibleLabels.minimum : accessibleLabels.maximum) : ariaLabel;
|
|
104
113
|
const inputLabelledBy = isRange ? void 0 : ariaLabelledBy;
|
|
105
114
|
return /* @__PURE__ */ jsx(
|
|
106
115
|
"input",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/slider/client/SliderClient.tsx"],"sourcesContent":["\"use client\";\n\nimport type {\n CSSProperties,\n ElementType,\n KeyboardEvent,\n ReactElement,\n SyntheticEvent,\n} from \"react\";\nimport { useEffect, useState } from \"react\";\nimport { useControllableState } from \"@gunkin/uiify/hooks\";\nimport { useRenderElement } from \"@gunkin/uiify/core/render\";\n\nimport { getSliderStops, snapSliderToStops } from \"../slider-values.js\";\nimport type { SliderClientProps, SliderClientValue, SliderMark } from \"../types.js\";\n\ntype SliderPositionStyle = CSSProperties & {\n readonly \"--uiify-slider-position\"?: string;\n readonly \"--uiify-slider-start\"?: string;\n readonly \"--uiify-slider-end\"?: string;\n readonly \"--uiify-slider-middle\"?: string;\n};\n\nfunction normalizeValue(value: SliderClientValue, min: number, max: number): SliderClientValue {\n if (typeof value === \"number\") return Math.max(min, Math.min(max, value));\n\n const first = Math.max(min, Math.min(max, value[0]));\n const second = Math.max(min, Math.min(max, value[1]));\n return first <= second ? [first, second] : [second, first];\n}\n\nfunction normalizeSelection(\n value: SliderClientValue,\n min: number,\n max: number,\n step: number | null,\n stops: readonly number[],\n): SliderClientValue {\n const normalized = normalizeValue(value, min, max);\n if (step !== null) return normalized;\n if (typeof normalized === \"number\") return snapSliderToStops(normalized, stops);\n\n const lowerStops = stops.filter((stop) => stop <= normalized[1]);\n const lower = snapSliderToStops(normalized[0], lowerStops);\n const upperStops = stops.filter((stop) => stop >= lower);\n return [lower, snapSliderToStops(normalized[1], upperStops)];\n}\n\nfunction position(value: number, min: number, max: number): number {\n if (max <= min) return 0;\n return Math.max(0, Math.min(100, ((value - min) / (max - min)) * 100));\n}\n\nfunction marksInRange(\n marks: readonly SliderMark[],\n min: number,\n max: number,\n): readonly SliderMark[] {\n return marks.filter(({ value }) => Number.isFinite(value) && value >= min && value <= max);\n}\n\nexport function SliderClient<TAs extends ElementType = \"div\">(\n props: SliderClientProps<TAs>,\n): ReactElement | null {\n const {\n as,\n render,\n value: controlledValue,\n defaultValue,\n onValueChange,\n min = 0,\n max = 100,\n step = 1,\n disabled = false,\n orientation = \"horizontal\",\n marks = [],\n thumbLabels,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n ...consumerProps\n } = props as SliderClientProps<\"div\">;\n\n const stops = getSliderStops(min, max, marks);\n const initialValue = normalizeSelection(defaultValue ?? min, min, max, step, stops);\n const safeControlledValue =\n controlledValue === undefined\n ? undefined\n : normalizeSelection(controlledValue, min, max, step, stops);\n const [value, setValue] = useControllableState<SliderClientValue>({\n defaultValue: initialValue,\n onChange: onValueChange,\n value: safeControlledValue,\n });\n const [enhanced, setEnhanced] = useState(false);\n useEffect(() => setEnhanced(true), []);\n\n const normalizedValue = normalizeValue(value, min, max);\n const values: readonly number[] =\n typeof normalizedValue === \"number\"\n ? [normalizedValue]\n : [normalizedValue[0], normalizedValue[1]];\n const isRange = values.length === 2;\n const consumerStyle = \"style\" in consumerProps ? consumerProps.style : undefined;\n const consumerRole = \"role\" in consumerProps ? consumerProps.role : undefined;\n const positionStyles: readonly SliderPositionStyle[] = values.map((currentValue) => ({\n \"--uiify-slider-position\": String(position(currentValue, min, max)) + \"%\",\n }));\n const rootStyle: SliderPositionStyle = {\n ...consumerStyle,\n \"--uiify-slider-start\": String(position(values[0]!, min, max)) + \"%\",\n \"--uiify-slider-end\": String(position(values[values.length - 1]!, min, max)) + \"%\",\n \"--uiify-slider-middle\":\n String(\n (position(values[0]!, min, max) + position(values[values.length - 1]!, min, max)) / 2,\n ) + \"%\",\n };\n const visibleMarks = marksInRange(marks, min, max);\n\n const setThumbValue = (index: number, proposed: number): void => {\n if (disabled) return;\n\n if (!isRange) {\n const next = step === null ? snapSliderToStops(proposed, stops) : proposed;\n setValue(next);\n return;\n }\n\n const lower = index === 0 ? min : values[0]!;\n const upper = index === 0 ? values[1]! : max;\n const availableStops = stops.filter((stop) => stop >= lower && stop <= upper);\n const snapped = step === null ? snapSliderToStops(proposed, availableStops) : proposed;\n const nextValue =\n index === 0\n ? ([Math.min(snapped, values[1]!), values[1]!] as const)\n : ([values[0]!, Math.max(snapped, values[0]!)] as const);\n setValue(nextValue);\n };\n\n const handleChange = (index: number, event: SyntheticEvent<HTMLInputElement>): void => {\n setThumbValue(index, event.currentTarget.valueAsNumber);\n };\n\n const handleKeyDown = (index: number, event: KeyboardEvent<HTMLInputElement>): void => {\n if (disabled || step !== null) return;\n\n const direction =\n event.key === \"ArrowRight\" || event.key === \"ArrowUp\"\n ? 1\n : event.key === \"ArrowLeft\" || event.key === \"ArrowDown\"\n ? -1\n : 0;\n if (direction === 0) return;\n\n event.preventDefault();\n const currentValue = values[index]!;\n const availableStops = isRange\n ? stops.filter((stop) => (index === 0 ? stop <= values[1]! : stop >= values[0]!))\n : stops;\n const currentIndex = availableStops.indexOf(currentValue);\n const nextValue = availableStops[currentIndex + direction];\n if (nextValue !== undefined) setThumbValue(index, nextValue);\n };\n\n const inputNodes = values.map((currentValue, index) => {\n const inputLabel = isRange\n ? (thumbLabels?.[index] ?? (index === 0 ? \"Minimum value\" : \"Maximum value\"))\n : ariaLabel;\n const inputLabelledBy = isRange ? undefined : ariaLabelledBy;\n\n return (\n <input\n key={index}\n type=\"range\"\n min={min}\n max={max}\n step={step === null ? \"any\" : step}\n value={currentValue}\n disabled={disabled}\n aria-label={inputLabel}\n aria-labelledby={inputLabelledBy}\n aria-orientation={orientation}\n data-part=\"thumb\"\n data-state={String(currentValue)}\n data-orientation={orientation}\n data-disabled={disabled ? \"\" : undefined}\n onChange={(event) => handleChange(index, event)}\n onKeyDown={(event) => handleKeyDown(index, event)}\n />\n );\n });\n\n return useRenderElement({\n as,\n defaultTag: \"div\",\n props: {\n ...consumerProps,\n role: isRange ? \"group\" : consumerRole,\n \"aria-label\": isRange ? ariaLabel : undefined,\n \"aria-labelledby\": isRange ? ariaLabelledBy : undefined,\n \"data-uiify-slider-client\": \"\",\n \"data-part\": \"root\",\n \"data-range\": isRange ? \"\" : undefined,\n \"data-state\": isRange ? \"range\" : String(values[0]),\n \"data-orientation\": orientation,\n \"data-disabled\": disabled ? \"\" : undefined,\n \"data-enhanced\": enhanced ? \"\" : undefined,\n style: rootStyle,\n children: (\n <>\n <div data-part=\"track\" aria-hidden=\"true\">\n <span data-part=\"range\" />\n {visibleMarks.map((mark) => (\n <span\n key={mark.value}\n data-part=\"mark\"\n style={\n {\n \"--uiify-slider-position\": String(position(mark.value, min, max)) + \"%\",\n } as SliderPositionStyle\n }\n >\n {mark.label}\n </span>\n ))}\n {positionStyles.map((style, index) => (\n <span key={index} data-part=\"visual-thumb\" style={style} />\n ))}\n </div>\n {inputNodes}\n </>\n ),\n },\n render,\n state: { disabled, orientation, value: normalizedValue },\n });\n}\n\nSliderClient.displayName = \"SliderClient\";\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/slider/client/SliderClient.tsx"],"sourcesContent":["\"use client\";\n\nimport type {\n CSSProperties,\n ElementType,\n KeyboardEvent,\n ReactElement,\n SyntheticEvent,\n} from \"react\";\nimport { useEffect, useState } from \"react\";\nimport { useControllableState } from \"@gunkin/uiify/hooks\";\nimport { useRenderElement } from \"@gunkin/uiify/core/render\";\nimport { resolveDirection } from \"@gunkin/uiify/core/text-direction\";\n\nimport { getSliderStops, snapSliderToStops } from \"../slider-values.js\";\nimport type { SliderClientProps, SliderClientValue, SliderMark } from \"../types.js\";\n\nconst DEFAULT_SLIDER_LABELS = {\n minimum: \"Minimum value\",\n maximum: \"Maximum value\",\n} as const;\n\ntype SliderPositionStyle = CSSProperties & {\n readonly \"--uiify-slider-position\"?: string;\n readonly \"--uiify-slider-start\"?: string;\n readonly \"--uiify-slider-end\"?: string;\n readonly \"--uiify-slider-middle\"?: string;\n};\n\nfunction normalizeValue(value: SliderClientValue, min: number, max: number): SliderClientValue {\n if (typeof value === \"number\") return Math.max(min, Math.min(max, value));\n\n const first = Math.max(min, Math.min(max, value[0]));\n const second = Math.max(min, Math.min(max, value[1]));\n return first <= second ? [first, second] : [second, first];\n}\n\nfunction normalizeSelection(\n value: SliderClientValue,\n min: number,\n max: number,\n step: number | null,\n stops: readonly number[],\n): SliderClientValue {\n const normalized = normalizeValue(value, min, max);\n if (step !== null) return normalized;\n if (typeof normalized === \"number\") return snapSliderToStops(normalized, stops);\n\n const lowerStops = stops.filter((stop) => stop <= normalized[1]);\n const lower = snapSliderToStops(normalized[0], lowerStops);\n const upperStops = stops.filter((stop) => stop >= lower);\n return [lower, snapSliderToStops(normalized[1], upperStops)];\n}\n\nfunction position(value: number, min: number, max: number): number {\n if (max <= min) return 0;\n return Math.max(0, Math.min(100, ((value - min) / (max - min)) * 100));\n}\n\nfunction marksInRange(\n marks: readonly SliderMark[],\n min: number,\n max: number,\n): readonly SliderMark[] {\n return marks.filter(({ value }) => Number.isFinite(value) && value >= min && value <= max);\n}\n\nexport function SliderClient<TAs extends ElementType = \"div\">(\n props: SliderClientProps<TAs>,\n): ReactElement | null {\n const {\n as,\n render,\n value: controlledValue,\n defaultValue,\n onValueChange,\n min = 0,\n max = 100,\n step = 1,\n disabled = false,\n orientation = \"horizontal\",\n marks = [],\n labels,\n thumbLabels,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n ...consumerProps\n } = props as SliderClientProps<\"div\">;\n\n const stops = getSliderStops(min, max, marks);\n const initialValue = normalizeSelection(defaultValue ?? min, min, max, step, stops);\n const safeControlledValue =\n controlledValue === undefined\n ? undefined\n : normalizeSelection(controlledValue, min, max, step, stops);\n const [value, setValue] = useControllableState<SliderClientValue>({\n defaultValue: initialValue,\n onChange: onValueChange,\n value: safeControlledValue,\n });\n const [enhanced, setEnhanced] = useState(false);\n useEffect(() => setEnhanced(true), []);\n\n const normalizedValue = normalizeValue(value, min, max);\n const values: readonly number[] =\n typeof normalizedValue === \"number\"\n ? [normalizedValue]\n : [normalizedValue[0], normalizedValue[1]];\n const isRange = values.length === 2;\n const consumerStyle = \"style\" in consumerProps ? consumerProps.style : undefined;\n const consumerRole = \"role\" in consumerProps ? consumerProps.role : undefined;\n const positionStyles: readonly SliderPositionStyle[] = values.map((currentValue) => ({\n \"--uiify-slider-position\": String(position(currentValue, min, max)) + \"%\",\n }));\n const rootStyle: SliderPositionStyle = {\n ...consumerStyle,\n \"--uiify-slider-start\": String(position(values[0]!, min, max)) + \"%\",\n \"--uiify-slider-end\": String(position(values[values.length - 1]!, min, max)) + \"%\",\n \"--uiify-slider-middle\":\n String(\n (position(values[0]!, min, max) + position(values[values.length - 1]!, min, max)) / 2,\n ) + \"%\",\n };\n const visibleMarks = marksInRange(marks, min, max);\n const accessibleLabels = { ...DEFAULT_SLIDER_LABELS, ...labels };\n\n const setThumbValue = (index: number, proposed: number): void => {\n if (disabled) return;\n\n if (!isRange) {\n const next = step === null ? snapSliderToStops(proposed, stops) : proposed;\n setValue(next);\n return;\n }\n\n const lower = index === 0 ? min : values[0]!;\n const upper = index === 0 ? values[1]! : max;\n const availableStops = stops.filter((stop) => stop >= lower && stop <= upper);\n const snapped = step === null ? snapSliderToStops(proposed, availableStops) : proposed;\n const nextValue =\n index === 0\n ? ([Math.min(snapped, values[1]!), values[1]!] as const)\n : ([values[0]!, Math.max(snapped, values[0]!)] as const);\n setValue(nextValue);\n };\n\n const handleChange = (index: number, event: SyntheticEvent<HTMLInputElement>): void => {\n setThumbValue(index, event.currentTarget.valueAsNumber);\n };\n\n const handleKeyDown = (index: number, event: KeyboardEvent<HTMLInputElement>): void => {\n if (disabled || step !== null) return;\n\n const horizontalKey = event.key === \"ArrowRight\" || event.key === \"ArrowLeft\";\n const mirror =\n horizontalKey && orientation !== \"vertical\" && resolveDirection(event.currentTarget) === \"rtl\"\n ? -1\n : 1;\n const direction =\n (event.key === \"ArrowRight\" || event.key === \"ArrowUp\"\n ? 1\n : event.key === \"ArrowLeft\" || event.key === \"ArrowDown\"\n ? -1\n : 0) * mirror;\n if (direction === 0) return;\n\n event.preventDefault();\n const currentValue = values[index]!;\n const availableStops = isRange\n ? stops.filter((stop) => (index === 0 ? stop <= values[1]! : stop >= values[0]!))\n : stops;\n const currentIndex = availableStops.indexOf(currentValue);\n const nextValue = availableStops[currentIndex + direction];\n if (nextValue !== undefined) setThumbValue(index, nextValue);\n };\n\n const inputNodes = values.map((currentValue, index) => {\n const inputLabel = isRange\n ? (thumbLabels?.[index] ??\n (index === 0 ? accessibleLabels.minimum : accessibleLabels.maximum))\n : ariaLabel;\n const inputLabelledBy = isRange ? undefined : ariaLabelledBy;\n\n return (\n <input\n key={index}\n type=\"range\"\n min={min}\n max={max}\n step={step === null ? \"any\" : step}\n value={currentValue}\n disabled={disabled}\n aria-label={inputLabel}\n aria-labelledby={inputLabelledBy}\n aria-orientation={orientation}\n data-part=\"thumb\"\n data-state={String(currentValue)}\n data-orientation={orientation}\n data-disabled={disabled ? \"\" : undefined}\n onChange={(event) => handleChange(index, event)}\n onKeyDown={(event) => handleKeyDown(index, event)}\n />\n );\n });\n\n return useRenderElement({\n as,\n defaultTag: \"div\",\n props: {\n ...consumerProps,\n role: isRange ? \"group\" : consumerRole,\n \"aria-label\": isRange ? ariaLabel : undefined,\n \"aria-labelledby\": isRange ? ariaLabelledBy : undefined,\n \"data-uiify-slider-client\": \"\",\n \"data-part\": \"root\",\n \"data-range\": isRange ? \"\" : undefined,\n \"data-state\": isRange ? \"range\" : String(values[0]),\n \"data-orientation\": orientation,\n \"data-disabled\": disabled ? \"\" : undefined,\n \"data-enhanced\": enhanced ? \"\" : undefined,\n style: rootStyle,\n children: (\n <>\n <div data-part=\"track\" aria-hidden=\"true\">\n <span data-part=\"range\" />\n {visibleMarks.map((mark) => (\n <span\n key={mark.value}\n data-part=\"mark\"\n style={\n {\n \"--uiify-slider-position\": String(position(mark.value, min, max)) + \"%\",\n } as SliderPositionStyle\n }\n >\n {mark.label}\n </span>\n ))}\n {positionStyles.map((style, index) => (\n <span key={index} data-part=\"visual-thumb\" style={style} />\n ))}\n </div>\n {inputNodes}\n </>\n ),\n },\n render,\n state: { disabled, orientation, value: normalizedValue },\n });\n}\n\nSliderClient.displayName = \"SliderClient\";\n"],"mappings":"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","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/slider/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/slider/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/slider/index.ts"],"sourcesContent":["export { Slider } from \"./Slider.js\";\nexport type { SliderOwnProps, SliderProps } from \"./types.js\";\n"],"mappings":"AAAA,SAAS,cAAc;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/slider/index.ts"],"sourcesContent":["export { Slider } from \"./Slider.js\";\nexport type { SliderLabels, SliderOwnProps, SliderProps } from \"./types.js\";\n"],"mappings":"AAAA,SAAS,cAAc;","names":[]}
|
|
@@ -24,10 +24,15 @@ export interface SliderClientOwnProps {
|
|
|
24
24
|
readonly disabled?: boolean;
|
|
25
25
|
readonly orientation?: "horizontal" | "vertical";
|
|
26
26
|
readonly marks?: readonly SliderMark[];
|
|
27
|
+
readonly labels?: Partial<SliderLabels>;
|
|
27
28
|
readonly thumbLabels?: readonly [string, string];
|
|
28
29
|
readonly "aria-label"?: string;
|
|
29
30
|
readonly "aria-labelledby"?: string;
|
|
30
31
|
}
|
|
32
|
+
export interface SliderLabels {
|
|
33
|
+
readonly minimum: string;
|
|
34
|
+
readonly maximum: string;
|
|
35
|
+
}
|
|
31
36
|
export interface SliderClientRenderState {
|
|
32
37
|
readonly disabled: boolean;
|
|
33
38
|
readonly orientation: "horizontal" | "vertical";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/slider/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEnE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,iBAAiB,CAAC;IAC1C,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC5D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACjD,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,YAAY,GAAG,UAAU,CAAC;IAChD,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;CACnC;AAED,MAAM,MAAM,iBAAiB,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,IAAI,eAAe,CAC9E,GAAG,EACH,oBAAoB,EACpB,uBAAuB,EACvB,cAAc,CACf,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,GAAG,SAAS,WAAW,GAAG,OAAO,IAAI,eAAe,CAC1E,GAAG,EACH,cAAc,EACd,cAAc,EACd,gBAAgB,CACjB,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/slider/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEnE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,iBAAiB,CAAC;IAC1C,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC5D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACjD,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACxC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,YAAY,GAAG,UAAU,CAAC;IAChD,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;CACnC;AAED,MAAM,MAAM,iBAAiB,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,IAAI,eAAe,CAC9E,GAAG,EACH,oBAAoB,EACpB,uBAAuB,EACvB,cAAc,CACf,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,GAAG,SAAS,WAAW,GAAG,OAAO,IAAI,eAAe,CAC1E,GAAG,EACH,cAAc,EACd,cAAc,EACd,gBAAgB,CACjB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Spinner.d.ts","sourceRoot":"","sources":["../../../src/components/spinner/Spinner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAGvD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"Spinner.d.ts","sourceRoot":"","sources":["../../../src/components/spinner/Spinner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAGvD,OAAO,KAAK,EAAkC,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/E,wBAAgB,OAAO,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,EACrD,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,GACvB,YAAY,GAAG,IAAI,CAwCrB;yBA1Ce,OAAO"}
|
|
@@ -1,24 +1,27 @@
|
|
|
1
1
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useRenderElement } from "@gunkin/uiify/core/render";
|
|
3
|
+
const DEFAULT_SPINNER_LABELS = { loading: "Loading" };
|
|
3
4
|
function Spinner(props) {
|
|
4
5
|
const {
|
|
5
6
|
as,
|
|
6
7
|
align,
|
|
7
8
|
render,
|
|
8
9
|
delay = 0,
|
|
9
|
-
label
|
|
10
|
+
label,
|
|
11
|
+
labels,
|
|
10
12
|
showLabel = false,
|
|
11
13
|
size = "md",
|
|
12
14
|
children,
|
|
13
15
|
...consumerProps
|
|
14
16
|
} = props;
|
|
15
17
|
const visible = delay === 0;
|
|
18
|
+
const resolvedLabel = label ?? labels?.loading ?? DEFAULT_SPINNER_LABELS.loading;
|
|
16
19
|
return useRenderElement({
|
|
17
20
|
as,
|
|
18
21
|
defaultTag: "div",
|
|
19
22
|
props: {
|
|
20
23
|
...consumerProps,
|
|
21
|
-
"aria-label":
|
|
24
|
+
"aria-label": resolvedLabel,
|
|
22
25
|
"aria-live": "polite",
|
|
23
26
|
"data-align": align,
|
|
24
27
|
"data-delay": delay > 0 ? `${delay}ms` : void 0,
|
|
@@ -27,7 +30,7 @@ function Spinner(props) {
|
|
|
27
30
|
"data-uiify-spinner": "",
|
|
28
31
|
role: "status",
|
|
29
32
|
children: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
30
|
-
showLabel ? /* @__PURE__ */ jsx("span", { "data-part": "label", children:
|
|
33
|
+
showLabel ? /* @__PURE__ */ jsx("span", { "data-part": "label", children: resolvedLabel }) : null,
|
|
31
34
|
children
|
|
32
35
|
] })
|
|
33
36
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/spinner/Spinner.tsx"],"sourcesContent":["import type { ElementType, ReactElement } from \"react\";\nimport { useRenderElement } from \"@gunkin/uiify/core/render\";\nimport type { PolymorphicProps } from \"@gunkin/uiify/core/render\";\nimport type { SpinnerOwnProps, SpinnerProps } from \"./types.js\";\n\nexport function Spinner<TAs extends ElementType = \"div\">(\n props: SpinnerProps<TAs>,\n): ReactElement | null {\n const {\n as,\n align,\n render,\n delay = 0,\n label
|
|
1
|
+
{"version":3,"sources":["../../../src/components/spinner/Spinner.tsx"],"sourcesContent":["import type { ElementType, ReactElement } from \"react\";\nimport { useRenderElement } from \"@gunkin/uiify/core/render\";\nimport type { PolymorphicProps } from \"@gunkin/uiify/core/render\";\nimport type { SpinnerLabels, SpinnerOwnProps, SpinnerProps } from \"./types.js\";\n\nconst DEFAULT_SPINNER_LABELS: SpinnerLabels = { loading: \"Loading\" };\n\nexport function Spinner<TAs extends ElementType = \"div\">(\n props: SpinnerProps<TAs>,\n): ReactElement | null {\n const {\n as,\n align,\n render,\n delay = 0,\n label,\n labels,\n showLabel = false,\n size = \"md\",\n children,\n ...consumerProps\n } = props as PolymorphicProps<\"div\", SpinnerOwnProps>;\n\n const visible = delay === 0;\n const resolvedLabel = label ?? labels?.loading ?? DEFAULT_SPINNER_LABELS.loading;\n\n return useRenderElement({\n as,\n defaultTag: \"div\",\n props: {\n ...consumerProps,\n \"aria-label\": resolvedLabel,\n \"aria-live\": \"polite\",\n \"data-align\": align,\n \"data-delay\": delay > 0 ? `${delay}ms` : undefined,\n \"data-size\": size,\n \"data-state\": visible ? \"visible\" : \"delayed\",\n \"data-uiify-spinner\": \"\",\n role: \"status\",\n children: (\n <>\n {showLabel ? <span data-part=\"label\">{resolvedLabel}</span> : null}\n {children}\n </>\n ),\n },\n render,\n state: { visible },\n });\n}\nSpinner.displayName = \"Spinner\";\n"],"mappings":"AAwCQ,mBACe,KADf;AAvCR,SAAS,wBAAwB;AAIjC,MAAM,yBAAwC,EAAE,SAAS,UAAU;AAE5D,SAAS,QACd,OACqB;AACrB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ,OAAO;AAAA,IACP;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,UAAU,UAAU;AAC1B,QAAM,gBAAgB,SAAS,QAAQ,WAAW,uBAAuB;AAEzE,SAAO,iBAAiB;AAAA,IACtB;AAAA,IACA,YAAY;AAAA,IACZ,OAAO;AAAA,MACL,GAAG;AAAA,MACH,cAAc;AAAA,MACd,aAAa;AAAA,MACb,cAAc;AAAA,MACd,cAAc,QAAQ,IAAI,GAAG,KAAK,OAAO;AAAA,MACzC,aAAa;AAAA,MACb,cAAc,UAAU,YAAY;AAAA,MACpC,sBAAsB;AAAA,MACtB,MAAM;AAAA,MACN,UACE,iCACG;AAAA,oBAAY,oBAAC,UAAK,aAAU,SAAS,yBAAc,IAAU;AAAA,QAC7D;AAAA,SACH;AAAA,IAEJ;AAAA,IACA;AAAA,IACA,OAAO,EAAE,QAAQ;AAAA,EACnB,CAAC;AACH;AACA,QAAQ,cAAc;","names":[]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { Spinner } from "./Spinner.js";
|
|
2
|
-
export type { SpinnerAlign, SpinnerOwnProps, SpinnerProps, SpinnerSize } from "./types.js";
|
|
2
|
+
export type { SpinnerAlign, SpinnerLabels, SpinnerOwnProps, SpinnerProps, SpinnerSize, } from "./types.js";
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/spinner/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/spinner/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EACV,YAAY,EACZ,aAAa,EACb,eAAe,EACf,YAAY,EACZ,WAAW,GACZ,MAAM,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/spinner/index.ts"],"sourcesContent":["export { Spinner } from \"./Spinner.js\";\nexport type {
|
|
1
|
+
{"version":3,"sources":["../../../src/components/spinner/index.ts"],"sourcesContent":["export { Spinner } from \"./Spinner.js\";\nexport type {\n SpinnerAlign,\n SpinnerLabels,\n SpinnerOwnProps,\n SpinnerProps,\n SpinnerSize,\n} from \"./types.js\";\n"],"mappings":"AAAA,SAAS,eAAe;","names":[]}
|
|
@@ -2,11 +2,15 @@ import type { ElementType, ReactNode } from "react";
|
|
|
2
2
|
import type { RenderableProps } from "@gunkin/uiify/core/render";
|
|
3
3
|
export type SpinnerAlign = "center" | "fixed" | "absolute";
|
|
4
4
|
export type SpinnerSize = "sm" | "md" | "lg";
|
|
5
|
+
export interface SpinnerLabels {
|
|
6
|
+
readonly loading: string;
|
|
7
|
+
}
|
|
5
8
|
export interface SpinnerOwnProps {
|
|
6
9
|
readonly align?: SpinnerAlign;
|
|
7
10
|
readonly children?: ReactNode;
|
|
8
11
|
readonly delay?: number;
|
|
9
12
|
readonly label?: string;
|
|
13
|
+
readonly labels?: Partial<SpinnerLabels>;
|
|
10
14
|
readonly showLabel?: boolean;
|
|
11
15
|
readonly size?: SpinnerSize;
|
|
12
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/spinner/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;AAC3D,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE7C,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC;CAC7B;AAED,MAAM,MAAM,YAAY,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,IAAI,eAAe,CACzE,GAAG,EACH,eAAe,EACf;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,EACpB,WAAW,CACZ,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/spinner/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;AAC3D,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE7C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACzC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC;CAC7B;AAED,MAAM,MAAM,YAAY,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,IAAI,eAAe,CACzE,GAAG,EACH,eAAe,EACf;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,EACpB,WAAW,CACZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TagsInput.d.ts","sourceRoot":"","sources":["../../../src/components/tags-input/TagsInput.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,WAAW,EAAiB,YAAY,EAAkB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"TagsInput.d.ts","sourceRoot":"","sources":["../../../src/components/tags-input/TagsInput.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,WAAW,EAAiB,YAAY,EAAkB,MAAM,OAAO,CAAC;AAQtF,OAAO,KAAK,EAGV,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,0BAA0B,EAC3B,MAAM,YAAY,CAAC;AAKpB,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,YAAY,GAAG,IAAI,CA+F5E;yBA/Fe,aAAa;;;AAkG7B,wBAAgB,cAAc,CAAC,GAAG,SAAS,WAAW,GAAG,OAAO,EAC9D,KAAK,EAAE,mBAAmB,CAAC,GAAG,CAAC,GAC9B,YAAY,GAAG,IAAI,CA6ErB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,GAAG,IAAI,CA+B/E;yBA/Be,aAAa;;;AAkC7B,wBAAgB,YAAY,CAAC,GAAG,SAAS,WAAW,GAAG,IAAI,EACzD,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC,GAC5B,YAAY,GAAG,IAAI,CA4CrB;yBA9Ce,YAAY;;;AAiD5B,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,0BAA0B,GAAG,YAAY,GAAG,IAAI,CAgBzF;AAED,eAAO,MAAM,SAAS;;;;;;CAMrB,CAAC"}
|
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
import { useControllableState, useId, useIsomorphicLayoutEffect } from "@gunkin/uiify/hooks";
|
|
13
13
|
import { createPartContext } from "@gunkin/uiify/core";
|
|
14
14
|
import { composeEventHandlers } from "@gunkin/uiify/core/compose-event-handlers";
|
|
15
|
+
import { isComposingKeyEvent } from "@gunkin/uiify/core/ime";
|
|
15
16
|
import { RovingFocusItem, RovingFocusRoot } from "@gunkin/uiify/core/roving-focus";
|
|
16
17
|
import { useRenderElement } from "@gunkin/uiify/core/render";
|
|
17
18
|
import { createTagsInputStore, splitTags } from "./tags-input-store.js";
|
|
@@ -127,6 +128,7 @@ function TagsInputInput(props) {
|
|
|
127
128
|
setInputValue(event.currentTarget.value);
|
|
128
129
|
};
|
|
129
130
|
const handleKeyDown = (event) => {
|
|
131
|
+
if (isComposingKeyEvent(event)) return;
|
|
130
132
|
if (event.key === "Enter" || delimiters.includes(event.key)) {
|
|
131
133
|
event.preventDefault();
|
|
132
134
|
commitInput();
|