@via-profit/ui-kit 0.1.0-rc.1
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/CHANGELOG.md +0 -0
- package/CONTRIBUTING.md +0 -0
- package/LICENSE +21 -0
- package/README.md +17 -0
- package/dist/Autocomplete/index.d.ts +46 -0
- package/dist/Autocomplete/index.js +187 -0
- package/dist/Autocomplete/popper-options.d.ts +4 -0
- package/dist/Autocomplete/popper-options.js +33 -0
- package/dist/Button/ButtonAccent.d.ts +10 -0
- package/dist/Button/ButtonAccent.js +48 -0
- package/dist/Button/ButtonBase.d.ts +4 -0
- package/dist/Button/ButtonBase.js +38 -0
- package/dist/Button/ButtonStandard.d.ts +19 -0
- package/dist/Button/ButtonStandard.js +50 -0
- package/dist/Button/index.d.ts +9 -0
- package/dist/Button/index.js +27 -0
- package/dist/Calendar/CalendarBottomBar.d.ts +4 -0
- package/dist/Calendar/CalendarBottomBar.js +28 -0
- package/dist/Calendar/CalendarCell.d.ts +8 -0
- package/dist/Calendar/CalendarCell.js +61 -0
- package/dist/Calendar/CalendarDateContainer.d.ts +6 -0
- package/dist/Calendar/CalendarDateContainer.js +13 -0
- package/dist/Calendar/CalendarEmptyCell.d.ts +4 -0
- package/dist/Calendar/CalendarEmptyCell.js +29 -0
- package/dist/Calendar/CalendarMonthControl.d.ts +6 -0
- package/dist/Calendar/CalendarMonthControl.js +49 -0
- package/dist/Calendar/CalendarPaper.d.ts +6 -0
- package/dist/Calendar/CalendarPaper.js +20 -0
- package/dist/Calendar/CalendarTopBar.d.ts +4 -0
- package/dist/Calendar/CalendarTopBar.js +30 -0
- package/dist/Calendar/CalendarWeekDayLabel.d.ts +6 -0
- package/dist/Calendar/CalendarWeekDayLabel.js +17 -0
- package/dist/Calendar/CalendarWeekDaysBar.d.ts +10 -0
- package/dist/Calendar/CalendarWeekDaysBar.js +32 -0
- package/dist/Calendar/CalendarWeekRow.d.ts +6 -0
- package/dist/Calendar/CalendarWeekRow.js +14 -0
- package/dist/Calendar/IconChevronLeft.d.ts +3 -0
- package/dist/Calendar/IconChevronLeft.js +9 -0
- package/dist/Calendar/IconChevronRight.d.ts +3 -0
- package/dist/Calendar/IconChevronRight.js +9 -0
- package/dist/Calendar/index.d.ts +18 -0
- package/dist/Calendar/index.js +166 -0
- package/dist/Calendar/use-calendar.d.ts +50 -0
- package/dist/Calendar/use-calendar.js +197 -0
- package/dist/DatePicker/index.d.ts +3 -0
- package/dist/DatePicker/index.js +8 -0
- package/dist/ErrorBoundary/index.d.ts +19 -0
- package/dist/ErrorBoundary/index.js +78 -0
- package/dist/Image/index.d.ts +7 -0
- package/dist/Image/index.js +45 -0
- package/dist/MaskedField/index.d.ts +33 -0
- package/dist/MaskedField/index.js +63 -0
- package/dist/MaskedField/templates.d.ts +11 -0
- package/dist/MaskedField/templates.js +81 -0
- package/dist/MaskedField/useMasked.d.ts +18 -0
- package/dist/MaskedField/useMasked.js +96 -0
- package/dist/Menu/MenuItem.d.ts +10 -0
- package/dist/Menu/MenuItem.js +47 -0
- package/dist/Menu/MenuItemInner.d.ts +7 -0
- package/dist/Menu/MenuItemInner.js +48 -0
- package/dist/Menu/MenuWrapper.d.ts +10 -0
- package/dist/Menu/MenuWrapper.js +77 -0
- package/dist/Menu/index.d.ts +196 -0
- package/dist/Menu/index.js +452 -0
- package/dist/Menu/popper-options.d.ts +4 -0
- package/dist/Menu/popper-options.js +33 -0
- package/dist/Menu/reducer.d.ts +14 -0
- package/dist/Menu/reducer.js +19 -0
- package/dist/Modal/CloseIcon.d.ts +3 -0
- package/dist/Modal/CloseIcon.js +37 -0
- package/dist/Modal/ModalConfirmBox.d.ts +9 -0
- package/dist/Modal/ModalConfirmBox.js +148 -0
- package/dist/Modal/ModalDialog.d.ts +7 -0
- package/dist/Modal/ModalDialog.js +99 -0
- package/dist/Modal/ModalDrawer.d.ts +11 -0
- package/dist/Modal/ModalDrawer.js +150 -0
- package/dist/Modal/ModalMessageBox.d.ts +8 -0
- package/dist/Modal/ModalMessageBox.js +147 -0
- package/dist/Modal/index.d.ts +12 -0
- package/dist/Modal/index.js +54 -0
- package/dist/NoSSR/index.d.ts +7 -0
- package/dist/NoSSR/index.js +15 -0
- package/dist/PhoneField/CountryFlag.d.ts +6 -0
- package/dist/PhoneField/CountryFlag.js +52 -0
- package/dist/PhoneField/flags/BYFlag.d.ts +3 -0
- package/dist/PhoneField/flags/BYFlag.js +44 -0
- package/dist/PhoneField/flags/JPFlag.d.ts +3 -0
- package/dist/PhoneField/flags/JPFlag.js +34 -0
- package/dist/PhoneField/flags/KZFlag.d.ts +3 -0
- package/dist/PhoneField/flags/KZFlag.js +45 -0
- package/dist/PhoneField/flags/RUFlag.d.ts +3 -0
- package/dist/PhoneField/flags/RUFlag.js +32 -0
- package/dist/PhoneField/flags/UAFlag.d.ts +3 -0
- package/dist/PhoneField/flags/UAFlag.js +31 -0
- package/dist/PhoneField/flags/USFlag.d.ts +3 -0
- package/dist/PhoneField/flags/USFlag.js +34 -0
- package/dist/PhoneField/flags/UnknownFlag.d.ts +3 -0
- package/dist/PhoneField/flags/UnknownFlag.js +34 -0
- package/dist/PhoneField/index.d.ts +49 -0
- package/dist/PhoneField/index.js +82 -0
- package/dist/PhoneField/templates.d.ts +3 -0
- package/dist/PhoneField/templates.js +18 -0
- package/dist/PhoneField/usePhoneUtils.d.ts +65 -0
- package/dist/PhoneField/usePhoneUtils.js +157 -0
- package/dist/SelectBox/IconChevronDown.d.ts +3 -0
- package/dist/SelectBox/IconChevronDown.js +9 -0
- package/dist/SelectBox/SelectButton.d.ts +10 -0
- package/dist/SelectBox/SelectButton.js +80 -0
- package/dist/SelectBox/index.d.ts +40 -0
- package/dist/SelectBox/index.js +188 -0
- package/dist/SelectBox/popper-options.d.ts +4 -0
- package/dist/SelectBox/popper-options.js +33 -0
- package/dist/TextField/TextFieldContainer.d.ts +7 -0
- package/dist/TextField/TextFieldContainer.js +52 -0
- package/dist/TextField/TextFieldErrorText.d.ts +8 -0
- package/dist/TextField/TextFieldErrorText.js +75 -0
- package/dist/TextField/TextFieldIconWrapper.d.ts +8 -0
- package/dist/TextField/TextFieldIconWrapper.js +73 -0
- package/dist/TextField/TextFieldInput.d.ts +7 -0
- package/dist/TextField/TextFieldInput.js +60 -0
- package/dist/TextField/TextFieldLabel.d.ts +7 -0
- package/dist/TextField/TextFieldLabel.js +50 -0
- package/dist/TextField/TextFieldLabelAsterisk.d.ts +7 -0
- package/dist/TextField/TextFieldLabelAsterisk.js +51 -0
- package/dist/TextField/TextFieldWrapper.d.ts +14 -0
- package/dist/TextField/TextFieldWrapper.js +76 -0
- package/dist/TextField/index.d.ts +14 -0
- package/dist/TextField/index.js +93 -0
- package/dist/ThemeProvider/createTheme.d.ts +36 -0
- package/dist/ThemeProvider/createTheme.js +34 -0
- package/dist/ThemeProvider/index.d.ts +8 -0
- package/dist/ThemeProvider/index.js +12 -0
- package/dist/Typography/Base.d.ts +6 -0
- package/dist/Typography/Base.js +11 -0
- package/dist/Typography/Blockquote.d.ts +6 -0
- package/dist/Typography/Blockquote.js +23 -0
- package/dist/Typography/Del.d.ts +6 -0
- package/dist/Typography/Del.js +10 -0
- package/dist/Typography/Em.d.ts +6 -0
- package/dist/Typography/Em.js +10 -0
- package/dist/Typography/H1.d.ts +6 -0
- package/dist/Typography/H1.js +11 -0
- package/dist/Typography/H2.d.ts +6 -0
- package/dist/Typography/H2.js +11 -0
- package/dist/Typography/H3.d.ts +6 -0
- package/dist/Typography/H3.js +11 -0
- package/dist/Typography/H4.d.ts +6 -0
- package/dist/Typography/H4.js +11 -0
- package/dist/Typography/H5.d.ts +6 -0
- package/dist/Typography/H5.js +11 -0
- package/dist/Typography/List.d.ts +14 -0
- package/dist/Typography/List.js +17 -0
- package/dist/Typography/Paragraph.d.ts +6 -0
- package/dist/Typography/Paragraph.js +11 -0
- package/dist/Typography/SectionDescription.d.ts +8 -0
- package/dist/Typography/SectionDescription.js +17 -0
- package/dist/Typography/SectionTitle.d.ts +8 -0
- package/dist/Typography/SectionTitle.js +31 -0
- package/dist/Typography/Span.d.ts +6 -0
- package/dist/Typography/Span.js +10 -0
- package/dist/Typography/Strong.d.ts +6 -0
- package/dist/Typography/Strong.js +10 -0
- package/dist/Typography/U.d.ts +6 -0
- package/dist/Typography/U.js +10 -0
- package/dist/color/Color.d.ts +44 -0
- package/dist/color/Color.js +346 -0
- package/dist/color/index.d.ts +3 -0
- package/dist/color/index.js +22 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +23 -0
- package/package.json +113 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const react_1 = __importDefault(require("react"));
|
|
7
|
+
const styled_1 = __importDefault(require("@emotion/styled"));
|
|
8
|
+
const CalendarDateContainer = styled_1.default.div `
|
|
9
|
+
display: flex;
|
|
10
|
+
flex-direction: column;
|
|
11
|
+
justify-content: stretch;
|
|
12
|
+
`;
|
|
13
|
+
exports.default = react_1.default.memo(CalendarDateContainer);
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type CalendarEmptyCellProps = React.HTMLAttributes<HTMLButtonElement>;
|
|
3
|
+
declare const _default: React.MemoExoticComponent<React.ForwardRefExoticComponent<CalendarEmptyCellProps & React.RefAttributes<HTMLButtonElement>>>;
|
|
4
|
+
export default _default;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
const react_1 = __importDefault(require("react"));
|
|
18
|
+
const styled_1 = __importDefault(require("@emotion/styled"));
|
|
19
|
+
const Elem = styled_1.default.span `
|
|
20
|
+
font-size: 0.8em;
|
|
21
|
+
width: 3em;
|
|
22
|
+
height: 3em;
|
|
23
|
+
min-width: 0;
|
|
24
|
+
`;
|
|
25
|
+
const CalendarEmptyCell = (props, ref) => {
|
|
26
|
+
const { children } = props, restProps = __rest(props, ["children"]);
|
|
27
|
+
return (react_1.default.createElement(Elem, Object.assign({}, restProps, { ref: ref }), children));
|
|
28
|
+
};
|
|
29
|
+
exports.default = react_1.default.memo(react_1.default.forwardRef(CalendarEmptyCell));
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface CalendarMonthControlProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
3
|
+
readonly displayIcon: 'prev' | 'next';
|
|
4
|
+
}
|
|
5
|
+
declare const _default: React.MemoExoticComponent<React.ForwardRefExoticComponent<CalendarMonthControlProps & React.RefAttributes<HTMLButtonElement>>>;
|
|
6
|
+
export default _default;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
const react_1 = __importDefault(require("react"));
|
|
18
|
+
const styled_1 = __importDefault(require("@emotion/styled"));
|
|
19
|
+
const IconChevronLeft_1 = __importDefault(require("./IconChevronLeft"));
|
|
20
|
+
const IconChevronRight_1 = __importDefault(require("./IconChevronRight"));
|
|
21
|
+
const Btn = styled_1.default.button `
|
|
22
|
+
display: flex;
|
|
23
|
+
align-items: center;
|
|
24
|
+
justify-content: center;
|
|
25
|
+
font-size: 1em;
|
|
26
|
+
width: 2.25em;
|
|
27
|
+
height: 2.25em;
|
|
28
|
+
padding: 0;
|
|
29
|
+
margin: 0;
|
|
30
|
+
min-width: 0;
|
|
31
|
+
outline: none;
|
|
32
|
+
cursor: pointer;
|
|
33
|
+
border: 1px solid transparent;
|
|
34
|
+
background-color: ${({ theme }) => theme.colors.backgroundPrimary().toString()};
|
|
35
|
+
border-radius: ${({ theme }) => theme.shape.radiusFactor * 3}em;
|
|
36
|
+
color: ${({ theme }) => theme.colors.textPrimary().toString()};
|
|
37
|
+
&:hover {
|
|
38
|
+
background-color: ${({ theme }) => theme.colors.backgroundPrimary().darken(0.1).toString()};
|
|
39
|
+
}
|
|
40
|
+
&:focus-visible {
|
|
41
|
+
border-color: ${({ theme }) => theme.colors.accentPrimary().toString()};
|
|
42
|
+
}
|
|
43
|
+
opacity: ${({ disabled }) => (disabled ? 0.4 : 1)};
|
|
44
|
+
`;
|
|
45
|
+
const CalendarMonthControl = (props, ref) => {
|
|
46
|
+
const { displayIcon } = props, restProps = __rest(props, ["displayIcon"]);
|
|
47
|
+
return (react_1.default.createElement(Btn, Object.assign({ type: "button" }, restProps, { ref: ref }), displayIcon === 'next' ? react_1.default.createElement(IconChevronRight_1.default, null) : react_1.default.createElement(IconChevronLeft_1.default, null)));
|
|
48
|
+
};
|
|
49
|
+
exports.default = react_1.default.memo(react_1.default.forwardRef(CalendarMonthControl));
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
declare const CalendarPaper: import("@emotion/styled").StyledComponent<{
|
|
3
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
4
|
+
as?: import("react").ElementType<any> | undefined;
|
|
5
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
6
|
+
export default CalendarPaper;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const styled_1 = __importDefault(require("@emotion/styled"));
|
|
7
|
+
const CalendarPaper = styled_1.default.div `
|
|
8
|
+
position: relative;
|
|
9
|
+
display: flex;
|
|
10
|
+
flex-direction: column;
|
|
11
|
+
justify-content: stretch;
|
|
12
|
+
background-color: ${({ theme }) => theme.colors.backgroundPrimary().toString()};
|
|
13
|
+
border-radius: ${({ theme }) => theme.shape.radiusFactor * 1}em;
|
|
14
|
+
padding: 0.4em;
|
|
15
|
+
max-width: 17.6em;
|
|
16
|
+
max-height: 20.4em;
|
|
17
|
+
box-shadow: 0 4px 24px
|
|
18
|
+
${({ theme }) => theme.colors.backgroundPrimary().darken(0.5).alpha(0.6).toString()};
|
|
19
|
+
`;
|
|
20
|
+
exports.default = CalendarPaper;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
const react_1 = __importDefault(require("react"));
|
|
18
|
+
const styled_1 = __importDefault(require("@emotion/styled"));
|
|
19
|
+
const Container = styled_1.default.div `
|
|
20
|
+
display: flex;
|
|
21
|
+
justify-content: space-between;
|
|
22
|
+
align-items: center;
|
|
23
|
+
margin-bottom: 0.5em;
|
|
24
|
+
`;
|
|
25
|
+
const CalendarTopBar = (props, ref) => {
|
|
26
|
+
const { children } = props, restProps = __rest(props, ["children"]);
|
|
27
|
+
return (react_1.default.createElement(Container, Object.assign({}, restProps, { ref: ref }),
|
|
28
|
+
react_1.default.createElement(react_1.default.Fragment, null, children)));
|
|
29
|
+
};
|
|
30
|
+
exports.default = react_1.default.memo(react_1.default.forwardRef(CalendarTopBar));
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
declare const _default: React.NamedExoticComponent<{
|
|
3
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
4
|
+
as?: React.ElementType<any> | undefined;
|
|
5
|
+
} & React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement>>;
|
|
6
|
+
export default _default;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const react_1 = __importDefault(require("react"));
|
|
7
|
+
const styled_1 = __importDefault(require("@emotion/styled"));
|
|
8
|
+
const CalendarWeekDayLabel = styled_1.default.div `
|
|
9
|
+
text-align: center;
|
|
10
|
+
font-weight: 200;
|
|
11
|
+
font-size: 0.8em;
|
|
12
|
+
user-select: none;
|
|
13
|
+
width: 3em;
|
|
14
|
+
height: 3em;
|
|
15
|
+
color: ${({ theme }) => theme.colors.textSecondary().toString()};
|
|
16
|
+
`;
|
|
17
|
+
exports.default = react_1.default.memo(CalendarWeekDayLabel);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { Week } from './use-calendar';
|
|
3
|
+
export type WeekNameLabelFormat = 'short' | 'long' | 'narrow';
|
|
4
|
+
export interface CalendarTopBarProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
5
|
+
readonly week: Week;
|
|
6
|
+
readonly format: WeekNameLabelFormat;
|
|
7
|
+
readonly locale?: string;
|
|
8
|
+
}
|
|
9
|
+
declare const _default: React.MemoExoticComponent<React.ForwardRefExoticComponent<CalendarTopBarProps & React.RefAttributes<HTMLDivElement>>>;
|
|
10
|
+
export default _default;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
const react_1 = __importDefault(require("react"));
|
|
18
|
+
const styled_1 = __importDefault(require("@emotion/styled"));
|
|
19
|
+
const CalendarWeekDayLabel_1 = __importDefault(require("./CalendarWeekDayLabel"));
|
|
20
|
+
const Container = styled_1.default.div `
|
|
21
|
+
display: flex;
|
|
22
|
+
justify-content: space-between;
|
|
23
|
+
align-items: center;
|
|
24
|
+
`;
|
|
25
|
+
const CalendarWeekDaysBar = (props, ref) => {
|
|
26
|
+
const { locale, week, format } = props, restProps = __rest(props, ["locale", "week", "format"]);
|
|
27
|
+
const weekDayLabels = react_1.default.useMemo(() => week.days.map(day => new Intl.DateTimeFormat(locale, {
|
|
28
|
+
weekday: format,
|
|
29
|
+
}).format(day.date)), [format, locale, week]);
|
|
30
|
+
return (react_1.default.createElement(Container, Object.assign({}, restProps, { ref: ref }), weekDayLabels.map(label => (react_1.default.createElement(CalendarWeekDayLabel_1.default, { key: label }, label)))));
|
|
31
|
+
};
|
|
32
|
+
exports.default = react_1.default.memo(react_1.default.forwardRef(CalendarWeekDaysBar));
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
declare const _default: React.NamedExoticComponent<{
|
|
3
|
+
theme?: import("@emotion/react").Theme | undefined;
|
|
4
|
+
as?: React.ElementType<any> | undefined;
|
|
5
|
+
} & React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement>>;
|
|
6
|
+
export default _default;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const react_1 = __importDefault(require("react"));
|
|
7
|
+
const styled_1 = __importDefault(require("@emotion/styled"));
|
|
8
|
+
const CalendarWeekRow = styled_1.default.div `
|
|
9
|
+
display: flex;
|
|
10
|
+
flex-direction: row;
|
|
11
|
+
justify-content: center;
|
|
12
|
+
align-items: stretch;
|
|
13
|
+
`;
|
|
14
|
+
exports.default = react_1.default.memo(CalendarWeekRow);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const react_1 = __importDefault(require("react"));
|
|
7
|
+
const IconChevronLeft = (props, ref) => (react_1.default.createElement("svg", Object.assign({ xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 512", width: "1em", height: "1em", ref: ref }, props),
|
|
8
|
+
react_1.default.createElement("path", { fill: "none", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 48, d: "M328 112 184 256l144 144" })));
|
|
9
|
+
exports.default = react_1.default.forwardRef(IconChevronLeft);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const react_1 = __importDefault(require("react"));
|
|
7
|
+
const IconChevronRight = (props, ref) => (react_1.default.createElement("svg", Object.assign({ xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 512", width: "1em", height: "1em", ref: ref }, props),
|
|
8
|
+
react_1.default.createElement("path", { fill: "none", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 48, d: "m184 112 144 144-144 144" })));
|
|
9
|
+
exports.default = react_1.default.forwardRef(IconChevronRight);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { WeekDayName } from './use-calendar';
|
|
3
|
+
import { WeekNameLabelFormat } from './CalendarWeekDaysBar';
|
|
4
|
+
export interface CalendarProps {
|
|
5
|
+
readonly date?: Date;
|
|
6
|
+
readonly locale?: string;
|
|
7
|
+
readonly selected?: Date[];
|
|
8
|
+
readonly onSelectDate?: (date: Date) => void;
|
|
9
|
+
readonly onDateChange?: (date: Date) => void;
|
|
10
|
+
readonly maxDate?: Date;
|
|
11
|
+
readonly minDate?: Date;
|
|
12
|
+
readonly weekStartDay?: WeekDayName;
|
|
13
|
+
readonly weekDayLabelFormat?: WeekNameLabelFormat;
|
|
14
|
+
readonly displayLeadingZero?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export * from './use-calendar';
|
|
17
|
+
declare const _default: React.NamedExoticComponent<CalendarProps>;
|
|
18
|
+
export default _default;
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
17
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
const react_1 = __importDefault(require("react"));
|
|
21
|
+
const use_calendar_1 = __importDefault(require("./use-calendar"));
|
|
22
|
+
const CalendarCell_1 = __importDefault(require("./CalendarCell"));
|
|
23
|
+
const CalendarEmptyCell_1 = __importDefault(require("./CalendarEmptyCell"));
|
|
24
|
+
const CalendarPaper_1 = __importDefault(require("./CalendarPaper"));
|
|
25
|
+
const CalendarWeekRow_1 = __importDefault(require("./CalendarWeekRow"));
|
|
26
|
+
const CalendarDateContainer_1 = __importDefault(require("./CalendarDateContainer"));
|
|
27
|
+
const CalendarTopBar_1 = __importDefault(require("./CalendarTopBar"));
|
|
28
|
+
const CalendarMonthControl_1 = __importDefault(require("./CalendarMonthControl"));
|
|
29
|
+
const CalendarWeekDaysBar_1 = __importDefault(require("./CalendarWeekDaysBar"));
|
|
30
|
+
const Menu_1 = __importDefault(require("../Menu"));
|
|
31
|
+
const ButtonBase_1 = __importDefault(require("../Button/ButtonBase"));
|
|
32
|
+
__exportStar(require("./use-calendar"), exports);
|
|
33
|
+
const Calendar = props => {
|
|
34
|
+
const { date, locale, selected, maxDate, minDate, weekStartDay, weekDayLabelFormat, displayLeadingZero, onDateChange, onSelectDate, } = props;
|
|
35
|
+
const [yearsMenuEl, setYearsMenuEl] = react_1.default.useState(null);
|
|
36
|
+
const [monthMenuEl, setMonthMenuEl] = react_1.default.useState(null);
|
|
37
|
+
const [selectedDates, setSelectedDates] = react_1.default.useState([...(selected || [])]);
|
|
38
|
+
const calendar = (0, use_calendar_1.default)({
|
|
39
|
+
weekStartDay,
|
|
40
|
+
displayLeadingZero,
|
|
41
|
+
date,
|
|
42
|
+
minDate,
|
|
43
|
+
maxDate,
|
|
44
|
+
locale,
|
|
45
|
+
});
|
|
46
|
+
const currentMonthLabel = react_1.default.useMemo(() => {
|
|
47
|
+
const intl = new Intl.DateTimeFormat(calendar.locale, {
|
|
48
|
+
month: 'long',
|
|
49
|
+
});
|
|
50
|
+
const title = intl.format(calendar.date);
|
|
51
|
+
return title.charAt(0).toUpperCase() + title.slice(1);
|
|
52
|
+
}, [calendar.date, calendar.locale]);
|
|
53
|
+
react_1.default.useEffect(() => {
|
|
54
|
+
calendar.dispatch({
|
|
55
|
+
type: 'partial',
|
|
56
|
+
payload: props,
|
|
57
|
+
});
|
|
58
|
+
}, [calendar, props]);
|
|
59
|
+
// If selected props has been changed
|
|
60
|
+
react_1.default.useEffect(() => {
|
|
61
|
+
const prev = selectedDates;
|
|
62
|
+
const next = [...(selected || [])];
|
|
63
|
+
const has1 = prev.every(prevDate => next.find(nextDate => calendar.isSameDay(prevDate, nextDate)));
|
|
64
|
+
const has2 = next.every(nextDate => prev.find(prevDate => calendar.isSameDay(nextDate, prevDate)));
|
|
65
|
+
const isEqual = has1 && has2;
|
|
66
|
+
if (!isEqual) {
|
|
67
|
+
setSelectedDates([...(selected || [])]);
|
|
68
|
+
}
|
|
69
|
+
}, [calendar, selected, selectedDates]);
|
|
70
|
+
const [year, month] = react_1.default.useMemo(() => [calendar.date.getFullYear(), calendar.date.getMonth()], [calendar.date]);
|
|
71
|
+
const handlePrevClick = react_1.default.useCallback(() => {
|
|
72
|
+
const d = new Date(year, month - 1, 1);
|
|
73
|
+
if (!calendar.isSameDay(d, calendar.date)) {
|
|
74
|
+
calendar.setDate(d);
|
|
75
|
+
if (typeof onDateChange === 'function') {
|
|
76
|
+
onDateChange(d);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}, [year, month, calendar, onDateChange]);
|
|
80
|
+
const handleNextClick = react_1.default.useCallback(() => {
|
|
81
|
+
const d = new Date(year, month + 1, 1);
|
|
82
|
+
if (!calendar.isSameDay(d, calendar.date)) {
|
|
83
|
+
calendar.setDate(d);
|
|
84
|
+
if (typeof onDateChange === 'function') {
|
|
85
|
+
onDateChange(d);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}, [year, month, calendar, onDateChange]);
|
|
89
|
+
const handleDayClick = react_1.default.useCallback((day) => () => {
|
|
90
|
+
if (typeof onSelectDate === 'function') {
|
|
91
|
+
onSelectDate(day);
|
|
92
|
+
}
|
|
93
|
+
}, [onSelectDate]);
|
|
94
|
+
const getDayLabel = react_1.default.useCallback((day) => {
|
|
95
|
+
const dateNum = day.getDate();
|
|
96
|
+
if (!calendar.displayLeadingZero) {
|
|
97
|
+
return dateNum.toString();
|
|
98
|
+
}
|
|
99
|
+
const numStr = `0${dateNum}`;
|
|
100
|
+
return numStr.substring(numStr.length - 2);
|
|
101
|
+
}, [calendar.displayLeadingZero]);
|
|
102
|
+
const years = react_1.default.useMemo(() => {
|
|
103
|
+
const y = [];
|
|
104
|
+
for (let year = calendar.minDate.getFullYear(); year >= calendar.minDate.getFullYear() && year <= calendar.maxDate.getFullYear(); year++) {
|
|
105
|
+
y.push(year);
|
|
106
|
+
}
|
|
107
|
+
return y;
|
|
108
|
+
}, [calendar.maxDate, calendar.minDate]);
|
|
109
|
+
const monthes = react_1.default.useMemo(() => {
|
|
110
|
+
const m = [];
|
|
111
|
+
const y = calendar.date.getFullYear();
|
|
112
|
+
for (let index = 0; index < 12; index++) {
|
|
113
|
+
const d = new Date(y, index, 1, 0, 0, 0);
|
|
114
|
+
if (d.getTime() > calendar.minDate.getTime() && d.getTime() < calendar.maxDate.getTime()) {
|
|
115
|
+
m.push(index);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return m;
|
|
119
|
+
}, [calendar.date, calendar.maxDate, calendar.minDate]);
|
|
120
|
+
return (react_1.default.createElement(CalendarPaper_1.default, null,
|
|
121
|
+
react_1.default.createElement(CalendarTopBar_1.default, null,
|
|
122
|
+
react_1.default.createElement(CalendarMonthControl_1.default, { displayIcon: "prev", onClick: handlePrevClick }),
|
|
123
|
+
react_1.default.createElement("span", null,
|
|
124
|
+
react_1.default.createElement(ButtonBase_1.default, { type: "button", onClick: event => setMonthMenuEl(event.currentTarget) }, currentMonthLabel),
|
|
125
|
+
react_1.default.createElement(ButtonBase_1.default, { type: "button", onClick: event => setYearsMenuEl(event.currentTarget) }, calendar.date.getFullYear()),
|
|
126
|
+
react_1.default.createElement(Menu_1.default, { value: calendar.date.getFullYear(), isOpen: Boolean(yearsMenuEl), anchorElement: yearsMenuEl, onRequestClose: () => setYearsMenuEl(null), onSelectItem: item => {
|
|
127
|
+
const newDate = new Date(calendar.date);
|
|
128
|
+
newDate.setFullYear(item);
|
|
129
|
+
newDate.setMonth(11 - 1);
|
|
130
|
+
setYearsMenuEl(null);
|
|
131
|
+
if (calendar.date.getFullYear() !== newDate.getFullYear()) {
|
|
132
|
+
calendar.setDate(newDate);
|
|
133
|
+
if (typeof onDateChange === 'function') {
|
|
134
|
+
onDateChange(newDate);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}, items: years, renderItem: item => item.item }),
|
|
138
|
+
react_1.default.createElement(Menu_1.default, { value: { value: calendar.date.getMonth(), label: 'month' }, isOpen: Boolean(monthMenuEl), anchorElement: monthMenuEl, onRequestClose: () => setMonthMenuEl(null), onSelectItem: item => {
|
|
139
|
+
const newDate = new Date(calendar.date);
|
|
140
|
+
newDate.setMonth(item.value);
|
|
141
|
+
setMonthMenuEl(null);
|
|
142
|
+
if (calendar.date.getMonth() !== newDate.getMonth()) {
|
|
143
|
+
calendar.setDate(newDate);
|
|
144
|
+
if (typeof onDateChange === 'function') {
|
|
145
|
+
onDateChange(newDate);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}, items: monthes.map(monthIndex => {
|
|
149
|
+
const intl = new Intl.DateTimeFormat(calendar.locale, {
|
|
150
|
+
month: 'long',
|
|
151
|
+
});
|
|
152
|
+
return {
|
|
153
|
+
value: monthIndex,
|
|
154
|
+
label: intl.format(new Date(calendar.date.getFullYear(), monthIndex, 1, 0, 0, 0, 0)),
|
|
155
|
+
};
|
|
156
|
+
}), renderItem: item => item.item.label })),
|
|
157
|
+
react_1.default.createElement(CalendarMonthControl_1.default, { displayIcon: "next", onClick: handleNextClick })),
|
|
158
|
+
react_1.default.createElement(CalendarWeekDaysBar_1.default, { locale: calendar.locale, week: calendar.weeks[0], format: weekDayLabelFormat || 'short' }),
|
|
159
|
+
react_1.default.createElement(CalendarDateContainer_1.default, null, calendar.weeks.map(week => (react_1.default.createElement(CalendarWeekRow_1.default, { key: week.weekNumber.toString() }, week.days.map(day => {
|
|
160
|
+
if (day.date.getMonth() === calendar.date.getMonth()) {
|
|
161
|
+
return (react_1.default.createElement(CalendarCell_1.default, { key: day.date.getTime(), isToday: day.isToday, isDisabled: day.isDisabled, isSelected: selectedDates.find(s => calendar.isSameDay(s, day.date)) !== undefined, onClick: handleDayClick(day.date) }, getDayLabel(day.date)));
|
|
162
|
+
}
|
|
163
|
+
return react_1.default.createElement(CalendarEmptyCell_1.default, { key: day.date.getTime() });
|
|
164
|
+
})))))));
|
|
165
|
+
};
|
|
166
|
+
exports.default = react_1.default.memo(Calendar);
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type WeekDayName = 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday';
|
|
3
|
+
export type Day = {
|
|
4
|
+
readonly date: Date;
|
|
5
|
+
readonly isToday: boolean;
|
|
6
|
+
readonly isDisabled: boolean;
|
|
7
|
+
};
|
|
8
|
+
export type Week = {
|
|
9
|
+
readonly weekNumber: number;
|
|
10
|
+
readonly days: Day[];
|
|
11
|
+
};
|
|
12
|
+
export interface UseCalendarProps {
|
|
13
|
+
readonly date?: Date;
|
|
14
|
+
readonly minDate?: Date;
|
|
15
|
+
readonly maxDate?: Date;
|
|
16
|
+
readonly locale?: string;
|
|
17
|
+
readonly weekStartDay?: WeekDayName;
|
|
18
|
+
readonly displayLeadingZero?: boolean;
|
|
19
|
+
}
|
|
20
|
+
type CalendarState = {
|
|
21
|
+
readonly date: Date;
|
|
22
|
+
readonly minDate: Date;
|
|
23
|
+
readonly maxDate: Date;
|
|
24
|
+
readonly locale: string;
|
|
25
|
+
readonly weekStartDay: WeekDayName;
|
|
26
|
+
readonly displayLeadingZero: boolean;
|
|
27
|
+
};
|
|
28
|
+
type CalendarActionPartial = {
|
|
29
|
+
readonly type: 'partial';
|
|
30
|
+
readonly payload: Partial<CalendarState>;
|
|
31
|
+
};
|
|
32
|
+
type CalendarActionDate = {
|
|
33
|
+
readonly type: 'date';
|
|
34
|
+
readonly payload: Date;
|
|
35
|
+
};
|
|
36
|
+
type CalendarActions = CalendarActionPartial | CalendarActionDate;
|
|
37
|
+
export declare const useCalendar: (props: UseCalendarProps) => {
|
|
38
|
+
isSameDay: (a: Date, b: Date) => boolean;
|
|
39
|
+
isToday: (dateValue: Date) => boolean;
|
|
40
|
+
setDate: (value: Date) => void;
|
|
41
|
+
dispatch: React.Dispatch<CalendarActions>;
|
|
42
|
+
minDate: Date;
|
|
43
|
+
maxDate: Date;
|
|
44
|
+
weeks: Week[];
|
|
45
|
+
weekStartDay: WeekDayName;
|
|
46
|
+
locale: string;
|
|
47
|
+
displayLeadingZero: boolean;
|
|
48
|
+
date: Date;
|
|
49
|
+
};
|
|
50
|
+
export default useCalendar;
|