@knovator/pagecreator 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,7 +1,212 @@
1
- # user
1
+ <!-- Improved compatibility of back to top link: See: https://github.com/othneildrew/Best-README-Template/pull/73 -->
2
+ <a name="readme-top"></a>
2
3
 
3
- This library was generated with [Nx](https://nx.dev).
4
+ [![Contributors][contributors-shield]][contributors-url]
5
+ [![Forks][forks-shield]][forks-url]
6
+ [![Stargazers][stars-shield]][stars-url]
7
+ [![Issues][issues-shield]][issues-url]
8
+ [![MIT License][license-shield]][license-url]
4
9
 
5
- ## Running unit tests
6
10
 
7
- Run `nx test user` to execute the unit tests via [Jest](https://jestjs.io).
11
+ <!-- PROJECT LOGO -->
12
+ <br />
13
+ <div align="center">
14
+ <!-- <a href="https://github.com/knovator/pagecreator">
15
+ <img src="images/logo.png" alt="Logo" width="80" height="80">
16
+ </a> -->
17
+
18
+ <h3 align="center">@knovator/pagecreator</h3>
19
+
20
+ <p align="center">
21
+ Plug & Play functionality to Build dynamic pages on the fly
22
+ <br />
23
+ <a href="https://github.com/knovator/pagecreator"><strong>Explore the docs »</strong></a>
24
+ <br />
25
+ <br />
26
+ <a href="https://github.com/knovator/pagecreator">View Demo</a>
27
+ ·
28
+ <a href="https://github.com/knovator/pagecreator/issues">Report Bug</a>
29
+ ·
30
+ <a href="https://github.com/knovator/pagecreator/issues">Request Feature</a>
31
+ </p>
32
+ </div>
33
+
34
+
35
+
36
+ <!-- TABLE OF CONTENTS -->
37
+ <details>
38
+ <summary>Table of Contents</summary>
39
+ <ol>
40
+ <li>
41
+ <a href="#about-the-project">About The Project</a>
42
+ <ul>
43
+ <li><a href="#built-with">Built With</a></li>
44
+ </ul>
45
+ </li>
46
+ <li>
47
+ <a href="#getting-started">Getting Started</a>
48
+ <ul>
49
+ <li><a href="#prerequisites">Prerequisites</a></li>
50
+ <li><a href="#installation">Installation</a></li>
51
+ </ul>
52
+ </li>
53
+ <li><a href="#usage">Usage</a></li>
54
+ <li><a href="#contributing">Contributing</a></li>
55
+ <li><a href="#license">License</a></li>
56
+ <li><a href="#contact">Contact</a></li>
57
+ </ol>
58
+ </details>
59
+
60
+
61
+
62
+ <!-- ABOUT THE PROJECT -->
63
+ ## About The Project
64
+
65
+ `@knovator/pagecreator` is built with intent to build pages that are depend on backend data, and admin can change how page will look like.
66
+
67
+ <p align="right">(<a href="#readme-top">back to top</a>)</p>
68
+
69
+
70
+
71
+ ### Built With
72
+
73
+ * [React.js](https://reactjs.org/)
74
+ * [react-slick](https://www.npmjs.com/package/react-slick)
75
+
76
+ <p align="right">(<a href="#readme-top">back to top</a>)</p>
77
+
78
+
79
+
80
+ <!-- GETTING STARTED -->
81
+ ## Getting Started
82
+
83
+ To integrate `@knovator/pagecreator` is designed to be used in ReactJS/NextJS project.
84
+
85
+ ### Prerequisites
86
+
87
+ We can use `@knovator/pagecreator` in React/Next application, we can create one using following commands
88
+ * Project
89
+ ```sh
90
+ npx create-react-app my-app
91
+ # or
92
+ npx create-next-app@latest
93
+ ```
94
+
95
+ ### Installation
96
+
97
+ 1. Install NPM packages
98
+ ```sh
99
+ npm install @knovator/pagecreator
100
+ # or
101
+ yarn add @knovator/pagecreator
102
+ ```
103
+
104
+ <p align="right">(<a href="#readme-top">back to top</a>)</p>
105
+
106
+
107
+ <!-- USAGE EXAMPLES -->
108
+ ## Usage
109
+
110
+ ### Widget
111
+ ```jsx
112
+ import { Widget } from '@knovator/pagecreator';
113
+
114
+ <Widget
115
+ apiBaseUrl=''
116
+ widgetData={}
117
+ onClick={...}
118
+ >
119
+ ```
120
+ **Props**
121
+ - `widgetData`
122
+ - [widgetData](data-formats.md#widgetdata)
123
+ - `apiBaseUrl`
124
+ - baseUrl to start prefix image urls
125
+ - `formatItem` (optional): `(item: TileData) => JSX.Element`
126
+ - Customize look of Items
127
+ - `onClick` (optional): `(item: TileData) => void;`
128
+ - OnItem click handler
129
+
130
+ ### Page
131
+ ```jsx
132
+ import { Page } from '@knovator/pagecreator';
133
+
134
+ <Page
135
+ apiBaseUrl=''
136
+ pageData={...}
137
+ onClick={...}
138
+ >
139
+ ```
140
+ **Props**
141
+ - `title` (optional)
142
+ - Title to show on page
143
+ - `apiBaseUrl`
144
+ - baseUrl to start prefix image urls
145
+ - `pageData`
146
+ - [PageData](data-formats.md#pagedata)
147
+ - `formatItem` (optional): `(CODE: string, item: TileData) => JSX.Element;`
148
+ - Customize look of Items
149
+ - `onClick` (optional): `(CODE: string, item: TileData) => JSX.Element;`
150
+ - On Item click handler
151
+
152
+ ### getData
153
+ It's possible to fetch data by yourself and pass them to `Widget` or `Page` components, but if you need easy solution you can use `getData` function.
154
+ ```js
155
+ const pageData = await getData({
156
+ url: '...',
157
+ code: 'HOMEPAGE',
158
+ });
159
+ ```
160
+
161
+ <p align="right">(<a href="#readme-top">back to top</a>)</p>
162
+
163
+ <!-- CONTRIBUTING -->
164
+ ## Contributing
165
+
166
+ Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.
167
+
168
+ If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".
169
+ Don't forget to give the project a star! Thanks again!
170
+
171
+ 1. Fork the Project
172
+ 2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
173
+ 3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
174
+ 4. Push to the Branch (`git push origin feature/AmazingFeature`)
175
+ 5. Open a Pull Request
176
+
177
+ <p align="right">(<a href="#top">back to top</a>)</p>
178
+
179
+
180
+
181
+ <!-- LICENSE -->
182
+ ## License
183
+
184
+ Distributed under the MIT License. See `LICENSE.txt` for more information.
185
+
186
+ <p align="right">(<a href="#top">back to top</a>)</p>
187
+
188
+
189
+ <!-- CONTACT -->
190
+ ## Contact
191
+
192
+ Knovator Technologies
193
+ - Twitter [@knovator](https://twitter.com/knovator)
194
+ - Web [https://knovator.com/](https://knovator.com/)
195
+
196
+ Project Link: [https://github.com/knovator/masters-admin](https://github.com/knovator/masters-admin)
197
+
198
+ <p align="right">(<a href="#top">back to top</a>)</p>
199
+
200
+
201
+ <!-- MARKDOWN LINKS & IMAGES -->
202
+ <!-- https://www.markdownguide.org/basic-syntax/#reference-style-links -->
203
+ [contributors-shield]: https://img.shields.io/github/contributors/knovator/pagecreator.svg?style=for-the-badge
204
+ [contributors-url]: https://github.com/knovator/pagecreator/graphs/contributors
205
+ [forks-shield]: https://img.shields.io/github/forks/knovator/pagecreator.svg?style=for-the-badge
206
+ [forks-url]: https://github.com/knovator/pagecreator/network/members
207
+ [stars-shield]: https://img.shields.io/github/stars/knovator/pagecreator.svg?style=for-the-badge
208
+ [stars-url]: https://github.com/knovator/pagecreator/stargazers
209
+ [issues-shield]: https://img.shields.io/github/issues/knovator/pagecreator.svg?style=for-the-badge
210
+ [issues-url]: https://github.com/knovator/pagecreator/issues
211
+ [license-shield]: https://img.shields.io/github/license/knovator/pagecreator.svg?style=for-the-badge
212
+ [license-url]: https://github.com/knovator/pagecreator/blob/main/LICENSE.txt
package/index.js CHANGED
@@ -1,20 +1,17 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import Slider from 'react-slick';
3
3
 
4
4
  function FixedWidget(_ref) {
5
5
  var widgetData = _ref.widgetData,
6
- formatTile = _ref.formatTile,
7
6
  formatItem = _ref.formatItem;
8
- return jsxs("div", Object.assign({
7
+ return jsx("div", Object.assign({
9
8
  className: "grid grid-cols-".concat(widgetData.mobilePerRow, " md:grid-cols-").concat(widgetData.tabletPerRow, " lg:grid-cols-").concat(widgetData.webPerRow)
10
9
  }, {
11
- children: [widgetData.widgetType === 'Image' ? widgetData.tiles.map(function (tile) {
12
- return formatTile(tile);
10
+ children: widgetData.widgetType === 'Image' ? widgetData.tiles.map(function (tile) {
11
+ return formatItem(tile);
13
12
  }) : widgetData.collectionItems.map(function (item) {
14
13
  return formatItem(item);
15
- }), widgetData.tiles.map(function (tile) {
16
- return formatTile(tile);
17
- })]
14
+ })
18
15
  }));
19
16
  }
20
17
 
@@ -117,7 +114,7 @@ var SlickArrowRight = function SlickArrowRight(_a) {
117
114
 
118
115
  function CarouselWidget(_ref) {
119
116
  var widgetData = _ref.widgetData,
120
- formatTile = _ref.formatTile,
117
+ formatItem = _ref.formatItem,
121
118
  settings = _ref.settings;
122
119
  var defaultSettings = {
123
120
  dots: false,
@@ -144,57 +141,14 @@ function CarouselWidget(_ref) {
144
141
  };
145
142
  if (!widgetData) return null;
146
143
  return jsx(Slider, Object.assign({}, settings ? settings : defaultSettings, {
147
- children: widgetData.tiles.map(function (tile) {
148
- return formatTile(tile);
144
+ children: widgetData.widgetType === 'Image' ? widgetData.tiles.map(function (tile) {
145
+ return formatItem(tile);
146
+ }) : widgetData.collectionItems.map(function (item) {
147
+ return formatItem(item);
149
148
  })
150
149
  }));
151
150
  }
152
151
 
153
- function SimpleCard(_ref) {
154
- var imageUrl = _ref.imageUrl,
155
- imageAltText = _ref.imageAltText,
156
- subTitle = _ref.subTitle,
157
- label = _ref.label,
158
- title = _ref.title,
159
- _onClick = _ref.onClick;
160
- return jsxs("div", Object.assign({
161
- className: "kpc_simple-card",
162
- onClick: function onClick() {
163
- return _onClick && _onClick();
164
- }
165
- }, {
166
- children: [jsx("div", Object.assign({
167
- className: "kpc_simple-card-heading"
168
- }, {
169
- children: jsx("img", {
170
- src: imageUrl,
171
- className: "kpc_simple-card-image",
172
- alt: imageAltText
173
- })
174
- })), jsxs("div", Object.assign({
175
- className: "kpc_simple-card-body"
176
- }, {
177
- children: [label && jsx("p", Object.assign({
178
- className: "kpc_simple-card-label"
179
- }, {
180
- children: label
181
- })), jsxs("div", Object.assign({
182
- className: "kpc_simple-card-content"
183
- }, {
184
- children: [jsx("h4", Object.assign({
185
- className: "kpc_simple-card-title"
186
- }, {
187
- children: title
188
- })), subTitle && jsx("p", Object.assign({
189
- className: "kpc_simple-card-subtitle"
190
- }, {
191
- children: subTitle
192
- }))]
193
- }))]
194
- }))]
195
- }));
196
- }
197
-
198
152
  function Banner(_ref) {
199
153
  var imageAltText = _ref.imageAltText,
200
154
  imageUrl = _ref.imageUrl,
@@ -214,9 +168,13 @@ function Banner(_ref) {
214
168
  }
215
169
 
216
170
  function CollectionItem(_ref) {
217
- var name = _ref.name;
171
+ var name = _ref.name,
172
+ _onClick = _ref.onClick;
218
173
  return jsx("div", Object.assign({
219
- className: "kpc_item"
174
+ className: "kpc_item",
175
+ onClick: function onClick() {
176
+ return _onClick && _onClick();
177
+ }
220
178
  }, {
221
179
  children: jsx("p", Object.assign({
222
180
  className: "kpc_item-text"
@@ -230,26 +188,25 @@ function Widget(_ref) {
230
188
  var widgetData = _ref.widgetData,
231
189
  apiBaseUrl = _ref.apiBaseUrl,
232
190
  formatItem = _ref.formatItem,
233
- _onClick = _ref.onClick;
191
+ _onClick = _ref.onClick,
192
+ settings = _ref.settings;
234
193
 
235
194
  var formatTile = function formatTile(tile) {
236
- var _a, _b;
195
+ var _a;
237
196
 
238
197
  if (typeof formatItem === 'function' && formatItem) return formatItem(tile);else if (widgetData.widgetType === 'Image') return jsx(Banner, {
198
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
199
+ // @ts-ignore
239
200
  imageUrl: "".concat(apiBaseUrl).concat((_a = tile.img) === null || _a === void 0 ? void 0 : _a.uri),
240
- imageAltText: tile.altText
241
- }, tile._id);else return jsx(SimpleCard, {
201
+ imageAltText: tile._id,
242
202
  onClick: function onClick() {
243
203
  return _onClick && _onClick(tile);
244
- },
245
- title: tile.title,
246
- imageUrl: "".concat(apiBaseUrl).concat((_b = tile.img) === null || _b === void 0 ? void 0 : _b.uri),
247
- imageAltText: tile.altText
248
- }, tile._id);
249
- };
250
-
251
- var formatCollectionItem = function formatCollectionItem(item) {
252
- return jsx(CollectionItem, Object.assign({}, item), item._id);
204
+ }
205
+ }, tile._id);else return jsx(CollectionItem, Object.assign({
206
+ onClick: function onClick() {
207
+ return _onClick && _onClick(tile);
208
+ }
209
+ }, tile), tile._id);
253
210
  };
254
211
 
255
212
  if (!widgetData) return null;
@@ -264,15 +221,14 @@ function Widget(_ref) {
264
221
  className: "kpc_widget-body"
265
222
  }, {
266
223
  children: widgetData.selectionType === 'Carousel' ? jsx(CarouselWidget, {
224
+ settings: settings,
267
225
  apiBaseUrl: apiBaseUrl,
268
226
  widgetData: widgetData,
269
- formatItem: formatCollectionItem,
270
- formatTile: formatTile
227
+ formatItem: formatTile
271
228
  }) : jsx(FixedWidget, {
272
229
  apiBaseUrl: apiBaseUrl,
273
230
  widgetData: widgetData,
274
- formatItem: formatCollectionItem,
275
- formatTile: formatTile
231
+ formatItem: formatTile
276
232
  })
277
233
  }))]
278
234
  }));
@@ -1,3 +1,3 @@
1
1
  import { CollectionItemProps } from '../../../types';
2
- export declare function CollectionItem({ name }: CollectionItemProps): JSX.Element;
2
+ export declare function CollectionItem({ name, onClick }: CollectionItemProps): JSX.Element;
3
3
  export default CollectionItem;
@@ -1,3 +1,3 @@
1
1
  import { WidgetTypeProps } from '../../../types';
2
- export declare function CarouselWidget({ widgetData, formatTile, settings }: WidgetTypeProps): JSX.Element | null;
2
+ export declare function CarouselWidget({ widgetData, formatItem, settings, }: WidgetTypeProps): JSX.Element | null;
3
3
  export default CarouselWidget;
@@ -1,3 +1,3 @@
1
1
  import { WidgetTypeProps } from '../../../types';
2
- export declare function FixedWidget({ widgetData, formatTile, formatItem, }: WidgetTypeProps): JSX.Element;
2
+ export declare function FixedWidget({ widgetData, formatItem }: WidgetTypeProps): JSX.Element;
3
3
  export default FixedWidget;
@@ -1,3 +1,3 @@
1
1
  import { WidgetProps } from '../../types';
2
- export declare function Widget({ widgetData, apiBaseUrl, formatItem, onClick, }: WidgetProps): JSX.Element | null;
2
+ export declare function Widget({ widgetData, apiBaseUrl, formatItem, onClick, settings, }: WidgetProps): JSX.Element | null;
3
3
  export default Widget;
@@ -33,22 +33,22 @@ export interface ReviewCardProps extends UserCardProps {
33
33
  export interface WidgetProps {
34
34
  widgetData: WidgetData;
35
35
  apiBaseUrl: string;
36
- formatItem?: (item: TileData) => JSX.Element;
37
- onClick?: (item: TileData) => void;
36
+ formatItem?: (item: TileData | CollectionItemType) => JSX.Element;
37
+ onClick?: (item: TileData | CollectionItemType) => void;
38
+ settings?: Settings;
38
39
  }
39
40
  export interface WidgetTypeProps extends WidgetProps {
40
- formatTile: (item: TileData) => JSX.Element;
41
- formatItem: (item: CollectionItemType) => JSX.Element;
42
- settings?: Settings;
41
+ formatItem: (item: CollectionItemType | TileData) => JSX.Element;
43
42
  }
44
43
  export interface PageProps {
45
44
  title?: string;
46
45
  apiBaseUrl: string;
47
46
  pageData: PageData;
48
- formatItem?: (CODE: string, item: TileData) => JSX.Element;
49
- onClick?: (CODE: string, item: TileData) => JSX.Element;
47
+ formatItem?: (CODE: string, item: TileData | CollectionItemType) => JSX.Element;
48
+ onClick?: (CODE: string, item: TileData | CollectionItemType) => JSX.Element;
50
49
  }
51
50
  export interface CollectionItemProps {
52
51
  name?: string;
52
+ onClick?: () => void;
53
53
  }
54
54
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@knovator/pagecreator",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git@github.com:knovator/pagecreator.git"