Compare commits
2 Commits
11b6200a3a
...
4632ff71b6
| Author | SHA1 | Date |
|---|---|---|
|
|
4632ff71b6 | 3 years ago |
|
|
96ff2686d9 | 3 years ago |
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"kind": "collectionType",
|
||||||
|
"collectionName": "filter_categories",
|
||||||
|
"info": {
|
||||||
|
"singularName": "filter-category",
|
||||||
|
"pluralName": "filter-categories",
|
||||||
|
"displayName": "filter category",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"options": {
|
||||||
|
"draftAndPublish": true
|
||||||
|
},
|
||||||
|
"pluginOptions": {},
|
||||||
|
"attributes": {
|
||||||
|
"label": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"slug": {
|
||||||
|
"type": "uid",
|
||||||
|
"targetField": "label"
|
||||||
|
},
|
||||||
|
"filter_items": {
|
||||||
|
"type": "relation",
|
||||||
|
"relation": "oneToMany",
|
||||||
|
"target": "api::filter-item.filter-item",
|
||||||
|
"mappedBy": "filter_category"
|
||||||
|
},
|
||||||
|
"filter_section": {
|
||||||
|
"type": "relation",
|
||||||
|
"relation": "manyToOne",
|
||||||
|
"target": "api::filter-section.filter-section",
|
||||||
|
"inversedBy": "filter_categories"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
/**
|
||||||
|
* filter-category controller
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { factories } from '@strapi/strapi'
|
||||||
|
|
||||||
|
export default factories.createCoreController('api::filter-category.filter-category');
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
/**
|
||||||
|
* filter-category router
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { factories } from '@strapi/strapi';
|
||||||
|
|
||||||
|
export default factories.createCoreRouter('api::filter-category.filter-category');
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
/**
|
||||||
|
* filter-category service
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { factories } from '@strapi/strapi';
|
||||||
|
|
||||||
|
export default factories.createCoreService('api::filter-category.filter-category');
|
||||||
@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"kind": "collectionType",
|
||||||
|
"collectionName": "filter_items",
|
||||||
|
"info": {
|
||||||
|
"singularName": "filter-item",
|
||||||
|
"pluralName": "filter-items",
|
||||||
|
"displayName": "Filter item",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"options": {
|
||||||
|
"draftAndPublish": true
|
||||||
|
},
|
||||||
|
"pluginOptions": {},
|
||||||
|
"attributes": {
|
||||||
|
"label": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"slug": {
|
||||||
|
"type": "uid",
|
||||||
|
"targetField": "label"
|
||||||
|
},
|
||||||
|
"product": {
|
||||||
|
"type": "relation",
|
||||||
|
"relation": "manyToOne",
|
||||||
|
"target": "api::product.product",
|
||||||
|
"inversedBy": "filter_items"
|
||||||
|
},
|
||||||
|
"filter_category": {
|
||||||
|
"type": "relation",
|
||||||
|
"relation": "manyToOne",
|
||||||
|
"target": "api::filter-category.filter-category",
|
||||||
|
"inversedBy": "filter_items"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
/**
|
||||||
|
* filter-item controller
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { factories } from '@strapi/strapi'
|
||||||
|
|
||||||
|
export default factories.createCoreController('api::filter-item.filter-item');
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
/**
|
||||||
|
* filter-item router
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { factories } from '@strapi/strapi';
|
||||||
|
|
||||||
|
export default factories.createCoreRouter('api::filter-item.filter-item');
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
/**
|
||||||
|
* filter-item service
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { factories } from '@strapi/strapi';
|
||||||
|
|
||||||
|
export default factories.createCoreService('api::filter-item.filter-item');
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"kind": "collectionType",
|
||||||
|
"collectionName": "filter_sections",
|
||||||
|
"info": {
|
||||||
|
"singularName": "filter-section",
|
||||||
|
"pluralName": "filter-sections",
|
||||||
|
"displayName": "Filter section",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"options": {
|
||||||
|
"draftAndPublish": true
|
||||||
|
},
|
||||||
|
"pluginOptions": {},
|
||||||
|
"attributes": {
|
||||||
|
"label": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"slug": {
|
||||||
|
"type": "uid",
|
||||||
|
"targetField": "label"
|
||||||
|
},
|
||||||
|
"filter_categories": {
|
||||||
|
"type": "relation",
|
||||||
|
"relation": "oneToMany",
|
||||||
|
"target": "api::filter-category.filter-category",
|
||||||
|
"mappedBy": "filter_section"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
/**
|
||||||
|
* filter-section controller
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { factories } from '@strapi/strapi'
|
||||||
|
|
||||||
|
export default factories.createCoreController('api::filter-section.filter-section');
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
/**
|
||||||
|
* filter-section router
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { factories } from '@strapi/strapi';
|
||||||
|
|
||||||
|
export default factories.createCoreRouter('api::filter-section.filter-section');
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
/**
|
||||||
|
* filter-section service
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { factories } from '@strapi/strapi';
|
||||||
|
|
||||||
|
export default factories.createCoreService('api::filter-section.filter-section');
|
||||||
@ -0,0 +1,43 @@
|
|||||||
|
{
|
||||||
|
"kind": "collectionType",
|
||||||
|
"collectionName": "products",
|
||||||
|
"info": {
|
||||||
|
"singularName": "product",
|
||||||
|
"pluralName": "products",
|
||||||
|
"displayName": "Product",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"options": {
|
||||||
|
"draftAndPublish": true
|
||||||
|
},
|
||||||
|
"pluginOptions": {},
|
||||||
|
"attributes": {
|
||||||
|
"title": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"description": {
|
||||||
|
"type": "text"
|
||||||
|
},
|
||||||
|
"content": {
|
||||||
|
"type": "richtext"
|
||||||
|
},
|
||||||
|
"slug": {
|
||||||
|
"type": "uid",
|
||||||
|
"targetField": "title"
|
||||||
|
},
|
||||||
|
"amount": {
|
||||||
|
"type": "decimal"
|
||||||
|
},
|
||||||
|
"vat": {
|
||||||
|
"type": "relation",
|
||||||
|
"relation": "oneToOne",
|
||||||
|
"target": "api::vat.vat"
|
||||||
|
},
|
||||||
|
"filter_items": {
|
||||||
|
"type": "relation",
|
||||||
|
"relation": "oneToMany",
|
||||||
|
"target": "api::filter-item.filter-item",
|
||||||
|
"mappedBy": "product"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
/**
|
||||||
|
* product controller
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { factories } from '@strapi/strapi'
|
||||||
|
|
||||||
|
export default factories.createCoreController('api::product.product');
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
/**
|
||||||
|
* product router
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { factories } from '@strapi/strapi';
|
||||||
|
|
||||||
|
export default factories.createCoreRouter('api::product.product');
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
/**
|
||||||
|
* product service
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { factories } from '@strapi/strapi';
|
||||||
|
|
||||||
|
export default factories.createCoreService('api::product.product');
|
||||||
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"kind": "collectionType",
|
||||||
|
"collectionName": "vats",
|
||||||
|
"info": {
|
||||||
|
"singularName": "vat",
|
||||||
|
"pluralName": "vats",
|
||||||
|
"displayName": "Vat"
|
||||||
|
},
|
||||||
|
"options": {
|
||||||
|
"draftAndPublish": true
|
||||||
|
},
|
||||||
|
"pluginOptions": {},
|
||||||
|
"attributes": {
|
||||||
|
"label": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"amount": {
|
||||||
|
"type": "decimal"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
/**
|
||||||
|
* vat controller
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { factories } from '@strapi/strapi'
|
||||||
|
|
||||||
|
export default factories.createCoreController('api::vat.vat');
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
/**
|
||||||
|
* vat router
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { factories } from '@strapi/strapi';
|
||||||
|
|
||||||
|
export default factories.createCoreRouter('api::vat.vat');
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
/**
|
||||||
|
* vat service
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { factories } from '@strapi/strapi';
|
||||||
|
|
||||||
|
export default factories.createCoreService('api::vat.vat');
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
# Strapi plugin vendors
|
||||||
|
|
||||||
|
A quick description of vendors.
|
||||||
@ -0,0 +1,24 @@
|
|||||||
|
/**
|
||||||
|
*
|
||||||
|
* Initializer
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { useEffect, useRef } from 'react';
|
||||||
|
import pluginId from '../../pluginId';
|
||||||
|
|
||||||
|
type InitializerProps = {
|
||||||
|
setPlugin: (id: string) => void;
|
||||||
|
};
|
||||||
|
|
||||||
|
const Initializer = ({ setPlugin }: InitializerProps) => {
|
||||||
|
const ref = useRef(setPlugin);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
ref.current(pluginId);
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
return null;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Initializer;
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
/**
|
||||||
|
*
|
||||||
|
* PluginIcon
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import React from 'react';
|
||||||
|
import { Puzzle } from '@strapi/icons';
|
||||||
|
|
||||||
|
const PluginIcon = () => <Puzzle />;
|
||||||
|
|
||||||
|
export default PluginIcon;
|
||||||
@ -0,0 +1,139 @@
|
|||||||
|
/**
|
||||||
|
*
|
||||||
|
* This component is the skeleton around the actual pages, and should only
|
||||||
|
* contain code that should be seen on all pages. (e.g. navigation bar)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import React, {useState} from 'react';
|
||||||
|
import {
|
||||||
|
SubNavLink,
|
||||||
|
SubNav,
|
||||||
|
SubNavHeader,
|
||||||
|
SubNavSections,
|
||||||
|
SubNavSection,
|
||||||
|
TextButton,
|
||||||
|
SubNavLinkSection,
|
||||||
|
Box
|
||||||
|
} from '@strapi/design-system';
|
||||||
|
import {Apps, ExclamationMarkCircle, Plus} from "@strapi/icons";
|
||||||
|
|
||||||
|
import './index.css';
|
||||||
|
|
||||||
|
const SubMenu = () => {
|
||||||
|
const [search, setSearch] = useState('');
|
||||||
|
const catalog = [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
label: 'Products',
|
||||||
|
icon: <ExclamationMarkCircle/>,
|
||||||
|
to: '/catalog/products',
|
||||||
|
active: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
label: 'Categories',
|
||||||
|
to: '/catalog/categories',
|
||||||
|
active: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
label: 'Filters',
|
||||||
|
to: '/catalog/filters',
|
||||||
|
active: false,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
const customers = [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
label: 'Orders',
|
||||||
|
icon: <ExclamationMarkCircle/>,
|
||||||
|
to: '/customers/orders',
|
||||||
|
active: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
label: 'Coupons',
|
||||||
|
to: '/customers/coupons',
|
||||||
|
active: false,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
const parameters = [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
label: 'General',
|
||||||
|
icon: <ExclamationMarkCircle/>,
|
||||||
|
to: '/settings/general',
|
||||||
|
active: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
label: 'Products',
|
||||||
|
to: '/settings/products',
|
||||||
|
active: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
label: 'Shipping',
|
||||||
|
icon: <Apps/>,
|
||||||
|
to: '/settings/shipping',
|
||||||
|
active: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 4,
|
||||||
|
label: 'Payments',
|
||||||
|
to: '/settings/payments',
|
||||||
|
active: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 4,
|
||||||
|
label: 'Accounts & Privacy',
|
||||||
|
to: '/settings/accounts',
|
||||||
|
active: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 4,
|
||||||
|
label: 'Emails',
|
||||||
|
to: '/settings/emails',
|
||||||
|
active: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 4,
|
||||||
|
label: 'Integration',
|
||||||
|
to: '/settings/integration',
|
||||||
|
active: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 4,
|
||||||
|
label: 'Advanced',
|
||||||
|
to: '/settings/advanced',
|
||||||
|
active: false,
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
return (
|
||||||
|
<SubNav ariaLabel="Builder sub nav">
|
||||||
|
<SubNavHeader searchable value={search} onClear={() => setSearch('')}
|
||||||
|
onChange={e => setSearch(e.target.value)} label="Vendors admin" searchLabel="Search..."/>
|
||||||
|
<SubNavSections>
|
||||||
|
<SubNavSection label="Catalog" collapsable badgeLabel={parameters.length.toString()}>
|
||||||
|
{catalog.map(link => <SubNavLink to={link.to} active={link.active} key={link.id}>
|
||||||
|
{link.label}
|
||||||
|
</SubNavLink>)}
|
||||||
|
</SubNavSection>
|
||||||
|
<SubNavSection label="Customers" collapsable badgeLabel={parameters.length.toString()}>
|
||||||
|
{customers.map(link => <SubNavLink to={link.to} active={link.active} key={link.id}>
|
||||||
|
{link.label}
|
||||||
|
</SubNavLink>)}
|
||||||
|
</SubNavSection>
|
||||||
|
<SubNavSection label="Parameters" collapsable badgeLabel={parameters.length.toString()}>
|
||||||
|
{parameters.map(link => <SubNavLink to={link.to} isSubSectionChild key={link.id}>
|
||||||
|
{link.label}
|
||||||
|
</SubNavLink>)}
|
||||||
|
</SubNavSection>
|
||||||
|
</SubNavSections>
|
||||||
|
</SubNav>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default SubMenu;
|
||||||
@ -0,0 +1,67 @@
|
|||||||
|
import { prefixPluginTranslations } from '@strapi/helper-plugin';
|
||||||
|
|
||||||
|
import pluginPkg from '../../package.json';
|
||||||
|
import pluginId from './pluginId';
|
||||||
|
import Initializer from './components/Initializer';
|
||||||
|
import PluginIcon from './components/PluginIcon';
|
||||||
|
|
||||||
|
const name = pluginPkg.strapi.name;
|
||||||
|
|
||||||
|
export default {
|
||||||
|
register(app: any) {
|
||||||
|
app.addMenuLink({
|
||||||
|
to: `/plugins/${pluginId}`,
|
||||||
|
icon: PluginIcon,
|
||||||
|
intlLabel: {
|
||||||
|
id: `${pluginId}.plugin.name`,
|
||||||
|
defaultMessage: name,
|
||||||
|
},
|
||||||
|
Component: async () => {
|
||||||
|
const component = await import(/* webpackChunkName: "[request]" */ './pages/App');
|
||||||
|
|
||||||
|
return component;
|
||||||
|
},
|
||||||
|
permissions: [
|
||||||
|
// Uncomment to set the permissions of the plugin here
|
||||||
|
// {
|
||||||
|
// action: '', // the action name should be plugin::plugin-name.actionType
|
||||||
|
// subject: null,
|
||||||
|
// },
|
||||||
|
],
|
||||||
|
});
|
||||||
|
const plugin = {
|
||||||
|
id: pluginId,
|
||||||
|
initializer: Initializer,
|
||||||
|
isReady: false,
|
||||||
|
name,
|
||||||
|
};
|
||||||
|
|
||||||
|
app.registerPlugin(plugin);
|
||||||
|
},
|
||||||
|
|
||||||
|
bootstrap(app: any) {},
|
||||||
|
|
||||||
|
async registerTrads(app: any) {
|
||||||
|
const { locales } = app;
|
||||||
|
|
||||||
|
const importedTrads = await Promise.all(
|
||||||
|
(locales as any[]).map((locale) => {
|
||||||
|
return import(`./translations/${locale}.json`)
|
||||||
|
.then(({ default: data }) => {
|
||||||
|
return {
|
||||||
|
data: prefixPluginTranslations(data, pluginId),
|
||||||
|
locale,
|
||||||
|
};
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
return {
|
||||||
|
data: {},
|
||||||
|
locale,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
return Promise.resolve(importedTrads);
|
||||||
|
},
|
||||||
|
};
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
.vendors-container {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 14.5rem 1fr;
|
||||||
|
grid-template-rows: 1fr;
|
||||||
|
}
|
||||||
@ -0,0 +1,34 @@
|
|||||||
|
/**
|
||||||
|
*
|
||||||
|
* This component is the skeleton around the actual pages, and should only
|
||||||
|
* contain code that should be seen on all pages. (e.g. navigation bar)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import React, {useState} from 'react';
|
||||||
|
import {Switch, Route} from 'react-router-dom';
|
||||||
|
import {AnErrorOccurred} from '@strapi/helper-plugin';
|
||||||
|
|
||||||
|
import SubMenu from "../../components/SubMenu";
|
||||||
|
import pluginId from '../../pluginId';
|
||||||
|
|
||||||
|
import HomePage from '../HomePage';
|
||||||
|
|
||||||
|
|
||||||
|
import './index.css';
|
||||||
|
|
||||||
|
const App = () => {
|
||||||
|
return (
|
||||||
|
<div className='vendors-container'>
|
||||||
|
<aside>
|
||||||
|
<SubMenu/>
|
||||||
|
</aside>
|
||||||
|
<Switch>
|
||||||
|
<Route path={`/plugins/${pluginId}`} component={HomePage} exact/>
|
||||||
|
<Route component={AnErrorOccurred}/>
|
||||||
|
</Switch>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default App;
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* HomePage
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import React from 'react';
|
||||||
|
import pluginId from '../../../pluginId';
|
||||||
|
|
||||||
|
const CatalogCategoriesPage = () => {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<h1>{pluginId}'s Category's Page</h1>
|
||||||
|
<p>Happy coding</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default CatalogCategoriesPage;
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* HomePage
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import React from 'react';
|
||||||
|
import pluginId from '../../../pluginId';
|
||||||
|
|
||||||
|
const CatalogFiltersPage = () => {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<h1>{pluginId}'s Filter's Page</h1>
|
||||||
|
<p>Happy coding</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default CatalogFiltersPage;
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* HomePage
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import React from 'react';
|
||||||
|
import pluginId from '../../../pluginId';
|
||||||
|
|
||||||
|
const CatalogProductsPage = () => {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<h1>{pluginId}'s Products's Page</h1>
|
||||||
|
<p>Happy coding</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default CatalogProductsPage;
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* HomePage
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import React from 'react';
|
||||||
|
import pluginId from '../../../pluginId';
|
||||||
|
|
||||||
|
const CustomersCouponsPage = () => {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<h1>{pluginId}'s Coupon's page</h1>
|
||||||
|
<p>Happy coding</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default CustomersCouponsPage;
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* HomePage
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import React from 'react';
|
||||||
|
import pluginId from '../../../pluginId';
|
||||||
|
|
||||||
|
const CustomersOrdersPage = () => {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<h1>{pluginId}'s Order's Page</h1>
|
||||||
|
<p>Happy coding</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default CustomersOrdersPage;
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* HomePage
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import React from 'react';
|
||||||
|
import pluginId from '../../pluginId';
|
||||||
|
|
||||||
|
const HomePage = () => {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<h1>{pluginId}'s HomePage</h1>
|
||||||
|
<p>Happy coding</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default HomePage;
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* HomePage
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import React from 'react';
|
||||||
|
import pluginId from '../../../pluginId';
|
||||||
|
|
||||||
|
const ParametersAccountsPage = () => {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<h1>{pluginId}'s Shipping's parameter Page</h1>
|
||||||
|
<p>Happy coding</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default ParametersAccountsPage;
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* HomePage
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import React from 'react';
|
||||||
|
import pluginId from '../../../pluginId';
|
||||||
|
|
||||||
|
const ParametersAdvancedPage = () => {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<h1>{pluginId}'s Shipping's parameter Page</h1>
|
||||||
|
<p>Happy coding</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default ParametersAdvancedPage;
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* HomePage
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import React from 'react';
|
||||||
|
import pluginId from '../../../pluginId';
|
||||||
|
|
||||||
|
const ParametersEmailsPage = () => {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<h1>{pluginId}'s Shipping's parameter Page</h1>
|
||||||
|
<p>Happy coding</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default ParametersEmailsPage;
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* HomePage
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import React from 'react';
|
||||||
|
import pluginId from '../../../pluginId';
|
||||||
|
|
||||||
|
const ParametersGeneralPage = () => {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<h1>{pluginId}'s General's parameter Page</h1>
|
||||||
|
<p>Happy coding</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default ParametersGeneralPage;
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* HomePage
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import React from 'react';
|
||||||
|
import pluginId from '../../../pluginId';
|
||||||
|
|
||||||
|
const ParametersIntegrationPage = () => {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<h1>{pluginId}'s Shipping's parameter Page</h1>
|
||||||
|
<p>Happy coding</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default ParametersIntegrationPage;
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* HomePage
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import React from 'react';
|
||||||
|
import pluginId from '../../../pluginId';
|
||||||
|
|
||||||
|
const ParametersPaymentsPage = () => {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<h1>{pluginId}'s Shipping's parameter Page</h1>
|
||||||
|
<p>Happy coding</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default ParametersPaymentsPage;
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* HomePage
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import React from 'react';
|
||||||
|
import pluginId from '../../../pluginId';
|
||||||
|
|
||||||
|
const ParametersProductsPage = () => {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<h1>{pluginId}'s Product's parameter Page</h1>
|
||||||
|
<p>Happy coding</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default ParametersProductsPage;
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* HomePage
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
import React from 'react';
|
||||||
|
import pluginId from '../../../pluginId';
|
||||||
|
|
||||||
|
const ParametersShippingPage = () => {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<h1>{pluginId}'s Shipping's parameter Page</h1>
|
||||||
|
<p>Happy coding</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default ParametersShippingPage;
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
import pluginPkg from '../../package.json';
|
||||||
|
|
||||||
|
const pluginId = pluginPkg.name.replace(/^(@[^-,.][\w,-]+\/|strapi-)plugin-/i, '');
|
||||||
|
|
||||||
|
export default pluginId;
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{}
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{}
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
import pluginId from '../pluginId';
|
||||||
|
|
||||||
|
const getTrad = (id: string) => `${pluginId}.${id}`;
|
||||||
|
|
||||||
|
export default getTrad;
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
declare module '@strapi/design-system/*';
|
||||||
|
declare module '@strapi/design-system';
|
||||||
|
declare module '@strapi/icons';
|
||||||
|
declare module '@strapi/icons/*';
|
||||||
|
declare module '@strapi/helper-plugin';
|
||||||
@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
"name": "vendors",
|
||||||
|
"version": "0.0.0",
|
||||||
|
"description": "This is the description of the plugin.",
|
||||||
|
"strapi": {
|
||||||
|
"name": "vendors",
|
||||||
|
"description": "Description of vendors plugin",
|
||||||
|
"kind": "plugin"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@strapi/design-system": "^1.6.3",
|
||||||
|
"@strapi/helper-plugin": "^4.6.0",
|
||||||
|
"@strapi/icons": "^1.6.3",
|
||||||
|
"prop-types": "^15.7.2"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@strapi/typescript-utils": "^4.6.0",
|
||||||
|
"@types/react": "^17.0.53",
|
||||||
|
"@types/react-dom": "^17.0.18",
|
||||||
|
"@types/react-router-dom": "^5.3.3",
|
||||||
|
"@types/styled-components": "^5.1.26",
|
||||||
|
"react": "^17.0.2",
|
||||||
|
"react-dom": "^17.0.2",
|
||||||
|
"react-router-dom": "^5.3.4",
|
||||||
|
"styled-components": "^5.3.6",
|
||||||
|
"typescript": "5.0.4"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"react": "^17.0.2",
|
||||||
|
"react-dom": "^17.0.2",
|
||||||
|
"react-router-dom": "^5.3.4",
|
||||||
|
"styled-components": "^5.3.6"
|
||||||
|
},
|
||||||
|
"author": {
|
||||||
|
"name": "A Strapi developer"
|
||||||
|
},
|
||||||
|
"maintainers": [
|
||||||
|
{
|
||||||
|
"name": "A Strapi developer"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.19.1 <=18.x.x",
|
||||||
|
"npm": ">=6.0.0"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"develop": "tsc -p tsconfig.server.json -w",
|
||||||
|
"build": "tsc -p tsconfig.server.json"
|
||||||
|
},
|
||||||
|
"license": "MIT"
|
||||||
|
}
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
import { Strapi } from '@strapi/strapi';
|
||||||
|
|
||||||
|
export default ({ strapi }: { strapi: Strapi }) => {
|
||||||
|
// bootstrap phase
|
||||||
|
};
|
||||||
@ -0,0 +1,4 @@
|
|||||||
|
export default {
|
||||||
|
default: {},
|
||||||
|
validator() {},
|
||||||
|
};
|
||||||
@ -0,0 +1 @@
|
|||||||
|
export default {};
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
import myController from './my-controller';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
myController,
|
||||||
|
};
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
import { Strapi } from '@strapi/strapi';
|
||||||
|
|
||||||
|
export default ({ strapi }: { strapi: Strapi }) => ({
|
||||||
|
index(ctx) {
|
||||||
|
ctx.body = strapi
|
||||||
|
.plugin('vendors')
|
||||||
|
.service('myService')
|
||||||
|
.getWelcomeMessage();
|
||||||
|
},
|
||||||
|
});
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
import { Strapi } from '@strapi/strapi';
|
||||||
|
|
||||||
|
export default ({ strapi }: { strapi: Strapi }) => {
|
||||||
|
// destroy phase
|
||||||
|
};
|
||||||
@ -0,0 +1,23 @@
|
|||||||
|
import register from './register';
|
||||||
|
import bootstrap from './bootstrap';
|
||||||
|
import destroy from './destroy';
|
||||||
|
import config from './config';
|
||||||
|
import contentTypes from './content-types';
|
||||||
|
import controllers from './controllers';
|
||||||
|
import routes from './routes';
|
||||||
|
import middlewares from './middlewares';
|
||||||
|
import policies from './policies';
|
||||||
|
import services from './services';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
register,
|
||||||
|
bootstrap,
|
||||||
|
destroy,
|
||||||
|
config,
|
||||||
|
controllers,
|
||||||
|
routes,
|
||||||
|
services,
|
||||||
|
contentTypes,
|
||||||
|
policies,
|
||||||
|
middlewares,
|
||||||
|
};
|
||||||
@ -0,0 +1 @@
|
|||||||
|
export default {};
|
||||||
@ -0,0 +1 @@
|
|||||||
|
export default {};
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
import { Strapi } from '@strapi/strapi';
|
||||||
|
|
||||||
|
export default ({ strapi }: { strapi: Strapi }) => {
|
||||||
|
// registeration phase
|
||||||
|
};
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
export default [
|
||||||
|
{
|
||||||
|
method: 'GET',
|
||||||
|
path: '/',
|
||||||
|
handler: 'myController.index',
|
||||||
|
config: {
|
||||||
|
policies: [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
import myService from './my-service';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
myService,
|
||||||
|
};
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
import { Strapi } from '@strapi/strapi';
|
||||||
|
|
||||||
|
export default ({ strapi }: { strapi: Strapi }) => ({
|
||||||
|
getWelcomeMessage() {
|
||||||
|
return 'Welcome to Strapi 🚀';
|
||||||
|
},
|
||||||
|
});
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
module.exports = require('./admin/src').default;
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
module.exports = require('./dist/server');
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"extends": "@strapi/typescript-utils/tsconfigs/admin",
|
||||||
|
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "ESNext",
|
||||||
|
"strict": true
|
||||||
|
},
|
||||||
|
|
||||||
|
"include": ["admin", "custom.d.ts"],
|
||||||
|
|
||||||
|
"exclude": [
|
||||||
|
"node_modules/",
|
||||||
|
"dist/",
|
||||||
|
|
||||||
|
// Do not include server files in the server compilation
|
||||||
|
"server/",
|
||||||
|
// Do not include test files
|
||||||
|
"**/*.test.ts"
|
||||||
|
]
|
||||||
|
}
|
||||||
@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"extends": "@strapi/typescript-utils/tsconfigs/server",
|
||||||
|
|
||||||
|
"compilerOptions": {
|
||||||
|
"outDir": "dist",
|
||||||
|
"rootDir": "."
|
||||||
|
},
|
||||||
|
|
||||||
|
"include": [
|
||||||
|
// Include the root directory
|
||||||
|
"server",
|
||||||
|
// Force the JSON files in the src folder to be included
|
||||||
|
"server/**/*.json"
|
||||||
|
],
|
||||||
|
|
||||||
|
"exclude": [
|
||||||
|
"node_modules/",
|
||||||
|
"dist/",
|
||||||
|
|
||||||
|
// Do not include admin files in the server compilation
|
||||||
|
"admin/",
|
||||||
|
// Do not include test files
|
||||||
|
"**/*.test.ts"
|
||||||
|
]
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue