@canvas-components/react-components 0.3.5 → 0.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +141 -58
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +8 -2
- package/dist/index.d.ts +8 -2
- package/dist/index.js +141 -58
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -6007,7 +6007,7 @@ function formatDisplayValue(value, formatter, precision, step) {
|
|
|
6007
6007
|
}
|
|
6008
6008
|
|
|
6009
6009
|
// src/components/pagination/style.css
|
|
6010
|
-
styleInject('@import "../../styles/variables.css";\n.canvas-react-pagination {\n --canvas-react-pagination-control-size: 32px;\n --canvas-react-pagination-gap: 8px;\n --canvas-react-pagination-padding-inline: 10px;\n --canvas-react-control-height: var(--canvas-react-pagination-control-size);\n display: flex;\n align-items: center;\n flex-wrap: nowrap;\n gap: var(--canvas-react-pagination-gap);\n color: var(--canvas-react-color-text);\n font-size: var(--canvas-react-font-size);\n white-space: nowrap;\n}\n.canvas-react-pagination-small {\n --canvas-react-pagination-control-size: 24px;\n --canvas-react-pagination-gap: 4px;\n --canvas-react-pagination-padding-inline: 6px;\n}\n.canvas-react-pagination-large {\n --canvas-react-pagination-control-size: 40px;\n --canvas-react-pagination-gap: 10px;\n --canvas-react-pagination-padding-inline: 14px;\n}\n.canvas-react-pagination-pages {\n display: inline-flex;\n align-items: center;\n gap: var(--canvas-react-pagination-gap);\n flex-wrap: nowrap;\n}\n.canvas-react-pagination-button,\n.canvas-react-pagination-page {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: var(--canvas-react-pagination-control-size);\n height: var(--canvas-react-pagination-control-size);\n padding: 0 var(--canvas-react-pagination-padding-inline);\n border: 1px solid var(--canvas-react-color-border);\n border-radius: var(--canvas-react-radius-sm);\n background: var(--canvas-react-color-bg);\n color: var(--canvas-react-color-text);\n cursor: pointer;\n transition:\n border-color 0.2s ease,\n color 0.2s ease,\n background-color 0.2s ease;\n}\n.canvas-react-pagination-button {\n position: relative;\n width: var(--canvas-react-pagination-control-size);\n min-width: var(--canvas-react-pagination-control-size);\n padding: 0;\n}\n.canvas-react-pagination-button:hover,\n.canvas-react-pagination-page:hover {\n border-color: var(--canvas-react-color-primary-hover);\n color: var(--canvas-react-color-primary-hover);\n}\n.canvas-react-pagination-page-active {\n border-color: var(--canvas-react-color-primary);\n background: var(--canvas-react-color-bg-active);\n color: var(--canvas-react-color-primary);\n}\n.canvas-react-pagination-button:disabled,\n.canvas-react-pagination-page:disabled {\n opacity: 0.48;\n cursor: not-allowed;\n}\n.canvas-react-pagination-ellipsis {\n color: var(--canvas-react-color-text-muted);\n}\n.canvas-react-pagination-arrow {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 7px;\n height: 7px;\n border-right: 1.5px solid var(--canvas-react-color-text-muted);\n border-bottom: 1.5px solid var(--canvas-react-color-text-muted);\n transition:\n border-color 0.18s ease,\n transform 0.18s ease,\n opacity 0.18s ease;\n}\n.canvas-react-pagination-arrow-prev {\n transform: translate(-42%, -50%) rotate(135deg);\n}\n.canvas-react-pagination-arrow-next {\n transform: translate(-58%, -50%) rotate(-45deg);\n}\n.canvas-react-pagination-button:hover .canvas-react-pagination-arrow {\n border-color: var(--canvas-react-color-primary-hover);\n}\n.canvas-react-pagination-button:disabled .canvas-react-pagination-arrow {\n opacity: 0.56;\n}\n.canvas-react-pagination-quick {\n display: inline-flex;\n align-items: center;\n gap: var(--canvas-react-pagination-gap);\n flex-wrap: nowrap;\n}\n.canvas-react-pagination-total {\n color: var(--canvas-react-color-text-muted);\n}\n');
|
|
6010
|
+
styleInject('@import "../../styles/variables.css";\n.canvas-react-pagination {\n --canvas-react-pagination-control-size: 32px;\n --canvas-react-pagination-gap: 8px;\n --canvas-react-pagination-padding-inline: 10px;\n --canvas-react-control-height: var(--canvas-react-pagination-control-size);\n display: flex;\n align-items: center;\n flex-wrap: nowrap;\n gap: var(--canvas-react-pagination-gap);\n color: var(--canvas-react-color-text);\n font-size: var(--canvas-react-font-size);\n white-space: nowrap;\n}\n.canvas-react-pagination-small {\n --canvas-react-pagination-control-size: 24px;\n --canvas-react-pagination-gap: 4px;\n --canvas-react-pagination-padding-inline: 6px;\n}\n.canvas-react-pagination > .canvas-react-select-wrap {\n flex: 0 0 auto;\n width: auto;\n height: auto;\n}\n.canvas-react-pagination > .canvas-react-select-wrap > .canvas-react-select {\n flex-shrink: 0;\n}\n.canvas-react-pagination-large {\n --canvas-react-pagination-control-size: 40px;\n --canvas-react-pagination-gap: 10px;\n --canvas-react-pagination-padding-inline: 14px;\n}\n.canvas-react-pagination-pages {\n display: inline-flex;\n align-items: center;\n gap: var(--canvas-react-pagination-gap);\n flex-wrap: nowrap;\n}\n.canvas-react-pagination-button,\n.canvas-react-pagination-page {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: var(--canvas-react-pagination-control-size);\n height: var(--canvas-react-pagination-control-size);\n padding: 0 var(--canvas-react-pagination-padding-inline);\n border: 1px solid var(--canvas-react-color-border);\n border-radius: var(--canvas-react-radius-sm);\n background: var(--canvas-react-color-bg);\n color: var(--canvas-react-color-text);\n cursor: pointer;\n transition:\n border-color 0.2s ease,\n color 0.2s ease,\n background-color 0.2s ease;\n}\n.canvas-react-pagination-button {\n position: relative;\n width: var(--canvas-react-pagination-control-size);\n min-width: var(--canvas-react-pagination-control-size);\n padding: 0;\n}\n.canvas-react-pagination-button:hover,\n.canvas-react-pagination-page:hover {\n border-color: var(--canvas-react-color-primary-hover);\n color: var(--canvas-react-color-primary-hover);\n}\n.canvas-react-pagination-page-active {\n border-color: var(--canvas-react-color-primary);\n background: var(--canvas-react-color-bg-active);\n color: var(--canvas-react-color-primary);\n}\n.canvas-react-pagination-button:disabled,\n.canvas-react-pagination-page:disabled {\n opacity: 0.48;\n cursor: not-allowed;\n}\n.canvas-react-pagination-ellipsis {\n color: var(--canvas-react-color-text-muted);\n}\n.canvas-react-pagination-arrow {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 7px;\n height: 7px;\n border-right: 1.5px solid var(--canvas-react-color-text-muted);\n border-bottom: 1.5px solid var(--canvas-react-color-text-muted);\n transition:\n border-color 0.18s ease,\n transform 0.18s ease,\n opacity 0.18s ease;\n}\n.canvas-react-pagination-arrow-prev {\n transform: translate(-42%, -50%) rotate(135deg);\n}\n.canvas-react-pagination-arrow-next {\n transform: translate(-58%, -50%) rotate(-45deg);\n}\n.canvas-react-pagination-button:hover .canvas-react-pagination-arrow {\n border-color: var(--canvas-react-color-primary-hover);\n}\n.canvas-react-pagination-button:disabled .canvas-react-pagination-arrow {\n opacity: 0.56;\n}\n.canvas-react-pagination-quick {\n display: inline-flex;\n align-items: center;\n gap: var(--canvas-react-pagination-gap);\n flex-wrap: nowrap;\n}\n.canvas-react-pagination-total {\n color: var(--canvas-react-color-text-muted);\n}\n.canvas-react-pagination button,\n.canvas-react-pagination input {\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit;\n}\n');
|
|
6011
6011
|
var DEFAULT_PAGE_SIZE_OPTIONS = [10, 20, 50, 100];
|
|
6012
6012
|
function ReactPagination(props) {
|
|
6013
6013
|
const {
|
|
@@ -6023,9 +6023,18 @@ function ReactPagination(props) {
|
|
|
6023
6023
|
showTotal,
|
|
6024
6024
|
simple,
|
|
6025
6025
|
size = "middle",
|
|
6026
|
-
total
|
|
6026
|
+
total,
|
|
6027
|
+
style: rootStyle,
|
|
6028
|
+
styles
|
|
6027
6029
|
} = props;
|
|
6030
|
+
const style = { ...rootStyle, ...styles?.root };
|
|
6028
6031
|
const [quickValue, setQuickValue] = React.useState("");
|
|
6032
|
+
const resolvedPageSizeOptions = React.useMemo(() => {
|
|
6033
|
+
if (pageSizeOptions.length === 0 || pageSizeOptions.includes(pageSize) || !Number.isSafeInteger(pageSize) || pageSize <= 0) {
|
|
6034
|
+
return pageSizeOptions;
|
|
6035
|
+
}
|
|
6036
|
+
return [...pageSizeOptions, pageSize].sort((left, right) => left - right);
|
|
6037
|
+
}, [pageSizeOptions, pageSize]);
|
|
6029
6038
|
const totalPages = Math.max(1, Math.ceil(total / pageSize));
|
|
6030
6039
|
const safeCurrent = clampPage(current, totalPages);
|
|
6031
6040
|
const range = total === 0 ? [0, 0] : [
|
|
@@ -6053,75 +6062,120 @@ function ReactPagination(props) {
|
|
|
6053
6062
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6054
6063
|
"div",
|
|
6055
6064
|
{
|
|
6065
|
+
style: {
|
|
6066
|
+
...style,
|
|
6067
|
+
...style?.borderColor ? { "--canvas-react-color-border": style.borderColor } : {},
|
|
6068
|
+
...style?.backgroundColor ? { "--canvas-react-color-bg": style.backgroundColor } : {},
|
|
6069
|
+
...style?.color ? {
|
|
6070
|
+
"--canvas-react-color-text": style.color,
|
|
6071
|
+
"--canvas-react-color-text-muted": style.color
|
|
6072
|
+
} : {},
|
|
6073
|
+
...style?.fontSize ? {
|
|
6074
|
+
"--canvas-react-font-size": typeof style.fontSize === "number" ? `${style.fontSize}px` : style.fontSize
|
|
6075
|
+
} : {}
|
|
6076
|
+
},
|
|
6056
6077
|
className: `${REACT_COMPONENT_PREFIX}-pagination ${REACT_COMPONENT_PREFIX}-pagination-${size}`,
|
|
6057
6078
|
children: [
|
|
6058
|
-
showTotal ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
6079
|
+
showTotal ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
6080
|
+
"span",
|
|
6081
|
+
{
|
|
6082
|
+
style: styles?.total,
|
|
6083
|
+
className: `${REACT_COMPONENT_PREFIX}-pagination-total`,
|
|
6084
|
+
children: showTotal(total, range)
|
|
6085
|
+
}
|
|
6086
|
+
) : null,
|
|
6059
6087
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6060
6088
|
"button",
|
|
6061
6089
|
{
|
|
6062
6090
|
type: "button",
|
|
6063
6091
|
className: `${REACT_COMPONENT_PREFIX}-pagination-button`,
|
|
6064
6092
|
"aria-label": "\u4E0A\u4E00\u9875",
|
|
6093
|
+
style: styles?.prevButton,
|
|
6065
6094
|
disabled: disabled || safeCurrent <= 1,
|
|
6066
6095
|
onClick: () => jumpToPage(safeCurrent - 1),
|
|
6067
6096
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6068
6097
|
"span",
|
|
6069
6098
|
{
|
|
6070
|
-
className: `${REACT_COMPONENT_PREFIX}-pagination-arrow ${REACT_COMPONENT_PREFIX}-pagination-arrow-prev
|
|
6099
|
+
className: `${REACT_COMPONENT_PREFIX}-pagination-arrow ${REACT_COMPONENT_PREFIX}-pagination-arrow-prev`,
|
|
6100
|
+
style: styles?.prevIcon
|
|
6071
6101
|
}
|
|
6072
6102
|
)
|
|
6073
6103
|
}
|
|
6074
6104
|
),
|
|
6075
|
-
simple ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6076
|
-
|
|
6077
|
-
|
|
6078
|
-
|
|
6079
|
-
|
|
6080
|
-
|
|
6081
|
-
|
|
6082
|
-
|
|
6083
|
-
|
|
6084
|
-
|
|
6085
|
-
|
|
6086
|
-
|
|
6087
|
-
|
|
6088
|
-
|
|
6089
|
-
|
|
6090
|
-
|
|
6091
|
-
|
|
6092
|
-
|
|
6093
|
-
|
|
6094
|
-
|
|
6095
|
-
|
|
6096
|
-
|
|
6097
|
-
|
|
6098
|
-
|
|
6099
|
-
|
|
6100
|
-
|
|
6101
|
-
|
|
6105
|
+
simple ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6106
|
+
"span",
|
|
6107
|
+
{
|
|
6108
|
+
style: styles?.pageItem,
|
|
6109
|
+
className: `${REACT_COMPONENT_PREFIX}-pagination-total`,
|
|
6110
|
+
children: [
|
|
6111
|
+
safeCurrent,
|
|
6112
|
+
" / ",
|
|
6113
|
+
totalPages
|
|
6114
|
+
]
|
|
6115
|
+
}
|
|
6116
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
6117
|
+
"div",
|
|
6118
|
+
{
|
|
6119
|
+
style: styles?.pages,
|
|
6120
|
+
className: `${REACT_COMPONENT_PREFIX}-pagination-pages`,
|
|
6121
|
+
children: pages.map(
|
|
6122
|
+
(item, index) => item === "..." ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
6123
|
+
"span",
|
|
6124
|
+
{
|
|
6125
|
+
className: `${REACT_COMPONENT_PREFIX}-pagination-ellipsis`,
|
|
6126
|
+
style: styles?.ellipsis,
|
|
6127
|
+
children: "..."
|
|
6128
|
+
},
|
|
6129
|
+
`ellipsis-${index}`
|
|
6130
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
6131
|
+
"button",
|
|
6132
|
+
{
|
|
6133
|
+
type: "button",
|
|
6134
|
+
style: {
|
|
6135
|
+
...styles?.pageItem,
|
|
6136
|
+
...item === safeCurrent ? styles?.activePageItem : void 0
|
|
6137
|
+
},
|
|
6138
|
+
className: [
|
|
6139
|
+
`${REACT_COMPONENT_PREFIX}-pagination-page`,
|
|
6140
|
+
item === safeCurrent ? `${REACT_COMPONENT_PREFIX}-pagination-page-active` : ""
|
|
6141
|
+
].filter(Boolean).join(" "),
|
|
6142
|
+
disabled,
|
|
6143
|
+
onClick: () => jumpToPage(item),
|
|
6144
|
+
children: item
|
|
6145
|
+
},
|
|
6146
|
+
item
|
|
6147
|
+
)
|
|
6148
|
+
)
|
|
6149
|
+
}
|
|
6150
|
+
),
|
|
6102
6151
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6103
6152
|
"button",
|
|
6104
6153
|
{
|
|
6105
6154
|
type: "button",
|
|
6106
6155
|
className: `${REACT_COMPONENT_PREFIX}-pagination-button`,
|
|
6107
6156
|
"aria-label": "\u4E0B\u4E00\u9875",
|
|
6157
|
+
style: styles?.nextButton,
|
|
6108
6158
|
disabled: disabled || safeCurrent >= totalPages,
|
|
6109
6159
|
onClick: () => jumpToPage(safeCurrent + 1),
|
|
6110
6160
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6111
6161
|
"span",
|
|
6112
6162
|
{
|
|
6113
|
-
className: `${REACT_COMPONENT_PREFIX}-pagination-arrow ${REACT_COMPONENT_PREFIX}-pagination-arrow-next
|
|
6163
|
+
className: `${REACT_COMPONENT_PREFIX}-pagination-arrow ${REACT_COMPONENT_PREFIX}-pagination-arrow-next`,
|
|
6164
|
+
style: styles?.nextIcon
|
|
6114
6165
|
}
|
|
6115
6166
|
)
|
|
6116
6167
|
}
|
|
6117
6168
|
),
|
|
6118
|
-
showSizeChanger &&
|
|
6169
|
+
showSizeChanger && resolvedPageSizeOptions.length ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
6119
6170
|
ReactSelect,
|
|
6120
6171
|
{
|
|
6121
6172
|
value: String(pageSize),
|
|
6122
6173
|
disabled,
|
|
6123
|
-
style: {
|
|
6124
|
-
|
|
6174
|
+
style: {
|
|
6175
|
+
width: resolvePaginationSelectWidth(size, resolvedPageSizeOptions),
|
|
6176
|
+
...styles?.sizeChanger
|
|
6177
|
+
},
|
|
6178
|
+
options: resolvedPageSizeOptions.map((size2) => ({
|
|
6125
6179
|
label: `${size2} / \u9875`,
|
|
6126
6180
|
value: size2
|
|
6127
6181
|
})),
|
|
@@ -6134,33 +6188,62 @@ function ReactPagination(props) {
|
|
|
6134
6188
|
}
|
|
6135
6189
|
}
|
|
6136
6190
|
) : null,
|
|
6137
|
-
showQuickJumper ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6138
|
-
|
|
6139
|
-
|
|
6140
|
-
|
|
6141
|
-
{
|
|
6142
|
-
|
|
6143
|
-
|
|
6144
|
-
|
|
6145
|
-
|
|
6146
|
-
|
|
6147
|
-
|
|
6148
|
-
|
|
6149
|
-
|
|
6150
|
-
|
|
6151
|
-
|
|
6152
|
-
|
|
6153
|
-
|
|
6154
|
-
|
|
6155
|
-
|
|
6156
|
-
|
|
6157
|
-
|
|
6191
|
+
showQuickJumper ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6192
|
+
"div",
|
|
6193
|
+
{
|
|
6194
|
+
style: styles?.quickJumper,
|
|
6195
|
+
className: `${REACT_COMPONENT_PREFIX}-pagination-quick`,
|
|
6196
|
+
children: [
|
|
6197
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6198
|
+
"span",
|
|
6199
|
+
{
|
|
6200
|
+
style: styles?.quickJumperText,
|
|
6201
|
+
className: `${REACT_COMPONENT_PREFIX}-pagination-total`,
|
|
6202
|
+
children: "\u8DF3\u81F3"
|
|
6203
|
+
}
|
|
6204
|
+
),
|
|
6205
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6206
|
+
ReactInput,
|
|
6207
|
+
{
|
|
6208
|
+
value: quickValue,
|
|
6209
|
+
disabled,
|
|
6210
|
+
style: {
|
|
6211
|
+
width: resolvePaginationInputWidth(size),
|
|
6212
|
+
...styles?.quickJumperInput
|
|
6213
|
+
},
|
|
6214
|
+
onChange: (event) => {
|
|
6215
|
+
setQuickValue(event.target.value.replace(/[^\d]/g, ""));
|
|
6216
|
+
},
|
|
6217
|
+
onPressEnter: () => {
|
|
6218
|
+
handleQuickCommit();
|
|
6219
|
+
},
|
|
6220
|
+
onBlur: () => {
|
|
6221
|
+
handleQuickCommit();
|
|
6222
|
+
}
|
|
6223
|
+
}
|
|
6224
|
+
),
|
|
6225
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6226
|
+
"span",
|
|
6227
|
+
{
|
|
6228
|
+
style: styles?.quickJumperText,
|
|
6229
|
+
className: `${REACT_COMPONENT_PREFIX}-pagination-total`,
|
|
6230
|
+
children: "\u9875"
|
|
6231
|
+
}
|
|
6232
|
+
)
|
|
6233
|
+
]
|
|
6234
|
+
}
|
|
6235
|
+
) : null
|
|
6158
6236
|
]
|
|
6159
6237
|
}
|
|
6160
6238
|
);
|
|
6161
6239
|
}
|
|
6162
|
-
function resolvePaginationSelectWidth(size) {
|
|
6163
|
-
|
|
6240
|
+
function resolvePaginationSelectWidth(size, pageSizeOptions) {
|
|
6241
|
+
const minWidth = size === "large" ? 120 : 108;
|
|
6242
|
+
const digits = Math.max(
|
|
6243
|
+
1,
|
|
6244
|
+
...pageSizeOptions.map((value) => String(value).length)
|
|
6245
|
+
);
|
|
6246
|
+
return `max(${minWidth}px, calc(${digits}ch + 3em + 44px))`;
|
|
6164
6247
|
}
|
|
6165
6248
|
function resolvePaginationInputWidth(size) {
|
|
6166
6249
|
return size === "small" ? 56 : size === "large" ? 80 : 72;
|