react-side-sheet-pro 0.1.4 → 0.1.5

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.
@@ -67,7 +67,7 @@ var SideSheetProvider = exports.SideSheetProvider = function SideSheetProvider(_
67
67
  type: 'SET_OPEN',
68
68
  id: id
69
69
  });
70
- (_options$onOpen = options.onOpen) === null || _options$onOpen === void 0 ? void 0 : _options$onOpen.call(options, id);
70
+ (_options$onOpen = options.onOpen) === null || _options$onOpen === void 0 || _options$onOpen.call(options, id);
71
71
  }, options.animationDuration);
72
72
  return id;
73
73
  }, []);
@@ -105,7 +105,7 @@ var SideSheetProvider = exports.SideSheetProvider = function SideSheetProvider(_
105
105
  }
106
106
  return _context.abrupt("return");
107
107
  case 13:
108
- (_item$options$onClose = (_item$options = item.options).onClose) === null || _item$options$onClose === void 0 ? void 0 : _item$options$onClose.call(_item$options, item.id);
108
+ (_item$options$onClose = (_item$options = item.options).onClose) === null || _item$options$onClose === void 0 || _item$options$onClose.call(_item$options, item.id);
109
109
  case 14:
110
110
  _context.next = 4;
111
111
  break;
package/dist/index.css ADDED
@@ -0,0 +1,191 @@
1
+ .sidesheet-overlay {
2
+ opacity: 0.3;
3
+ transition: all 0.4s;
4
+ background: #000;
5
+ bottom: 0;
6
+ left: 0;
7
+ position: fixed;
8
+ right: 0;
9
+ top: 0;
10
+ visibility: visible;
11
+ z-index: 10000;
12
+ }
13
+
14
+ .sidesheet-right {
15
+ right: 0;
16
+ transform: translateX(100%);
17
+ }
18
+
19
+ .sidesheet-left {
20
+ left: 0;
21
+ transform: translateX(-100%);
22
+ }
23
+
24
+ .sidesheet-right.sidesheet-animation-open {
25
+ animation: sidesheet-open-right 240ms cubic-bezier(0, 0, 0.3, 1);
26
+ }
27
+
28
+ .sidesheet-left.sidesheet-animation-open {
29
+ animation: sidesheet-open-left 240ms cubic-bezier(0, 0, 0.3, 1);
30
+ }
31
+
32
+ .sidesheet.sidesheet-animation-open {
33
+ transform: translateX(0);
34
+ }
35
+
36
+ .sidesheet-right.sidesheet-animation-closing {
37
+ animation: sidesheet-close-right 240ms cubic-bezier(0, 0, 0.3, 1);
38
+ }
39
+
40
+ .sidesheet-left.sidesheet-animation-closing {
41
+ animation: sidesheet-close-left 240ms cubic-bezier(0, 0, 0.3, 1);
42
+ }
43
+
44
+ @keyframes sidesheet-open-right {
45
+ from {
46
+ transform: translateX(100%);
47
+ }
48
+ to {
49
+ transform: translateX(0);
50
+ }
51
+ }
52
+
53
+ @keyframes sidesheet-close-right {
54
+ from {
55
+ transform: translateX(0);
56
+ }
57
+ to {
58
+ transform: translateX(100%);
59
+ }
60
+ }
61
+
62
+ @keyframes sidesheet-open-left {
63
+ from {
64
+ transform: translateX(-100%);
65
+ }
66
+ to {
67
+ transform: translateX(0);
68
+ }
69
+ }
70
+
71
+ @keyframes sidesheet-close-left {
72
+ from {
73
+ transform: translateX(0);
74
+ }
75
+ to {
76
+ transform: translateX(-100%);
77
+ }
78
+ }
79
+
80
+ .sidesheet {
81
+ flex-direction: column;
82
+ display: flex;
83
+ flex-wrap: nowrap;
84
+ background: #f1f3f4;
85
+ bottom: 0;
86
+ right: 0;
87
+ max-width: 100%;
88
+ overflow-x: hidden;
89
+ overflow-y: auto;
90
+ position: fixed;
91
+ z-index: 10000;
92
+ top: 0;
93
+ width: 100%;
94
+ box-shadow: 0 0 10px -5px rgba(0, 0, 0, 0.2), 0 0 24px 2px rgba(0, 0, 0, 0.14),
95
+ 0 0 30px 5px rgba(0, 0, 0, 0.12);
96
+ transition: transform 0.3s ease, width 0.3s ease;
97
+ }
98
+
99
+ .sheet-white {
100
+ background: #fff;
101
+ }
102
+
103
+ .sidesheet-header .sidesheet-header-btn {
104
+ background: transparent;
105
+ border: none;
106
+ cursor: pointer;
107
+ padding: 7px;
108
+ }
109
+
110
+ .sidesheet-header {
111
+ padding: 12px;
112
+ gap: 16px;
113
+ border-bottom: 1px solid #dadce0;
114
+ background: #fff;
115
+ display: flex;
116
+ justify-content: space-between;
117
+ align-items: center;
118
+ }
119
+
120
+ .sidesheet-header svg {
121
+ width: 24px;
122
+ height: 24px;
123
+ display: block;
124
+ }
125
+
126
+ .sidesheet-header .sidesheet-header-btn {
127
+ border-radius: 50%;
128
+ height: 40px;
129
+ line-height: 40px;
130
+ align-items: center;
131
+ width: 40px;
132
+ justify-content: center;
133
+ display: flex;
134
+ opacity: 0.8;
135
+ }
136
+
137
+ .sidesheet-header .sidesheet-header-btn:hover {
138
+ opacity: 1;
139
+ }
140
+
141
+ .sidesheet-header .sidesheet-header-btn:focus {
142
+ background-color: rgba(64, 64, 64, 0.12);
143
+ }
144
+
145
+ .sidesheet-header-close:hover {
146
+ cursor: pointer;
147
+ }
148
+
149
+ .sidesheet-header-title {
150
+ font-size: 20px;
151
+ font-weight: 400;
152
+ align-items: center;
153
+ display: flex;
154
+ flex: 1 1 auto;
155
+ overflow: hidden;
156
+ text-overflow: ellipsis;
157
+ white-space: nowrap;
158
+ padding: 6px 0;
159
+ }
160
+
161
+ .sidesheet-content.sidesheet-centered {
162
+ margin: 0 auto;
163
+ max-width: 768px;
164
+ width: 100%;
165
+ }
166
+
167
+ .sidesheet-content {
168
+ flex: 1 1 auto;
169
+ overflow-y: auto;
170
+ position: relative;
171
+ }
172
+
173
+ .sidesheet-content.sidesheet-padding {
174
+ padding: 24px;
175
+ }
176
+
177
+ .sidesheet-card {
178
+ background: #fff;
179
+ border-radius: 8px;
180
+ padding: 24px;
181
+ box-shadow: 0 0 0 1px #dadce0;
182
+ }
183
+
184
+ .sidesheet-footer {
185
+ padding: 16px;
186
+ border-top: 1px solid #dadce0;
187
+ background: #fff;
188
+ display: flex;
189
+ justify-content: space-between;
190
+ align-items: center;
191
+ }
package/index.d.ts ADDED
@@ -0,0 +1,64 @@
1
+ /// <reference types="react" />
2
+ import { ReactNode } from "react";
3
+ type Sides = "left" | "right";
4
+ interface SideSheetOptions {
5
+ side: Sides;
6
+ enableOverflow: boolean;
7
+ mountStrategy: "all" | "top-only";
8
+ confirmMessage: string;
9
+ confirmCallback: (message: string) => Promise<boolean>;
10
+ }
11
+ interface SideOptions {
12
+ width?: number;
13
+ className?: string;
14
+ confirmBeforeClose?: boolean;
15
+ confirmMessage?: string | null;
16
+ confirmCallback?: ((message: string) => Promise<boolean>) | null;
17
+ closeOnOverlayClick?: boolean;
18
+ closeOnEsc?: boolean;
19
+ animationDuration?: number;
20
+ onOpen?: (id: number) => void;
21
+ onClose?: (id: number) => void;
22
+ }
23
+ interface SideElementProps {
24
+ sideId: number;
25
+ close: (id: number | null) => Promise<void>;
26
+ open: (element: SideElement, options?: SideOptions) => number;
27
+ update: (id: number, options: SideOptions) => void;
28
+ options: SideOptions;
29
+ }
30
+ type SideElement = (props: SideElementProps) => ReactNode;
31
+ interface SideStackItem {
32
+ id: number;
33
+ element: SideElement;
34
+ options: Required<SideOptions>;
35
+ state: "opening" | "open" | "closing";
36
+ }
37
+ interface SideSheetContextValue {
38
+ open: (el: SideElement, opts?: SideOptions) => number;
39
+ close: (id: number | null) => Promise<void>;
40
+ update: (id: number, opts: SideOptions) => void;
41
+ config: SideSheetOptions;
42
+ }
43
+ declare const useSideSheet: () => SideSheetContextValue;
44
+ declare const SideSheet: {
45
+ Provider: import("react").FC<{
46
+ children: import("react").ReactNode;
47
+ configuration?: Partial<SideSheetOptions> | undefined;
48
+ }>;
49
+ Header: import("react").FC<{
50
+ title: string;
51
+ onClose?: (() => void) | undefined;
52
+ actions?: import("react").ReactNode;
53
+ className?: string | undefined;
54
+ }>;
55
+ Content: import("react").FC<{
56
+ children: import("react").ReactNode;
57
+ className?: string | undefined;
58
+ }>;
59
+ Footer: import("react").FC<{
60
+ children: import("react").ReactNode;
61
+ className?: string | undefined;
62
+ }>;
63
+ };
64
+ export { useSideSheet, Sides, SideSheetOptions, SideOptions, SideElementProps, SideElement, SideStackItem, SideSheetContextValue, SideSheet };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "react-side-sheet-pro",
3
3
  "description": "A flexible React SideSheet component for displaying contextual information.",
