No description
Find a file
Michał Droń 5c1a62171d
🦄 Simple taxes (#2072)
* Tax configuration - implement channels view (#2048)

* Add channels view

* Fix channels view import

* Remove legacy stories references

* Fix link in configuration

* Update snapshots

* Remove sample checkboxes props

* Disable hover in country exceptions

* Update snapshots

* Extract country exception rows to seperate component

* Extract components to seperate files

* Remove duplicated section name

* Remove backlink

* Add translations to section names

* Extract messages

* Add ListItemLink component

* Replace navigator with link in TaxChannelsMenu

* Fix horizontal scroll in TaxChannelsMenu

* Change codegen to build from custom schema

* Build types

* Update fragments

* Add fixtures

* Change any to proper types

* Add story for tax channels page

* Replace MUI Skeleton with Saleor Skeleton

* Change clsx import to classnames

* Fix checkboxes shadows in settings card

* Update IDs in fixtures

* Fix offset in TaxChannelsMenu

* Update snapshots

* Remove any from TaxSettings

* Fix todos

* Change relative marginLeft to before pseudoelement

* Extract styles to seperate files

* Change folder structure

* Extract redirect logic to custom hook

* Update snapshots

* Fix comment

* Add early return in channels view

* Tax configuration - implement countries view (#2053)

* Add channels view

* Remove sample checkboxes props

* Disable hover in country exceptions

* Extract country exception rows to seperate component

* Extract components to seperate files

* Remove duplicated section name

* Remove backlink

* Add translations to section names

* Replace navigator with link in TaxChannelsMenu

* Fix horizontal scroll in TaxChannelsMenu

* Change any to proper types

* Add story for tax channels page

* Replace MUI Skeleton with Saleor Skeleton

* Change clsx import to classnames

* Fix checkboxes shadows in settings card

* Update IDs in fixtures

* Fix offset in TaxChannelsMenu

* Remove any from TaxSettings

* Add countries list view

* Add TaxCountryMenu component

* Add CountryList page

* Change channels menu rows height

* Change countries menu rows height

* Add TaxInput component

* Add tax classes rates to countries page

* Fix search input padding

* Add minmax to TaxInput

* Add searching through tax class rates

* Extract messages

* Add better handlers

* Add fullWidth to TaxInput

* Specify type for TaxInputs

* Remove spinboxes on firefox

* Remove custom spinboxes

* Remove maxHeight from menu rows

* Post-rebase fix

* Change setter to formchagne

* Add TaxConfiguration fragment

* Add isDefault field to taxClass

* Add fixtures

* Shape data

* Replace useEffect with useTaxUrlRedirect

* Fix country names in menu

* Add country page story

* Add early return in countries view

* Unify loading states between channels and countries pages

* Handle special chars and case insensitiveness in local search

* Replace navigate function with ListItemLink

* Move styles to seperate file

* Move styles to seperate file

* Migrate to strict null checks

* Remove unnecessary optional chaining

* Change overflow scroll to Y only

* Add useMemo on finding selected country

* Add useMemo on local search

* Translate labels in page tabs

* Change url from /taxes/classes to /taxes/tax-classes

* Remove capitalization from strings

* Extract messages

* Bump macaw to 0.6.2

* Update snapshots

* Add spinboxes explanation comment

* Handle empty state

* Add tax classes view (#2093)

* Add TaxClass fragment

* Build types

* Add tax classes to fixtures

* Add tax classes view

* wip Add tax classes page

* Add tax classes menu

* Add TaxRate fragment

* Extract logic

* Handle loading state & add story

* Extract messages

* Update snapshots

* Change schema building from schema back to introspection

* Update schema

* Update fragments

* Build types

* Update fixtures

* Reshape data

* Move styles to seperate file

* Use getById

* Add explicit undefined

* Comment out unfinished modal stories

* Update snapshots

* Taxes - add API calls in channels view (#2106)

* Build types

* Add TaxRate fragment

* Update snapshots

* Add taxConfigurationList query

* Add taxCountriesList query

* Add TaxClassesList query

* Rename TaxConfigurationsList query

* Handle empty state

* Fix types post-rebase

* Add form to TaxChannelsPage

* wip Add dialog for handling country exceptions

* wip Fix dialog url

* wip Add update exceptions handlers

* Add dialog story

* Fix type errors

* Add mutation support

* Fix types in story

* Add transition state to submit button

* Add notifier

* Extract messages

* Remove unused import

* Add backlink in savebar

* Update snapshots

* Fix link in navigation

* Update snapshots

* Remove message from tax config error fragment

* Add hook description

* Use useStateFromProps

* Remove error handling

* Improve url & path function names

* Use theme.spacing in TaxCountryDialog styles

* Remove redundant key modification

* Revert "Use useStateFromProps"

This reverts commit d3c68b04701cf935e917d7baa3ed1361ca3446d5.

* Move initial map to parent & add open dependency to countries state

* Use useModalDialogOpen

* Fix state update

* Remove scrolls & add ellipsis in side menu

* Center checkboxes

* Update snapshots

* Add fake div for list alignment

* Trigger deployment

* Close modal on submit

* Remove divider on last ListItem

* Align add country button

* Wrap grid child in div to avoid card stretching

* Update snapshots

* Trigger changes in add/delete exceptions

* Trigger change on expcetion checkboxes

* Add trailing commas

* Connect countries view to API (#2178)

* Add empty states

* Update countries view urls

* Remove unused import

* Add country modal to countries view

* Update schema

* Implement country view mutations & error fragments

* Implement tax class update mutation

* Add sidebar temporary state for new configs

* Remove unused imports

* Wrap in form

* Add savebar & fix search

* Update schema

* Add form wrapper

* Fix types

* Extract messages

* Bump macaw

* Update snapshots

* Fix comma dangles

* Update snapshots

* Notify about mutation success

* Add logic for mixing current and new rates

* Workaround for sending null rates

* Fix filling form with correct data after submitting

* Handle deleting configuration

* Fix selected banner

* Remove leftover comment

* Add handler for country configuration delete

* Trigger deployment

* Clean up useEffects causing infinite render loops

* Sort countries from api by name

* Fix card bottom padding

* Remove bottom divider & fix padding

* Remove scroll wrapper in side menu

* Update snapshots

* Remove scroll wrapper from tax classes menu

* Update snapshots

* Refresh form to initial onSubmit

* Revert "Refresh form to initial onSubmit"

This reverts commit 42414237d35086da63f4aa088c8072411429b1d8.

* Allow only 3 decimal characters in tax inputs

* Update snapshots

* Update schema

* Update types

* Change logic from default tax class to null class

* Fix sorting

* Send empty country rates as nulls in mutation

* Extract messages

* Update lockfile

* Update schema

* Drop default tax classes

* Update snapshots

* Post-rebase fixes

* Connect tax classes view to API (#2334)

* Add mutations

* Handle empty state

* Wrap page in form

* Update stories

* Build types

* Handle tax class delete

* Handle update tax class

* Update stories

* Handle tax class change name

* Add mutation state to savebar

* Handle creating new tax classes

* Extract messages

* Specify type

* Update stories

* Sort rates

* Fix skeleton rendering

* Remove placeholders

* Fix skeleton rendering on country list

* Update snapshots

* Change initial pagination to 100

* Disallow creating multiple new tax classes

* Disallow creating multiple country configurations

* Fix messages

* Autofocus on new tax class name

* Add country name to header

* Temporarily comment out broken code in tax channels

* Update snapshots

* Update snapshots post-rebase

* Add tax strategies & assigning tax classes (#2369)

* Update fragments

* Add optional merging in useForm

* Handle tax strategies

* Update snapshots

* Update fixtures

* Extract messages

* Remove unused shop query fields

* Fix breaking bug when fetchMore is used in non-searchable SingleAutocompleteSelectFields

* Migrate product types to tax classes

* Add tax classes to shipping methods

* Use encapsulated logic in product types

* Fix product type stories

* Fix shipping fixtures

* Fix product type type mismatch

* Fix shipping stories

* Fix product type fixtures

* Fix mismatching types

* Extract messages

* Update snapshots

* Update snapshots

* Fix comment

* Drop deprecated graphql fields

* Replace tax types with tax classes in product create view

* Replace tax types with tax classes in product update view

* Fix tests, stories, fixtures

* Extract messages

* Update snapshots

* Move status messages to commonStatusMessages

* Handle empty array case in tax class change handler

* Reuse messages

* Simple taxes bugfixes (#2395)

* Fix tax channels menu - dense layout

* Change view names to fit convention

* Fix per country exceptions in tax channels view

* Fix skeleton rendering on tax countries card title

* Filter out existing countries from modal

* Update snapshots

* Fix deleting country configuration

* Disallow negative values in tax inputs

* Handle empty tax classes view

* Allow empty options in shipping & product types views tax class assignment field

* Modify undefined rates in tax classes view

* Update macaw-ui

* Fix UI on channels view

* Fix UI on countries view

* Fix UI on countries view

* Align tax class rate label to the right

* Updaste snapshots

* Extract messages

* Fix adding rates on new tax class

* Fix key errors

* Update schema

* Build types

* Allow empty rates in taxClassUpdate mutation

* Extract tax channels change country function as a handler

* Deprecate useStateFromProps

* Change useStateFromProps to useStateUpdate

* Fix dividers

* Delete delete icon on new tax classes

* Update snapshots

* Update lockfile

* Update macaw to 0.6.6

* Update snapshots

* Specify type of input in country change handler

* Extract autofocus logic to custom hook

* Replace alternative with switch statement

* Extract country exclusion logic from JSX

* Update lockfile

* Update lockfile

* Trigger deployment

* Fix invisible select markers

* Fix linter issue

* Fix crashing product details page

* Fix e2e error

* Update snapshots

* Allow view taxes with any staff permissions (#2510)

* Update after rebase

Co-authored-by: Dawid <tarasiukdawid@gmail.com>
2022-11-17 13:48:50 +01:00
.github Fix nightly tests after changing node to 18 (#2594) 2022-11-17 13:42:28 +01:00
.tx Update translations (#1965) 2022-04-05 09:33:48 +02:00
assets Bump macaw to 0.3 (#1807) 2022-01-28 13:34:20 +01:00
cypress removing returnUrl to fix stock test (#2562) 2022-11-17 13:47:40 +01:00
lint/rules Add rule fixer 2019-12-03 16:23:42 +01:00
locale 🦄 Simple taxes (#2072) 2022-11-17 13:48:50 +01:00
nginx Update Dockerfile (#2523) 2022-11-16 16:01:34 +01:00
recordings/User_3768991250 Don't fetch user details on login (#1909) 2022-03-23 08:15:05 +01:00
scripts Use esbuild-loader (#1983) 2022-05-05 09:54:28 +02:00
src 🦄 Simple taxes (#2072) 2022-11-17 13:48:50 +01:00
testUtils Update Dockerfile (#2523) 2022-11-16 16:01:34 +01:00
.codeclimate.yml Initial commit 2019-06-19 16:40:52 +02:00
.dockerignore add .dockerignore and fixing nginx conf for local deploy 2019-10-31 14:31:13 +07:00
.eslintrc.json ESLint: No unused variables (#1981) 2022-10-04 13:30:51 +02:00
.gitignore Add .nvmrc and .node_version with node 14 LTS (#2277) 2022-09-05 10:53:57 +02:00
.npmrc Upgrade node to 18 (#2533) 2022-11-15 15:41:46 +01:00
.nvmrc Upgrade node to 18 (#2533) 2022-11-15 15:41:46 +01:00
.prettierignore Use graphql-codegen (#1874) 2022-03-09 09:56:55 +01:00
.prettierrc Add trailing commas (#2062) 2022-06-21 11:36:55 +02:00
.release-it.json Add release-it script (#1034) 2021-03-30 14:37:12 +02:00
_redirects Enable Netlify redirects 2019-11-14 13:01:45 +01:00
apollo.config.js Update apollo config 2019-08-21 15:26:24 +02:00
app.json Configure Heroku integration 2019-09-22 14:30:10 +02:00
babel.config.js Use esbuild-loader (#1983) 2022-05-05 09:54:28 +02:00
CHANGELOG.md Add format tip for text attribute rows (#2340) 2022-10-13 12:41:26 +02:00
codegen.yml Use graphql-codegen (#1874) 2022-03-09 09:56:55 +01:00
csstypes.d.ts Update React to 17 and related packages (#2370) 2022-10-24 11:49:11 +02:00
cypress.config.js add retries to cypress config (#2536) 2022-11-04 16:00:46 +01:00
Dockerfile Update Dockerfile (#2523) 2022-11-16 16:01:34 +01:00
eslint-local-rules.js Add local eslint rule to enforce naming styles 2019-12-03 16:09:57 +01:00
fetch-schema.yml Use graphql-codegen (#1874) 2022-03-09 09:56:55 +01:00
introspection.json 🦄 Simple taxes (#2072) 2022-11-17 13:48:50 +01:00
LICENSE Update LICENSE 2021-06-28 15:57:24 +02:00
lighthouserc.json Add circleci config and enhance our linters (#519) 2020-05-14 11:30:32 +02:00
lws.config.js merge changes 2021-02-11 15:17:00 +01:00
package-lock.json Upgrade node to 18 (#2533) 2022-11-15 15:41:46 +01:00
package.json Upgrade node to 18 (#2533) 2022-11-15 15:41:46 +01:00
react-intl.d.ts Attach permission variables to all queries (#1000) 2021-03-09 09:44:09 +01:00
README.md Update Dockerfile (#2523) 2022-11-16 16:01:34 +01:00
schema.graphql 🦄 Simple taxes (#2072) 2022-11-17 13:48:50 +01:00
static.json Configure Heroku integration 2019-09-22 14:30:10 +02:00
tsconfig.json Change way of tagging tests, add stable tag (#2102) 2022-06-27 11:30:51 +02:00
webpack.config.js Update Dockerfile (#2523) 2022-11-16 16:01:34 +01:00
webpack.d.ts Update Dockerfile (#2523) 2022-11-16 16:01:34 +01:00

Saleor Dashboard

Saleor Dashboard

A GraphQL-powered, single-page dashboard application for Saleor.

Demo

See the public demo of Saleor Dashboard!

Or launch the demo on a free Heroku instance.

Deploy

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

Prerequisites

  • Node.js v14+
  • A running instance of Saleor.

Installing

Clone the repository:

$ git clone https://github.com/saleor/saleor-dashboard.git

Enter the project directory:

$ cd saleor-dashboard

Using stable release

Check release log for the latest release

Using development version

If you want to use the latest development version, checkout to the main branch:

$ git checkout main

Install NPM dependencies:

$ npm i

Configuration

Create .env file in a root directory or set environment variables with following values:

  • API_URI (required) - URI of a running instance of Saleor GraphQL API. If you are running Saleor locally with the default settings, set API_URI to: http://localhost:8000/graphql/. Make sure that you have / at the end of API_URI.

  • APP_MOUNT_URI - URI at which the Dashboard app will be mounted. E.g. if you set APP_MOUNT_URI to /dashboard/, your app will be mounted at http://localhost:9000/dashboard/.

  • STATIC_URL - URL where the static files are located. E.g. if you use S3 bucket, you should set it to the bucket's URL. By default Saleor assumes you serve static files from the root of your site at http://localhost:9000/.

Development

To start the development server run:

$ npm start

In case you see CORS errors make sure to check CORS configuration of your Saleor instance or CORS settings in the Cloud Console.

Production

To build the application bundle run:

$ npm run build

Error Tracking

Saleor Dashboard is using a generic error tracking wrapper function that takes care of the most popular use cases:

  • initializing the tracker
  • capturing exceptions and (optionally) displaying the event id
  • setting basic user data (this is opt-in and disabled by default)

By default it ships with a Sentry adapter but any kind of error tracking software can be used by creating a custom adapter (using Sentry and TS types as an example).

Example:

// src/services/errorTracking/index.ts

import { CustomAdapter } from "./adapters/";

const errorTracker = ErrorTrackerFactory(CustomAdapter(config));

Running e2e tests

Add Cypress specific env variables to .env file (created in configuration section above):

CYPRESS_USER_NAME=
CYPRESS_USER_PASSWORD=
CYPRESS_SECOND_USER_NAME=
CYPRESS_PERMISSIONS_USERS_PASSWORD=

CYPRESS_mailHogUrl=
STRIPE_SECRET_KEY=
STRIPE_PUBLIC_KEY=

// not required
CYPRESS_RECORD_KEY= // if you want your local runs recorded

For values of those variables refer to our internal documentation.

You are ready to run cypress commands like:

npm run cy:open

Usage with docker

Build docker image:

docker build --tag saleor-dashboard .

Run nginx from docker and bind it to port on your machine (in this example 8080):

docker run --publish 8080:80 --env "API_URL=<YOUR_API_URL>" saleor-dashboard

Enter http://localhost:8080/ to use dashboard.

Usage with Sentry adapter:

Sentry is used as the default tracker so no changes in code are necessary and the configuration is done via environment variables.

The following environment variables are available:

# Required
SENTRY_DSN=

# Optional
# https://docs.sentry.io/product/cli/configuration/
SENTRY_AUTH_TOKEN=
SENTRY_ORG=
SENTRY_PROJECT=
SENTRY_URL_PREFIX=
ENVIRONMENT=

Crafted with ❤️ by Saleor Commerce