4
- "version": "0.1.4",
4
+ "version": "0.1.5",
5
5
  "license": "MIT",
6
6
  "keywords": [
7
7
  "react",
@@ -15,6 +15,7 @@
15
15
  "files": [
16
16
  "dist",
17
17
  "src",
18
+ "index.d.ts",
18
19
  "LICENSE"
19
20
  ],
20
21
  "engines": {
@@ -24,7 +25,9 @@
24
25
  "lint": "eslint './src/**/*.{ts,tsx,js,jsx}'",
25
26
  "lint-fix": "eslint --fix './src/**/*.{ts,tsx,js,jsx}'",
26
27
  "prettier": "prettier ./src/** ./playground/src/** --write",
27
- "build": "babel --extensions \".ts,.tsx\" src --out-dir dist"
28
+ "build:js": "babel --extensions \".ts,.tsx\" src --out-dir dist",
29
+ "build:css": "cpx \"src/**/*.css\" dist",
30
+ "build": "npm run build:js && npm run build:css"
28
31
  },
29
32
  "husky": {
30
33
  "hooks": {
@@ -37,7 +40,6 @@
37
40
  "url": "https://github.com/richardDobron/react-side-sheet-pro/issues"
38
41
  },
39
42
  "dependencies": {
40
- "@babel/plugin-proposal-optional-chaining": "^7.21.0",
41
43
  "classnames": "^2.3.1",
42
44
  "react-icons": "^4"
43
45
  },
@@ -56,10 +58,10 @@
56
58
  "@types/react-dom": "^17.0.6",
57
59
  "@typescript-eslint/eslint-plugin": "^2.24.0",
58
60
  "@typescript-eslint/parser": "^2.24.0",
59
- "@wessberg/rollup-plugin-ts": "^1.2.21",
60
61
  "babel-loader": "^8.0.6",
61
62
  "babel-plugin-transform-class-properties": "^6.24.1",
62
63
  "babel-plugin-typescript-to-proptypes": "^1.3.2",
64
+ "cpx": "^1.5.0",
63
65
  "eslint": "6.6.0",
64
66
  "eslint-config-airbnb": "18.0.1",
65
67
  "eslint-config-prettier": "^6.10.0",
@@ -69,13 +71,6 @@
69
71
  "eslint-plugin-prettier": "^3.1.2",
70
72
  "eslint-plugin-react": "^7.14.3",
71
73
  "prettier": "^1.19.1",
72
- "rollup": "^1.27.0",
73
- "rollup-plugin-babel": "^4.3.3",
74
- "rollup-plugin-commonjs": "^10.1.0",
75
- "rollup-plugin-copy": "^3.4.0",
76
- "rollup-plugin-node-resolve": "^5.2.0",
77
- "rollup-plugin-replace": "^2.2.0",
78
- "rollup-plugin-terser": "^5.1.2",
79
74
  "ts-loader": "^6.2.1",
80
75
  "typescript": "^3.9.3"
81
76
  }