diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml new file mode 100644 index 000000000..604b8ce84 --- /dev/null +++ b/.github/workflows/codeql-analysis.yml @@ -0,0 +1,54 @@ +name: "CodeQL" + +on: + push: + branches: [master, ] + pull_request: + # The branches below must be a subset of the branches above + branches: [master] + schedule: + - cron: '0 10 * * 5' + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + with: + # We must fetch at least the immediate parents so that if this is + # a pull request then we can checkout the head. + fetch-depth: 2 + + # If this run was triggered by a pull request event, then checkout + # the head of the pull request instead of the merge commit. + - run: git checkout HEAD^2 + if: ${{ github.event_name == 'pull_request' }} + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v1 + # Override language selection by uncommenting this and choosing your languages + # with: + # languages: go, javascript, csharp, python, cpp, java + + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v1 + + # âšī¸ Command-line programs to run using the OS shell. + # đ https://git.io/JvXDl + + # âī¸ If the Autobuild fails above, remove it and uncomment the following three lines + # and modify them (or add more) to build your code if your project + # uses a compiled language + + #- run: | + # make bootstrap + # make release + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v1 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 52f3bd4bd..e01508e62 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -79,7 +79,10 @@ jobs: - name: Cypress run uses: cypress-io/github-action@v2 env: - API_URI: https://pwa.demo.saleor.rocks/graphql/ + API_URI: ${{ secrets.API_URI }} + APP_MOUNT_URI: ${{ secrets.APP_MOUNT_URI }} + CYPRESS_USER_NAME: ${{ secrets.CYPRESS_USER_NAME }} + CYPRESS_USER_PASSWORD: ${{ secrets.CYPRESS_USER_PASSWORD }} with: build: npm run build start: npx http-server -a localhost -p 9000 build/dashboard diff --git a/CHANGELOG.md b/CHANGELOG.md index 0492b0d2d..346aa6dfa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,10 @@ All notable, unreleased changes to this project will be documented in this file. - Reset modal state after closing - #644 by @dominik-zeglen - Fix incorrect messages - #643 by @dominik-zeglen - Do not use devserver to run cypress tests - #650 by @dominik-zeglen +- Fix updating product that has no variants - #649 by @dominik-zeglen +- Update checkbox design - #651 by @dominik-zeglen +- Add warehouse choice - #646 by @dominik-zeglen +- Fix user management modal actions - #637 by @eaglesemanation - Fix navigator button rendering on safari browser - #656 by @dominik-zeglen ## 2.10.1 diff --git a/cypress/elements/account/login-selectors.js b/cypress/elements/account/login-selectors.js new file mode 100644 index 000000000..884b83dbd --- /dev/null +++ b/cypress/elements/account/login-selectors.js @@ -0,0 +1,7 @@ +export const LOGIN_SELECTORS = { + emailAddressInput: "input[name='email']", + emailPasswordInput: "input[name='password']", + signInButton: "[data-test=submit]", + warningCredentialMessage: "[data-test=loginErrorMessage]", + welcomePage: "[data-test=welcomeHeader]" +}; diff --git a/cypress/integration/login_form.js b/cypress/integration/login_form.js index d799c6912..812a852a5 100644 --- a/cypress/integration/login_form.js +++ b/cypress/integration/login_form.js @@ -1,3 +1,5 @@ +import { LOGIN_SELECTORS } from "../elements/account/login-selectors"; + // describe("User authorization", () => { beforeEach(() => { @@ -7,14 +9,19 @@ describe("User authorization", () => { describe("Login", () => { it("should successfully log in an user", () => { cy.visit("/"); - cy.loginUser("admin@example.com", "admin"); - cy.get("[data-test=welcomeHeader]").contains("Hello there"); + cy.loginUser(); + cy.get(LOGIN_SELECTORS.welcomePage); }); it("should fail for wrong password", () => { - cy.visit("/"); - cy.loginUser("admin@example.com", "wrong-password"); - cy.get("[data-test=loginErrorMessage]"); + cy.visit("/") + .get(LOGIN_SELECTORS.emailAddressInput) + .type("admin@example.com") + .get(LOGIN_SELECTORS.emailPasswordInput) + .type("wrong-password") + .get(LOGIN_SELECTORS.signInButton) + .click() + .get(LOGIN_SELECTORS.warningCredentialMessage); }); }); @@ -24,7 +31,7 @@ describe("User authorization", () => { win.sessionStorage.clear(); }); cy.visit("/"); - cy.loginUser("admin@example.com", "admin"); + cy.loginUser(); cy.get("[data-test=userMenu]") .click() .get("[data-test=accountSettingsButton]") diff --git a/cypress/integration/warehouse.js b/cypress/integration/warehouse.js index 94bc2a771..7ed06c295 100644 --- a/cypress/integration/warehouse.js +++ b/cypress/integration/warehouse.js @@ -2,22 +2,19 @@ describe("Warehouse settings", () => { beforeEach(() => { cy.clearSessionData(); - cy.loginUser("admin@example.com", "admin"); - - // Wait for log in - cy.get("[data-test=welcomeHeader]").contains("Hello there"); }); - it("Warehouse section visible in the configuration", () => { + xit("Warehouse section visible in the configuration", () => { cy.visit("/configuration/") + .loginUser() .get("[data-testid=warehouses][data-test=settingsSubsection]") .click(); cy.location("pathname").should("eq", "/warehouses/"); }); - it("Editing warehouse is available", () => { + xit("Editing warehouse is available", () => { cy.visit(`/warehouses`) - .get("[data-testid=defaultwarehouse]") + .loginUser() .get("[data-test=editButton]") .first() .click() diff --git a/cypress/plugins/index.js b/cypress/plugins/index.js new file mode 100644 index 000000000..d72976627 --- /dev/null +++ b/cypress/plugins/index.js @@ -0,0 +1,21 @@ +// / +// *********************************************************** +// This example plugins/index.js can be used to load plugins +// +// You can change the location of this file or turn off loading +// the plugins file with the 'pluginsFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/plugins-guide +// *********************************************************** + +// This function is called when a project is opened or re-opened (e.g. due to +// the project's config changing) + +/** + * @type {Cypress.PluginConfig} + */ +module.exports = (on, config) => { + // `on` is used to hook into various events Cypress emits + // `config` is the resolved Cypress config +}; diff --git a/cypress/support/index.js b/cypress/support/index.js index 6d2a8111f..531b8aab9 100644 --- a/cypress/support/index.js +++ b/cypress/support/index.js @@ -1,12 +1,4 @@ -Cypress.Commands.add("loginUser", (email, password) => - cy - .get("input[name='email']") - .type(email) - .get("input[name='password']") - .type(password) - .get("[data-test=submit]") - .click() -); +import "./user"; Cypress.Commands.add("clearSessionData", () => { // Because of known cypress bug, not all local storage data are cleared. diff --git a/cypress/support/user/index.js b/cypress/support/user/index.js new file mode 100644 index 000000000..4889d7d41 --- /dev/null +++ b/cypress/support/user/index.js @@ -0,0 +1,11 @@ +import { LOGIN_SELECTORS } from "../../elements/account/login-selectors"; + +Cypress.Commands.add("loginUser", () => + cy + .get(LOGIN_SELECTORS.emailAddressInput) + .type(Cypress.env("USER_NAME")) + .get(LOGIN_SELECTORS.emailPasswordInput) + .type(Cypress.env("USER_PASSWORD"), { log: false }) + .get(LOGIN_SELECTORS.signInButton) + .click() +); diff --git a/locale/defaultMessages.json b/locale/defaultMessages.json index 7a0da553b..f5faf5e7b 100644 --- a/locale/defaultMessages.json +++ b/locale/defaultMessages.json @@ -205,6 +205,62 @@ "context": "vat not included in order price", "string": "does not apply" }, + "productExportFieldCategory": { + "context": "product field", + "string": "Category" + }, + "productExportFieldCollections": { + "context": "product field", + "string": "Collections" + }, + "productExportFieldDescription": { + "context": "product field", + "string": "Description" + }, + "productExportFieldName": { + "context": "product field", + "string": "Name" + }, + "productExportFieldPrice": { + "context": "product field", + "string": "Cost Price" + }, + "productExportFieldProductImages": { + "context": "product field", + "string": "Product Images" + }, + "productExportFieldProductWeight": { + "context": "product field", + "string": "Export Product Weight" + }, + "productExportFieldTaxes": { + "context": "product field", + "string": "Charge Taxes" + }, + "productExportFieldType": { + "context": "product field", + "string": "Type" + }, + "productExportFieldVariantImages": { + "context": "product field", + "string": "Variant Images" + }, + "productExportFieldVariantPrice": { + "context": "product field", + "string": "Variant Price" + }, + "productExportFieldVariantSku": { + "context": "product field", + "string": "Export Variant SKU" + }, + "productExportFieldVariantWeight": { + "context": "product field", + "string": "Export Variant Weight" + }, + "productExportFieldVisibility": { + "context": "product field", + "string": "Visibility" + }, "productStatusLabel": { "context": "product", "string": "Published" @@ -3928,34 +3984,22 @@ "context": "product name", "string": "Name" }, + "src_dot_products_dot_components_dot_ProductExportDialog_dot_1004476569": { + "context": "option", + "string": "Export stock for all warehouses" + }, "src_dot_products_dot_components_dot_ProductExportDialog_dot_108342258": { "context": "button", "string": "Load More" }, - "src_dot_products_dot_components_dot_ProductExportDialog_dot_1459686496": { - "context": "product field", - "string": "Visibility" - }, "src_dot_products_dot_components_dot_ProductExportDialog_dot_1547327218": { "context": "there are more elements of list that are hidden", "string": "and {number} more" }, - "src_dot_products_dot_components_dot_ProductExportDialog_dot_1755013298": { - "context": "product field", - "string": "Category" - }, "src_dot_products_dot_components_dot_ProductExportDialog_dot_1890035856": { "context": "informations about product organization, header", "string": "Product Organization" }, - "src_dot_products_dot_components_dot_ProductExportDialog_dot_1952810469": { - "context": "product field", - "string": "Type" - }, - "src_dot_products_dot_components_dot_ProductExportDialog_dot_2051669917": { - "context": "product field", - "string": "Cost Price" - }, "src_dot_products_dot_components_dot_ProductExportDialog_dot_2119710854": { "context": "informations about product seo, header", "string": "SEO Information" @@ -3964,10 +4008,6 @@ "context": "export selected products to csv file", "string": "Selected products ({number})" }, - "src_dot_products_dot_components_dot_ProductExportDialog_dot_222873645": { - "context": "product field", - "string": "Collections" - }, "src_dot_products_dot_components_dot_ProductExportDialog_dot_2318723509": { "context": "export products to csv file, choice field label", "string": "Export information for:" @@ -3976,6 +4016,10 @@ "context": "export all products to csv file", "string": "All products ({number})" }, + "src_dot_products_dot_components_dot_ProductExportDialog_dot_2474350154": { + "context": "list of warehouses", + "string": "Warehouses A to Z" + }, "src_dot_products_dot_components_dot_ProductExportDialog_dot_2659464408": { "context": "product export to csv file, header", "string": "Information exported" @@ -3988,10 +4032,6 @@ "context": "export products to csv file, button", "string": "export products" }, - "src_dot_products_dot_components_dot_ProductExportDialog_dot_2949617129": { - "context": "product field", - "string": "Product Images" - }, "src_dot_products_dot_components_dot_ProductExportDialog_dot_3012202273": { "context": "export products to csv file, dialog header", "string": "Export Information" @@ -4000,14 +4040,6 @@ "context": "product export to csv file, header", "string": "Export Settings" }, - "src_dot_products_dot_components_dot_ProductExportDialog_dot_3374163063": { - "context": "product field", - "string": "Description" - }, - "src_dot_products_dot_components_dot_ProductExportDialog_dot_3441755345": { - "context": "product field", - "string": "Charge Taxes" - }, "src_dot_products_dot_components_dot_ProductExportDialog_dot_3443345452": { "context": "selectt all options", "string": "Select All" @@ -4016,13 +4048,12 @@ "context": "export products as spreadsheet", "string": "Spreadsheet for Excel, Numbers etc." }, - "src_dot_products_dot_components_dot_ProductExportDialog_dot_3544554440": { - "context": "product field", - "string": "Variant Weight" - }, "src_dot_products_dot_components_dot_ProductExportDialog_dot_3599582104": { "string": "Search Atrtibuttes" }, + "src_dot_products_dot_components_dot_ProductExportDialog_dot_3902059658": { + "string": "Export Product Stock Quantity to CSV" + }, "src_dot_products_dot_components_dot_ProductExportDialog_dot_3919525499": { "context": "informations about product stock, header", "string": "Inventory Information" @@ -4031,10 +4062,6 @@ "context": "export products as csv file", "string": "Plain CSV file" }, - "src_dot_products_dot_components_dot_ProductExportDialog_dot_4160582036": { - "context": "product field", - "string": "Variant Price" - }, "src_dot_products_dot_components_dot_ProductExportDialog_dot_472026385": { "context": "select product informations to be exported", "string": "Information exported:" @@ -4043,14 +4070,6 @@ "context": "input helper text, search attributes", "string": "Search by attribute name" }, - "src_dot_products_dot_components_dot_ProductExportDialog_dot_636461959": { - "context": "product field", - "string": "Name" - }, - "src_dot_products_dot_components_dot_ProductExportDialog_dot_693960049": { - "context": "product field", - "string": "SKU" - }, "src_dot_products_dot_components_dot_ProductExportDialog_dot_700651641": { "context": "export filtered products to csv file", "string": "Current search ({number})" @@ -4059,14 +4078,6 @@ "context": "informations about product prices etc, header", "string": "Financial Information" }, - "src_dot_products_dot_components_dot_ProductExportDialog_dot_746695941": { - "context": "product field", - "string": "Weight" - }, - "src_dot_products_dot_components_dot_ProductExportDialog_dot_897437458": { - "context": "product field", - "string": "Variant Images" - }, "src_dot_products_dot_components_dot_ProductImageNavigation_dot_3060635772": { "context": "section header", "string": "All Photos" diff --git a/src/attributes/views/AttributeList/filters.ts b/src/attributes/views/AttributeList/filters.ts index 74c89a557..ac8a3a961 100644 --- a/src/attributes/views/AttributeList/filters.ts +++ b/src/attributes/views/AttributeList/filters.ts @@ -17,7 +17,7 @@ import { AttributeListUrlQueryParams } from "../../urls"; -export const PRODUCT_FILTERS_KEY = "productFilters"; +export const ATTRIBUTE_FILTERS_KEY = "attributeFilters"; export function getFilterOpts( params: AttributeListUrlFilters @@ -130,7 +130,7 @@ export const { deleteFilterTab, getFilterTabs, saveFilterTab -} = createFilterTabUtils(PRODUCT_FILTERS_KEY); +} = createFilterTabUtils(ATTRIBUTE_FILTERS_KEY); export const { areFiltersApplied, getActiveFilters } = createFilterUtils< AttributeListUrlQueryParams, diff --git a/src/auth/errors.ts b/src/auth/errors.ts index 4ced5f7a0..092f745d2 100644 --- a/src/auth/errors.ts +++ b/src/auth/errors.ts @@ -8,7 +8,14 @@ export enum JWTError { } export function isJwtError(error: GraphQLError): boolean { - return !!findValueInEnum(error.extensions.exception.code, JWTError); + let jwtError: boolean; + try { + jwtError = !!findValueInEnum(error.extensions.exception.code, JWTError); + } catch (e) { + jwtError = false; + } + + return jwtError; } export function isTokenExpired(error: GraphQLError): boolean { diff --git a/src/components/ActionDialog/ActionDialog.tsx b/src/components/ActionDialog/ActionDialog.tsx index e11e6da01..c4b41cfb2 100644 --- a/src/components/ActionDialog/ActionDialog.tsx +++ b/src/components/ActionDialog/ActionDialog.tsx @@ -33,7 +33,7 @@ interface ActionDialogProps extends DialogProps { confirmButtonState: ConfirmButtonTransitionState; maxWidth?: "xs" | "sm" | "md" | "lg" | "xl" | false; title: string; - variant?: "default" | "delete"; + variant?: "default" | "delete" | "info"; onConfirm(); } @@ -61,20 +61,22 @@ const ActionDialog: React.FC = props => { - - {confirmButtonLabel || - (variant === "delete" - ? intl.formatMessage(buttonMessages.delete) - : intl.formatMessage(buttonMessages.confirm))} - + {variant !== "info" && ( + + {confirmButtonLabel || + (variant === "delete" + ? intl.formatMessage(buttonMessages.delete) + : intl.formatMessage(buttonMessages.confirm))} + + )} ); diff --git a/src/components/Checkbox/Checkbox.tsx b/src/components/Checkbox/Checkbox.tsx index 529aef513..772800f6b 100644 --- a/src/components/Checkbox/Checkbox.tsx +++ b/src/components/Checkbox/Checkbox.tsx @@ -1,136 +1,25 @@ -import ButtonBase from "@material-ui/core/ButtonBase"; -import { CheckboxProps as MuiCheckboxProps } from "@material-ui/core/Checkbox"; -import { makeStyles } from "@material-ui/core/styles"; -import { fade } from "@material-ui/core/styles/colorManipulator"; -import classNames from "classnames"; +import MuiCheckbox, { + CheckboxProps as MuiCheckboxProps +} from "@material-ui/core/Checkbox"; import React from "react"; export type CheckboxProps = Omit< MuiCheckboxProps, - | "checkedIcon" - | "color" - | "icon" - | "indeterminateIcon" - | "classes" - | "onChange" - | "onClick" + "checkedIcon" | "color" | "icon" | "indeterminateIcon" | "classes" | "onClick" > & { disableClickPropagation?: boolean; - onChange?: (event: React.ChangeEvent) => void; }; -const useStyles = makeStyles( - theme => ({ - box: { - "&$checked": { - "&:before": { - background: theme.palette.primary.main, - color: theme.palette.background.paper, - content: '"\\2713"', - fontWeight: "bold", - textAlign: "center" - }, - borderColor: theme.palette.primary.main - }, - "&$disabled": { - borderColor: theme.palette.grey[200] - }, - "&$indeterminate": { - "&:before": { - background: theme.palette.primary.main, - height: 2, - top: 5 - }, - borderColor: theme.palette.primary.main - }, - "&:before": { - background: "rgba(0, 0, 0, 0)", - content: '""', - height: 14, - left: -1, - position: "absolute", - top: -1, - transition: theme.transitions.duration.short + "ms", - width: 14 - }, - - WebkitAppearance: "none", - border: `1px solid ${theme.palette.action.active}`, - boxSizing: "border-box", - cursor: "pointer", - height: 14, - outline: "0", - position: "relative", - userSelect: "none", - width: 14 - }, - checked: {}, - disabled: {}, - indeterminate: {}, - root: { - "&:hover": { - background: fade(theme.palette.primary.main, 0.1) - }, - alignSelf: "start", - borderRadius: "100%", - cursor: "pointer", - display: "flex", - height: 30, - justifyContent: "center", - margin: "5px 9px", - width: 30 - } - }), - { name: "Checkbox" } -); const Checkbox: React.FC = props => { - const { - checked, - className, - - disabled, - disableClickPropagation, - indeterminate, - onChange, - value, - name, - ...rest - } = props; - const classes = useStyles(props); - - const inputRef = React.useRef(null); - const handleClick = React.useCallback( - disableClickPropagation - ? event => { - event.stopPropagation(); - inputRef.current.click(); - } - : () => inputRef.current.click(), - [] - ); + const { disableClickPropagation, ...rest } = props; return ( - - - + onClick={ + disableClickPropagation ? event => event.stopPropagation() : undefined + } + /> ); }; Checkbox.displayName = "Checkbox"; diff --git a/src/components/ControlledCheckbox.tsx b/src/components/ControlledCheckbox.tsx index ebace41f9..fd4d57b45 100644 --- a/src/components/ControlledCheckbox.tsx +++ b/src/components/ControlledCheckbox.tsx @@ -1,8 +1,7 @@ +import Checkbox from "@material-ui/core/Checkbox"; import FormControlLabel from "@material-ui/core/FormControlLabel"; import React from "react"; -import Checkbox from "./Checkbox"; - interface ControlledCheckboxProps { className?: string; name: string; @@ -27,7 +26,6 @@ export const ControlledCheckbox: React.FC = ({ checked={checked} disabled={disabled} name={name} - disableClickPropagation onChange={() => onChange({ target: { name, value: !checked } })} /> } diff --git a/src/components/TableHead/TableHead.tsx b/src/components/TableHead/TableHead.tsx index 1a1d39602..f382fa1c7 100644 --- a/src/components/TableHead/TableHead.tsx +++ b/src/components/TableHead/TableHead.tsx @@ -28,23 +28,6 @@ const useStyles = makeStyles( cell: { padding: 0 }, - checkboxPartialSelect: { - "& input": { - "&:before": { - background: [theme.palette.background.paper, "!important"] as any, - border: `solid 1px ${theme.palette.primary.main}`, - content: "''" - }, - background: theme.palette.background.paper - }, - "&:after": { - background: theme.palette.primary.main, - content: "''", - height: 2, - position: "absolute", - width: 6 - } - }, checkboxSelected: { backgroundColor: fade(theme.palette.primary.main, 0.05) }, @@ -113,10 +96,7 @@ const TableHead: React.FC = props => { })} > selected && selected > 0 - })} + indeterminate={items && items.length > selected && selected > 0} checked={selected === 0 ? false : true} disabled={disabled} onChange={() => toggleAll(items, selected)} diff --git a/src/icons/Checkbox.tsx b/src/icons/Checkbox.tsx new file mode 100644 index 000000000..174c99378 --- /dev/null +++ b/src/icons/Checkbox.tsx @@ -0,0 +1,18 @@ +import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; +import React from "react"; + +const Checkbox = createSvgIcon( + <> + + >, + "Checkbox" +); + +export default Checkbox; diff --git a/src/icons/CheckboxChecked.tsx b/src/icons/CheckboxChecked.tsx new file mode 100644 index 000000000..63170dac3 --- /dev/null +++ b/src/icons/CheckboxChecked.tsx @@ -0,0 +1,17 @@ +import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; +import React from "react"; + +const CheckboxChecked = createSvgIcon( + <> + + + >, + "CheckboxChecked" +); + +export default CheckboxChecked; diff --git a/src/icons/CheckboxIndeterminate.tsx b/src/icons/CheckboxIndeterminate.tsx new file mode 100644 index 000000000..8079e9b24 --- /dev/null +++ b/src/icons/CheckboxIndeterminate.tsx @@ -0,0 +1,19 @@ +import createSvgIcon from "@material-ui/icons/utils/createSvgIcon"; +import React from "react"; + +const CheckboxIndeterminate = createSvgIcon( + <> + + + >, + "CheckboxIndeterminate" +); + +export default CheckboxIndeterminate; diff --git a/src/misc.ts b/src/misc.ts index 933fcc916..6ab1a53d5 100644 --- a/src/misc.ts +++ b/src/misc.ts @@ -306,10 +306,10 @@ export function createHref(url: string) { interface AnyEvent { stopPropagation: () => void; } -export function stopPropagation(cb: () => void) { +export function stopPropagation(cb: (event?: AnyEvent) => void) { return (event: AnyEvent) => { event.stopPropagation(); - cb(); + cb(event); }; } diff --git a/src/permissionGroups/components/MembersErrorDialog/MembersErrorDialog.tsx b/src/permissionGroups/components/MembersErrorDialog/MembersErrorDialog.tsx index d92b9bd9c..496f637ae 100644 --- a/src/permissionGroups/components/MembersErrorDialog/MembersErrorDialog.tsx +++ b/src/permissionGroups/components/MembersErrorDialog/MembersErrorDialog.tsx @@ -29,7 +29,7 @@ const MembersErrorDialog: React.FC = ({ defaultMessage: "Unassign users", description: "dialog title" })} - variant="default" + variant="info" > > { const initialForm: ExportProductsInput = { exportInfo: { attributes: [], - fields: [] + fields: [], + warehouses: [] }, fileType: FileTypesEnum.CSV, scope: ExportScope.ALL @@ -78,6 +81,7 @@ export interface ProductExportDialogProps extends DialogProps, FetchMoreProps { errors: ExportErrorFragment[]; productQuantity: ProductQuantity; selectedProducts: number; + warehouses: WarehouseList_warehouses_edges_node[]; onFetch: (query: string) => void; onSubmit: (data: ExportProductsInput) => void; } @@ -91,6 +95,7 @@ const ProductExportDialog: React.FC = ({ onSubmit, open, selectedProducts, + warehouses, ...fetchMoreProps }) => { const [step, { next, prev, set: setStep }] = useWizard( @@ -114,6 +119,7 @@ const ProductExportDialog: React.FC = ({ }); const attributeChoices = mapNodeToChoice(attributes); + const warehouseChoices = mapNodeToChoice(warehouses); const handleAttributeSelect: FormChange = event => { const id = event.target.name.substr(attributeNamePrefix.length); @@ -135,6 +141,35 @@ const ProductExportDialog: React.FC = ({ ); }; + const handleWarehouseSelect: FormChange = event => + change({ + target: { + name: "exportInfo", + value: { + ...data.exportInfo, + warehouses: toggle( + event.target.name.substr(warehouseNamePrefix.length), + data.exportInfo.warehouses, + (a, b) => a === b + ) + } + } + }); + + const handleToggleAllWarehouses: FormChange = () => + change({ + target: { + name: "exportInfo", + value: { + ...data.exportInfo, + warehouses: + data.exportInfo.warehouses.length === warehouses.length + ? [] + : warehouses.map(warehouse => warehouse.id) + } + } + }); + return ( <> @@ -156,7 +191,10 @@ const ProductExportDialog: React.FC = ({ data={data} selectedAttributes={selectedAttributes} onAttrtibuteSelect={handleAttributeSelect} + onWarehouseSelect={handleWarehouseSelect} onChange={change} + warehouses={warehouseChoices} + onSelectAllWarehouses={handleToggleAllWarehouses} {...fetchMoreProps} /> )} diff --git a/src/products/components/ProductExportDialog/ProductExportDialogInfo.tsx b/src/products/components/ProductExportDialog/ProductExportDialogInfo.tsx index 23e60815e..c1cae4bb8 100644 --- a/src/products/components/ProductExportDialog/ProductExportDialogInfo.tsx +++ b/src/products/components/ProductExportDialog/ProductExportDialogInfo.tsx @@ -1,15 +1,15 @@ import Button from "@material-ui/core/Button"; -import Checkbox from "@material-ui/core/Checkbox"; import CircularProgress from "@material-ui/core/CircularProgress"; import FormControlLabel from "@material-ui/core/FormControlLabel"; import makeStyles from "@material-ui/core/styles/makeStyles"; import TextField from "@material-ui/core/TextField"; import Typography from "@material-ui/core/Typography"; import Accordion, { AccordionProps } from "@saleor/components/Accordion"; +import Checkbox from "@saleor/components/Checkbox"; import Chip from "@saleor/components/Chip"; import Hr from "@saleor/components/Hr"; import { MultiAutocompleteChoiceType } from "@saleor/components/MultiAutocompleteSelectField"; -import { ChangeEvent } from "@saleor/hooks/useForm"; +import { ChangeEvent, FormChange } from "@saleor/hooks/useForm"; import useSearchQuery from "@saleor/hooks/useSearchQuery"; import { sectionNames } from "@saleor/intl"; import { FetchMoreProps } from "@saleor/types"; @@ -22,9 +22,18 @@ import React from "react"; import { useIntl } from "react-intl"; import { FormattedMessage } from "react-intl"; +import useProductExportFieldMessages from "./messages"; + export const attributeNamePrefix = "attribute-"; +export const warehouseNamePrefix = "warehouse-"; const maxChips = 4; +const inventoryFields = [ + ProductFieldEnum.PRODUCT_WEIGHT, + ProductFieldEnum.VARIANT_SKU, + ProductFieldEnum.VARIANT_WEIGHT +]; + const useStyles = makeStyles( theme => ({ accordion: { @@ -45,12 +54,23 @@ const useStyles = makeStyles( marginBottom: theme.spacing(3), marginTop: theme.spacing(3) }, + hrWarehouses: { + marginBottom: theme.spacing(3), + marginTop: theme.spacing(1) + }, label: { "&&": { overflow: "visible" }, + "&:first-of-type": { + paddingTop: 0 + }, + "&:not(:last-of-type)": { + borderBottom: `1px solid ${theme.palette.divider}` + }, justifyContent: "space-between", margin: theme.spacing(0), + padding: theme.spacing(1, 0), width: "100%" }, loadMoreContainer: { @@ -62,8 +82,14 @@ const useStyles = makeStyles( display: "inline-block", marginBottom: theme.spacing() }, + optionLabel: { + marginLeft: 0 + }, quickPeekContainer: { marginBottom: theme.spacing(-1) + }, + warehousesLabel: { + marginBottom: theme.spacing(2) } }), { @@ -80,12 +106,14 @@ const Option: React.FC<{ return ( @@ -104,66 +132,7 @@ const FieldAccordion: React.FC void; }> = ({ data, fields, onChange, onToggleAll, ...props }) => { const classes = useStyles({}); - const intl = useIntl(); - - const fieldNames: Record = { - [ProductFieldEnum.CATEGORY]: intl.formatMessage({ - defaultMessage: "Category", - description: "product field" - }), - [ProductFieldEnum.CHARGE_TAXES]: intl.formatMessage({ - defaultMessage: "Charge Taxes", - description: "product field" - }), - [ProductFieldEnum.COLLECTIONS]: intl.formatMessage({ - defaultMessage: "Collections", - description: "product field" - }), - [ProductFieldEnum.COST_PRICE]: intl.formatMessage({ - defaultMessage: "Cost Price", - description: "product field" - }), - [ProductFieldEnum.DESCRIPTION]: intl.formatMessage({ - defaultMessage: "Description", - description: "product field" - }), - [ProductFieldEnum.NAME]: intl.formatMessage({ - defaultMessage: "Name", - description: "product field" - }), - [ProductFieldEnum.PRODUCT_IMAGES]: intl.formatMessage({ - defaultMessage: "Product Images", - description: "product field" - }), - [ProductFieldEnum.PRODUCT_TYPE]: intl.formatMessage({ - defaultMessage: "Type", - description: "product field" - }), - [ProductFieldEnum.PRODUCT_WEIGHT]: intl.formatMessage({ - defaultMessage: "Weight", - description: "product field" - }), - [ProductFieldEnum.VARIANT_IMAGES]: intl.formatMessage({ - defaultMessage: "Variant Images", - description: "product field" - }), - [ProductFieldEnum.VARIANT_PRICE]: intl.formatMessage({ - defaultMessage: "Variant Price", - description: "product field" - }), - [ProductFieldEnum.VARIANT_SKU]: intl.formatMessage({ - defaultMessage: "SKU", - description: "product field" - }), - [ProductFieldEnum.VARIANT_WEIGHT]: intl.formatMessage({ - defaultMessage: "Variant Weight", - description: "product field" - }), - [ProductFieldEnum.VISIBLE]: intl.formatMessage({ - defaultMessage: "Visibility", - description: "product field" - }) - }; + const getFieldLabel = useProductExportFieldMessages(); const selectedAll = fields.every(field => data.exportInfo.fields.includes(field) @@ -181,7 +150,7 @@ const FieldAccordion: React.FC ( onChange({ target: { @@ -226,7 +195,7 @@ const FieldAccordion: React.FC - {fieldNames[field]} + {getFieldLabel(field)} ))} @@ -235,11 +204,14 @@ const FieldAccordion: React.FC void; - onChange: (event: ChangeEvent) => void; + onAttrtibuteSelect: FormChange; + onWarehouseSelect: FormChange; + onChange: FormChange; onFetch: (query: string) => void; + onSelectAllWarehouses: FormChange; } const ProductExportDialogInfo: React.FC = ({ @@ -248,14 +220,18 @@ const ProductExportDialogInfo: React.FC = ({ hasMore, selectedAttributes, loading, + warehouses, onAttrtibuteSelect, + onWarehouseSelect, onChange, onFetch, - onFetchMore + onFetchMore, + onSelectAllWarehouses }) => { const classes = useStyles({}); const intl = useIntl(); const [query, onQueryChange] = useSearchQuery(onFetch); + const getFieldLabel = useProductExportFieldMessages(); const handleFieldChange = (event: ChangeEvent) => onChange({ @@ -290,6 +266,12 @@ const ProductExportDialogInfo: React.FC = ({ } }); + const selectedInventoryFields = data.exportInfo.fields.filter(field => + inventoryFields.includes(field) + ); + const selectedAllInventoryFields = + selectedInventoryFields.length === inventoryFields.length; + return ( <> @@ -410,22 +392,134 @@ const ProductExportDialogInfo: React.FC = ({ onToggleAll={handleToggleAllFields} data-test="financial" /> - 0 || + selectedInventoryFields.length > 0) && ( + + {selectedInventoryFields.slice(0, maxChips).map(field => ( + + onChange({ + target: { + name: field, + value: false + } + }) + } + /> + ))} + {data.exportInfo.warehouses + .slice(0, maxChips - selectedInventoryFields.length) + .map(warehouseId => ( + warehouse.value === warehouseId + ).label + } + onClose={() => + onWarehouseSelect({ + target: { + name: warehouseNamePrefix + warehouseId, + value: undefined + } + }) + } + /> + ))} + {data.exportInfo.warehouses.length + + selectedInventoryFields.length > + maxChips && ( + + + + )} + + ) + } data-test="inventory" - /> + > + + + handleToggleAllFields( + inventoryFields, + !selectedAllInventoryFields + ) + } + > + + + {inventoryFields.map(field => ( + + {getFieldLabel(field)} + + ))} + + + + + + + + data.exportInfo.warehouses.includes(warehouse.value) + )} + name="all-warehouses" + onChange={onSelectAllWarehouses} + > + + + + + + + + {warehouses.map(warehouse => ( + + {warehouse.label} + + ))} + messages[field]; +} + +export default useProductExportFieldMessages; diff --git a/src/products/components/ProductUpdatePage/ProductUpdatePage.tsx b/src/products/components/ProductUpdatePage/ProductUpdatePage.tsx index 00cd8e1ce..f0efcfd24 100644 --- a/src/products/components/ProductUpdatePage/ProductUpdatePage.tsx +++ b/src/products/components/ProductUpdatePage/ProductUpdatePage.tsx @@ -167,23 +167,33 @@ export const ProductUpdatePage: React.FC = ({ const hasVariants = maybe(() => product.productType.hasVariants, false); const handleSubmit = (data: ProductUpdatePageFormData) => { - const dataStocks = stocks.map(stock => stock.id); - const variantStocks = product.variants[0].stocks.map( - stock => stock.warehouse.id - ); - const stockDiff = diff(variantStocks, dataStocks); + if (product.productType.hasVariants) { + onSubmit({ + ...data, + addStocks: [], + attributes, + removeStocks: [], + updateStocks: [] + }); + } else { + const dataStocks = stocks.map(stock => stock.id); + const variantStocks = product.variants[0]?.stocks.map( + stock => stock.warehouse.id + ); + const stockDiff = diff(variantStocks, dataStocks); - onSubmit({ - ...data, - addStocks: stocks.filter(stock => - stockDiff.added.some(addedStock => addedStock === stock.id) - ), - attributes, - removeStocks: stockDiff.removed, - updateStocks: stocks.filter( - stock => !stockDiff.added.some(addedStock => addedStock === stock.id) - ) - }); + onSubmit({ + ...data, + addStocks: stocks.filter(stock => + stockDiff.added.some(addedStock => addedStock === stock.id) + ), + attributes, + removeStocks: stockDiff.removed, + updateStocks: stocks.filter( + stock => !stockDiff.added.some(addedStock => addedStock === stock.id) + ) + }); + } }; return ( diff --git a/src/products/views/ProductList/ProductList.tsx b/src/products/views/ProductList/ProductList.tsx index 8e9089ed3..0f55ed6c0 100644 --- a/src/products/views/ProductList/ProductList.tsx +++ b/src/products/views/ProductList/ProductList.tsx @@ -39,6 +39,7 @@ import { ListViews } from "@saleor/types"; import createDialogActionHandlers from "@saleor/utils/handlers/dialogActionHandlers"; import createFilterHandlers from "@saleor/utils/handlers/filterHandlers"; import { getSortUrlVariables } from "@saleor/utils/sort"; +import { useWarehouseList } from "@saleor/warehouses/queries"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; @@ -124,6 +125,11 @@ export const ProductList: React.FC = ({ params }) => { first: 10 } }); + const warehouses = useWarehouseList({ + variables: { + first: 100 + } + }); React.useEffect( () => @@ -551,6 +557,11 @@ export const ProductList: React.FC = ({ params }) => { filter: data?.products.totalCount }} selectedProducts={listElements.length} + warehouses={ + warehouses.data?.warehouses.edges.map( + edge => edge.node + ) || [] + } onClose={closeModal} onSubmit={data => exportProducts({ diff --git a/src/staff/components/StaffProperties/StaffProperties.tsx b/src/staff/components/StaffProperties/StaffProperties.tsx index 1fa153f4d..1a2b10f63 100644 --- a/src/staff/components/StaffProperties/StaffProperties.tsx +++ b/src/staff/components/StaffProperties/StaffProperties.tsx @@ -35,7 +35,7 @@ const useStyles = makeStyles( width: 120 }, avatarDefault: { - "& p": { + "& div": { color: "#fff", fontSize: 35, fontWeight: "bold", diff --git a/src/storybook/__snapshots__/Stories.test.ts.snap b/src/storybook/__snapshots__/Stories.test.ts.snap index b7a93b524..085d7b826 100644 --- a/src/storybook/__snapshots__/Stories.test.ts.snap +++ b/src/storybook/__snapshots__/Stories.test.ts.snap @@ -1329,18 +1329,43 @@ exports[`Storyshots Generics / Checkbox checked 1`] = ` - - - + + + + + + + + @@ -1357,20 +1382,39 @@ exports[`Storyshots Generics / Checkbox disabled 1`] = ` - - - + + + + + + + @@ -1388,18 +1432,37 @@ exports[`Storyshots Generics / Checkbox interactive 1`] = ` class="MuiCardContent-root-id" > - - - + + + + + + + @@ -1417,18 +1480,37 @@ exports[`Storyshots Generics / Checkbox unchecked 1`] = ` - - - + + + + + + + @@ -1445,18 +1527,44 @@ exports[`Storyshots Generics / Checkbox undeterminate 1`] = ` - - - + + + + + + + + @@ -1899,17 +2007,42 @@ exports[`Storyshots Generics / Filter default 1`] = ` - - - + + + + + + + + @@ -2064,17 +2197,36 @@ exports[`Storyshots Generics / Filter default 1`] = ` - - - + + + + + + + @@ -2088,17 +2240,36 @@ exports[`Storyshots Generics / Filter default 1`] = ` - - - + + + + + + + @@ -2112,17 +2283,42 @@ exports[`Storyshots Generics / Filter default 1`] = ` - - - + + + + + + + + @@ -2357,17 +2553,42 @@ exports[`Storyshots Generics / Filter interactive 1`] = ` - - - + + + + + + + + @@ -2522,17 +2743,36 @@ exports[`Storyshots Generics / Filter interactive 1`] = ` - - - + + + + + + + @@ -2546,17 +2786,36 @@ exports[`Storyshots Generics / Filter interactive 1`] = ` - - - + + + + + + + @@ -2570,17 +2829,42 @@ exports[`Storyshots Generics / Filter interactive 1`] = ` - - - + + + + + + + + @@ -3540,17 +3824,42 @@ exports[`Storyshots Generics / Multiple select with autocomplete can load more 1 role="menuitem" tabindex="-1" > - - - + + + + + + + + @@ -3567,17 +3876,36 @@ exports[`Storyshots Generics / Multiple select with autocomplete can load more 1 role="menuitem" tabindex="-1" > - - - + + + + + + + @@ -3591,17 +3919,36 @@ exports[`Storyshots Generics / Multiple select with autocomplete can load more 1 role="menuitem" tabindex="-1" > - - - + + + + + + + @@ -3615,17 +3962,36 @@ exports[`Storyshots Generics / Multiple select with autocomplete can load more 1 role="menuitem" tabindex="-1" > - - - + + + + + + + @@ -3639,17 +4005,36 @@ exports[`Storyshots Generics / Multiple select with autocomplete can load more 1 role="menuitem" tabindex="-1" > - - - + + + + + + + @@ -3663,17 +4048,36 @@ exports[`Storyshots Generics / Multiple select with autocomplete can load more 1 role="menuitem" tabindex="-1" > - - - + + + + + + + @@ -3687,17 +4091,36 @@ exports[`Storyshots Generics / Multiple select with autocomplete can load more 1 role="menuitem" tabindex="-1" > - - - + + + + + + + @@ -3711,17 +4134,36 @@ exports[`Storyshots Generics / Multiple select with autocomplete can load more 1 role="menuitem" tabindex="-1" > - - - + + + + + + + @@ -3735,17 +4177,36 @@ exports[`Storyshots Generics / Multiple select with autocomplete can load more 1 role="menuitem" tabindex="-1" > - - - + + + + + + + @@ -3759,17 +4220,36 @@ exports[`Storyshots Generics / Multiple select with autocomplete can load more 1 role="menuitem" tabindex="-1" > - - - + + + + + + + @@ -3783,17 +4263,36 @@ exports[`Storyshots Generics / Multiple select with autocomplete can load more 1 role="menuitem" tabindex="-1" > - - - + + + + + + + @@ -3868,17 +4367,42 @@ exports[`Storyshots Generics / Multiple select with autocomplete default 1`] = ` role="menuitem" tabindex="-1" > - - - + + + + + + + + @@ -3895,17 +4419,36 @@ exports[`Storyshots Generics / Multiple select with autocomplete default 1`] = ` role="menuitem" tabindex="-1" > - - - + + + + + + + @@ -3919,17 +4462,36 @@ exports[`Storyshots Generics / Multiple select with autocomplete default 1`] = ` role="menuitem" tabindex="-1" > - - - + + + + + + + @@ -3943,17 +4505,36 @@ exports[`Storyshots Generics / Multiple select with autocomplete default 1`] = ` role="menuitem" tabindex="-1" > - - - + + + + + + + @@ -3967,17 +4548,36 @@ exports[`Storyshots Generics / Multiple select with autocomplete default 1`] = ` role="menuitem" tabindex="-1" > - - - + + + + + + + @@ -3991,17 +4591,36 @@ exports[`Storyshots Generics / Multiple select with autocomplete default 1`] = ` role="menuitem" tabindex="-1" > - - - + + + + + + + @@ -4015,17 +4634,36 @@ exports[`Storyshots Generics / Multiple select with autocomplete default 1`] = ` role="menuitem" tabindex="-1" > - - - + + + + + + + @@ -4039,17 +4677,36 @@ exports[`Storyshots Generics / Multiple select with autocomplete default 1`] = ` role="menuitem" tabindex="-1" > - - - + + + + + + + @@ -4063,17 +4720,36 @@ exports[`Storyshots Generics / Multiple select with autocomplete default 1`] = ` role="menuitem" tabindex="-1" > - - - + + + + + + + @@ -4087,17 +4763,36 @@ exports[`Storyshots Generics / Multiple select with autocomplete default 1`] = ` role="menuitem" tabindex="-1" > - - - + + + + + + + @@ -4111,17 +4806,36 @@ exports[`Storyshots Generics / Multiple select with autocomplete default 1`] = ` role="menuitem" tabindex="-1" > - - - + + + + + + + @@ -4646,17 +5360,42 @@ exports[`Storyshots Generics / Multiple select with autocomplete no data 1`] = ` role="menuitem" tabindex="-1" > - - - + + + + + + + + @@ -12268,18 +13007,37 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook default 1`] = ` - - - + + + + + + + @@ -12293,18 +13051,37 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook default 1`] = ` - - - + + + + + + + @@ -12316,18 +13093,37 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook default 1`] = ` - - - + + + + + + + @@ -12339,18 +13135,37 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook default 1`] = ` - - - + + + + + + + @@ -12362,18 +13177,37 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook default 1`] = ` - - - + + + + + + + @@ -12385,18 +13219,37 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook default 1`] = ` - - - + + + + + + + @@ -12408,18 +13261,37 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook default 1`] = ` - - - + + + + + + + @@ -12431,18 +13303,37 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook default 1`] = ` - - - + + + + + + + @@ -12454,18 +13345,37 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook default 1`] = ` - - - + + + + + + + @@ -12477,18 +13387,37 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook default 1`] = ` - - - + + + + + + + @@ -12500,18 +13429,37 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook default 1`] = ` - - - + + + + + + + @@ -12523,18 +13471,37 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook default 1`] = ` - - - + + + + + + + @@ -12546,18 +13513,37 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook default 1`] = ` - - - + + + + + + + @@ -12569,18 +13555,37 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook default 1`] = ` - - - + + + + + + + @@ -12592,18 +13597,37 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook default 1`] = ` - - - + + + + + + + @@ -12648,18 +13672,37 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook default 1`] = ` - - - + + + + + + + @@ -12908,18 +13951,37 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook form errors 1`] = ` - - - + + + + + + + @@ -12933,18 +13995,37 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook form errors 1`] = ` - - - + + + + + + + @@ -12956,18 +14037,37 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook form errors 1`] = ` - - - + + + + + + + @@ -12979,18 +14079,37 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook form errors 1`] = ` - - - + + + + + + + @@ -13002,18 +14121,37 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook form errors 1`] = ` - - - + + + + + + + @@ -13025,18 +14163,37 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook form errors 1`] = ` - - - + + + + + + + @@ -13048,18 +14205,37 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook form errors 1`] = ` - - - + + + + + + + @@ -13071,18 +14247,37 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook form errors 1`] = ` - - - + + + + + + + @@ -13094,18 +14289,37 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook form errors 1`] = ` - - - + + + + + + + @@ -13117,18 +14331,37 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook form errors 1`] = ` - - - + + + + + + + @@ -13140,18 +14373,37 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook form errors 1`] = ` - - - + + + + + + + @@ -13163,18 +14415,37 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook form errors 1`] = ` - - - + + + + + + + @@ -13186,18 +14457,37 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook form errors 1`] = ` - - - + + + + + + + @@ -13209,18 +14499,37 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook form errors 1`] = ` - - - + + + + + + + @@ -13232,18 +14541,37 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook form errors 1`] = ` - - - + + + + + + + @@ -13288,18 +14616,37 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook form errors 1`] = ` - - - + + + + + + + @@ -13546,20 +14893,39 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook loading 1`] = ` - - - + + + + + + + @@ -13573,20 +14939,39 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook loading 1`] = ` - - - + + + + + + + @@ -13598,20 +14983,39 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook loading 1`] = ` - - - + + + + + + + @@ -13623,20 +15027,39 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook loading 1`] = ` - - - + + + + + + + @@ -13648,20 +15071,39 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook loading 1`] = ` - - - + + + + + + + @@ -13673,20 +15115,39 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook loading 1`] = ` - - - + + + + + + + @@ -13698,20 +15159,39 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook loading 1`] = ` - - - + + + + + + + @@ -13723,20 +15203,39 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook loading 1`] = ` - - - + + + + + + + @@ -13748,20 +15247,39 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook loading 1`] = ` - - - + + + + + + + @@ -13773,20 +15291,39 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook loading 1`] = ` - - - + + + + + + + @@ -13798,20 +15335,39 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook loading 1`] = ` - - - + + + + + + + @@ -13823,20 +15379,39 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook loading 1`] = ` - - - + + + + + + + @@ -13848,20 +15423,39 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook loading 1`] = ` - - - + + + + + + + @@ -13873,20 +15467,39 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook loading 1`] = ` - - - + + + + + + + @@ -13898,20 +15511,39 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook loading 1`] = ` - - - + + + + + + + @@ -13956,20 +15588,39 @@ exports[`Storyshots Views / Apps / Webhooks / Create webhook loading 1`] = ` - - - + + + + + + + @@ -14225,18 +15876,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details default 1`] = ` - - - + + + + + + + @@ -14250,18 +15920,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details default 1`] = ` - - - + + + + + + + @@ -14273,18 +15962,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details default 1`] = ` - - - + + + + + + + @@ -14296,18 +16004,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details default 1`] = ` - - - + + + + + + + @@ -14319,18 +16046,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details default 1`] = ` - - - + + + + + + + @@ -14342,18 +16088,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details default 1`] = ` - - - + + + + + + + @@ -14365,18 +16130,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details default 1`] = ` - - - + + + + + + + @@ -14388,18 +16172,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details default 1`] = ` - - - + + + + + + + @@ -14411,18 +16214,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details default 1`] = ` - - - + + + + + + + @@ -14434,18 +16256,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details default 1`] = ` - - - + + + + + + + @@ -14457,18 +16298,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details default 1`] = ` - - - + + + + + + + @@ -14480,18 +16340,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details default 1`] = ` - - - + + + + + + + @@ -14503,18 +16382,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details default 1`] = ` - - - + + + + + + + @@ -14526,18 +16424,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details default 1`] = ` - - - + + + + + + + @@ -14549,18 +16466,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details default 1`] = ` - - - + + + + + + + @@ -14605,18 +16541,43 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details default 1`] = ` - - - + + + + + + + + @@ -14865,18 +16826,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details form errors 1`] = - - - + + + + + + + @@ -14890,18 +16870,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details form errors 1`] = - - - + + + + + + + @@ -14913,18 +16912,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details form errors 1`] = - - - + + + + + + + @@ -14936,18 +16954,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details form errors 1`] = - - - + + + + + + + @@ -14959,18 +16996,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details form errors 1`] = - - - + + + + + + + @@ -14982,18 +17038,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details form errors 1`] = - - - + + + + + + + @@ -15005,18 +17080,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details form errors 1`] = - - - + + + + + + + @@ -15028,18 +17122,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details form errors 1`] = - - - + + + + + + + @@ -15051,18 +17164,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details form errors 1`] = - - - + + + + + + + @@ -15074,18 +17206,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details form errors 1`] = - - - + + + + + + + @@ -15097,18 +17248,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details form errors 1`] = - - - + + + + + + + @@ -15120,18 +17290,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details form errors 1`] = - - - + + + + + + + @@ -15143,18 +17332,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details form errors 1`] = - - - + + + + + + + @@ -15166,18 +17374,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details form errors 1`] = - - - + + + + + + + @@ -15189,18 +17416,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details form errors 1`] = - - - + + + + + + + @@ -15245,18 +17491,43 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details form errors 1`] = - - - + + + + + + + + @@ -15503,20 +17774,39 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details loading 1`] = ` - - - + + + + + + + @@ -15530,20 +17820,39 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details loading 1`] = ` - - - + + + + + + + @@ -15555,20 +17864,39 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details loading 1`] = ` - - - + + + + + + + @@ -15580,20 +17908,39 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details loading 1`] = ` - - - + + + + + + + @@ -15605,20 +17952,39 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details loading 1`] = ` - - - + + + + + + + @@ -15630,20 +17996,39 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details loading 1`] = ` - - - + + + + + + + @@ -15655,20 +18040,39 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details loading 1`] = ` - - - + + + + + + + @@ -15680,20 +18084,39 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details loading 1`] = ` - - - + + + + + + + @@ -15705,20 +18128,39 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details loading 1`] = ` - - - + + + + + + + @@ -15730,20 +18172,39 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details loading 1`] = ` - - - + + + + + + + @@ -15755,20 +18216,39 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details loading 1`] = ` - - - + + + + + + + @@ -15780,20 +18260,39 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details loading 1`] = ` - - - + + + + + + + @@ -15805,20 +18304,39 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details loading 1`] = ` - - - + + + + + + + @@ -15830,20 +18348,39 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details loading 1`] = ` - - - + + + + + + + @@ -15855,20 +18392,39 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details loading 1`] = ` - - - + + + + + + + @@ -15913,20 +18469,39 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details loading 1`] = ` - - - + + + + + + + @@ -16170,18 +18745,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details unnamed 1`] = ` - - - + + + + + + + @@ -16195,18 +18789,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details unnamed 1`] = ` - - - + + + + + + + @@ -16218,18 +18831,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details unnamed 1`] = ` - - - + + + + + + + @@ -16241,18 +18873,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details unnamed 1`] = ` - - - + + + + + + + @@ -16264,18 +18915,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details unnamed 1`] = ` - - - + + + + + + + @@ -16287,18 +18957,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details unnamed 1`] = ` - - - + + + + + + + @@ -16310,18 +18999,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details unnamed 1`] = ` - - - + + + + + + + @@ -16333,18 +19041,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details unnamed 1`] = ` - - - + + + + + + + @@ -16356,18 +19083,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details unnamed 1`] = ` - - - + + + + + + + @@ -16379,18 +19125,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details unnamed 1`] = ` - - - + + + + + + + @@ -16402,18 +19167,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details unnamed 1`] = ` - - - + + + + + + + @@ -16425,18 +19209,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details unnamed 1`] = ` - - - + + + + + + + @@ -16448,18 +19251,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details unnamed 1`] = ` - - - + + + + + + + @@ -16471,18 +19293,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details unnamed 1`] = ` - - - + + + + + + + @@ -16494,18 +19335,37 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details unnamed 1`] = ` - - - + + + + + + + @@ -16550,18 +19410,43 @@ exports[`Storyshots Views / Apps / Webhooks / Webhook details unnamed 1`] = ` - - - + + + + + + + + @@ -16771,18 +19656,43 @@ exports[`Storyshots Views / Attributes / Attribute details create 1`] = ` - - - + + + + + + + + @@ -17057,18 +19967,43 @@ exports[`Storyshots Views / Attributes / Attribute details create 1`] = ` - - - + + + + + + + + @@ -17119,18 +20054,43 @@ exports[`Storyshots Views / Attributes / Attribute details create 1`] = ` - - - + + + + + + + + @@ -17154,18 +20114,43 @@ exports[`Storyshots Views / Attributes / Attribute details create 1`] = ` - - - + + + + + + + + @@ -17183,18 +20168,43 @@ exports[`Storyshots Views / Attributes / Attribute details create 1`] = ` - - - + + + + + + + + @@ -17408,18 +20418,43 @@ exports[`Storyshots Views / Attributes / Attribute details default 1`] = ` - - - + + + + + + + + @@ -17694,18 +20729,43 @@ exports[`Storyshots Views / Attributes / Attribute details default 1`] = ` - - - + + + + + + + + @@ -17756,18 +20816,43 @@ exports[`Storyshots Views / Attributes / Attribute details default 1`] = ` - - - + + + + + + + + @@ -17791,18 +20876,37 @@ exports[`Storyshots Views / Attributes / Attribute details default 1`] = ` - - - + + + + + + + @@ -17820,18 +20924,43 @@ exports[`Storyshots Views / Attributes / Attribute details default 1`] = ` - - - + + + + + + + + @@ -18050,18 +21179,43 @@ exports[`Storyshots Views / Attributes / Attribute details form errors 1`] = ` - - - + + + + + + + + @@ -18336,18 +21490,43 @@ exports[`Storyshots Views / Attributes / Attribute details form errors 1`] = ` - - - + + + + + + + + @@ -18403,18 +21582,43 @@ exports[`Storyshots Views / Attributes / Attribute details form errors 1`] = ` - - - + + + + + + + + @@ -18438,18 +21642,37 @@ exports[`Storyshots Views / Attributes / Attribute details form errors 1`] = ` - - - + + + + + + + @@ -18467,18 +21690,43 @@ exports[`Storyshots Views / Attributes / Attribute details form errors 1`] = ` - - - + + + + + + + + @@ -18699,20 +21947,45 @@ exports[`Storyshots Views / Attributes / Attribute details loading 1`] = ` - - - + + + + + + + + @@ -18920,20 +22193,45 @@ exports[`Storyshots Views / Attributes / Attribute details loading 1`] = ` - - - + + + + + + + + @@ -18985,20 +22283,45 @@ exports[`Storyshots Views / Attributes / Attribute details loading 1`] = ` - - - + + + + + + + + @@ -19022,20 +22345,45 @@ exports[`Storyshots Views / Attributes / Attribute details loading 1`] = ` - - - + + + + + + + + @@ -19053,20 +22401,45 @@ exports[`Storyshots Views / Attributes / Attribute details loading 1`] = ` - - - + + + + + + + + @@ -19280,18 +22653,43 @@ exports[`Storyshots Views / Attributes / Attribute details multiple select input - - - + + + + + + + + @@ -19566,18 +22964,43 @@ exports[`Storyshots Views / Attributes / Attribute details multiple select input - - - + + + + + + + + @@ -19628,18 +23051,43 @@ exports[`Storyshots Views / Attributes / Attribute details multiple select input - - - + + + + + + + + @@ -19663,18 +23111,37 @@ exports[`Storyshots Views / Attributes / Attribute details multiple select input - - - + + + + + + + @@ -19692,18 +23159,43 @@ exports[`Storyshots Views / Attributes / Attribute details multiple select input - - - + + + + + + + + @@ -19917,18 +23409,43 @@ exports[`Storyshots Views / Attributes / Attribute details no values 1`] = ` - - - + + + + + + + + @@ -20135,18 +23652,43 @@ exports[`Storyshots Views / Attributes / Attribute details no values 1`] = ` - - - + + + + + + + + @@ -20197,18 +23739,43 @@ exports[`Storyshots Views / Attributes / Attribute details no values 1`] = ` - - - + + + + + + + + @@ -20232,18 +23799,37 @@ exports[`Storyshots Views / Attributes / Attribute details no values 1`] = ` - - - + + + + + + + @@ -20261,18 +23847,43 @@ exports[`Storyshots Views / Attributes / Attribute details no values 1`] = ` - - - + + + + + + + + @@ -20431,17 +24042,36 @@ exports[`Storyshots Views / Attributes / Attribute list default 1`] = ` class="MuiTableCell-root-id MuiTableCell-head-id MuiTableCell-paddingCheckbox-id" scope="col" > - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + + @@ -35323,17 +39757,36 @@ Ctrl + K" class="MuiTableCell-root-id MuiTableCell-head-id MuiTableCell-paddingCheckbox-id" scope="col" > - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + + @@ -36535,19 +41089,38 @@ Ctrl + K" class="MuiTableCell-root-id MuiTableCell-head-id MuiTableCell-paddingCheckbox-id" scope="col" > - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + + @@ -38148,20 +42765,45 @@ Ctrl + K" - - - + + + + + + + + @@ -38317,17 +42959,36 @@ exports[`Storyshots Views / Collections / Collection list default 1`] = ` class="MuiTableCell-root-id MuiTableCell-head-id MuiTableCell-paddingCheckbox-id" scope="col" > - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + + @@ -45847,18 +50685,43 @@ exports[`Storyshots Views / Customers / Customer details different addresses 1`] - - - + + + + + + + + @@ -46416,18 +51279,43 @@ exports[`Storyshots Views / Customers / Customer details form errors 1`] = ` - - - + + + + + + + + @@ -46973,20 +51861,39 @@ exports[`Storyshots Views / Customers / Customer details loading 1`] = ` - - - + + + + + + + @@ -47486,18 +52393,43 @@ exports[`Storyshots Views / Customers / Customer details never logged 1`] = ` - - - + + + + + + + + @@ -48012,18 +52944,43 @@ exports[`Storyshots Views / Customers / Customer details never placed order 1`] - - - + + + + + + + + @@ -48538,18 +53495,43 @@ exports[`Storyshots Views / Customers / Customer details no address at all 1`] = - - - + + + + + + + + @@ -49045,18 +54027,43 @@ exports[`Storyshots Views / Customers / Customer details no default billing addr - - - + + + + + + + + @@ -49577,18 +54584,43 @@ exports[`Storyshots Views / Customers / Customer details no default shipping add - - - + + + + + + + + @@ -50187,17 +55219,36 @@ exports[`Storyshots Views / Customers / Customer list default 1`] = ` class="MuiTableCell-root-id MuiTableCell-head-id MuiTableCell-paddingCheckbox-id" scope="col" > - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + @@ -52623,18 +58187,37 @@ exports[`Storyshots Views / Discounts / Sale create form errors 1`] = ` - - - + + + + + + + @@ -52990,18 +58573,37 @@ exports[`Storyshots Views / Discounts / Sale create loading 1`] = ` - - - + + + + + + + @@ -53385,17 +58987,36 @@ exports[`Storyshots Views / Discounts / Sale details collections 1`] = ` class="MuiTableCell-root-id MuiTableCell-head-id MuiTableCell-paddingCheckbox-id" scope="col" > - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + @@ -54135,17 +59794,36 @@ exports[`Storyshots Views / Discounts / Sale details default 1`] = ` class="MuiTableCell-root-id MuiTableCell-head-id MuiTableCell-paddingCheckbox-id" scope="col" > - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + @@ -54895,17 +60611,36 @@ exports[`Storyshots Views / Discounts / Sale details form errors 1`] = ` class="MuiTableCell-root-id MuiTableCell-head-id MuiTableCell-paddingCheckbox-id" scope="col" > - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + @@ -55666,19 +61439,38 @@ exports[`Storyshots Views / Discounts / Sale details loading 1`] = ` class="MuiTableCell-root-id MuiTableCell-head-id MuiTableCell-paddingCheckbox-id" scope="col" > - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + @@ -56448,17 +62278,36 @@ exports[`Storyshots Views / Discounts / Sale details products 1`] = ` class="MuiTableCell-root-id MuiTableCell-head-id MuiTableCell-paddingCheckbox-id" scope="col" > - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + @@ -57240,17 +63184,36 @@ exports[`Storyshots Views / Discounts / Sale list default 1`] = ` class="MuiTableCell-root-id MuiTableCell-head-id MuiTableCell-paddingCheckbox-id" scope="col" > - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + @@ -59050,18 +65165,37 @@ exports[`Storyshots Views / Discounts / Voucher create default 1`] = ` - - - + + + + + + + @@ -59071,18 +65205,37 @@ exports[`Storyshots Views / Discounts / Voucher create default 1`] = ` - - - + + + + + + + @@ -59195,18 +65348,37 @@ exports[`Storyshots Views / Discounts / Voucher create default 1`] = ` - - - + + + + + + + @@ -59608,18 +65780,37 @@ exports[`Storyshots Views / Discounts / Voucher create form errors 1`] = ` - - - + + + + + + + @@ -59853,18 +66044,37 @@ exports[`Storyshots Views / Discounts / Voucher create form errors 1`] = ` - - - + + + + + + + @@ -59874,18 +66084,37 @@ exports[`Storyshots Views / Discounts / Voucher create form errors 1`] = ` - - - + + + + + + + @@ -60008,18 +66237,37 @@ exports[`Storyshots Views / Discounts / Voucher create form errors 1`] = ` - - - + + + + + + + @@ -60522,18 +66770,37 @@ exports[`Storyshots Views / Discounts / Voucher details default 1`] = ` - - - + + + + + + + @@ -60811,18 +67078,37 @@ exports[`Storyshots Views / Discounts / Voucher details default 1`] = ` - - - + + + + + + + @@ -60832,18 +67118,37 @@ exports[`Storyshots Views / Discounts / Voucher details default 1`] = ` - - - + + + + + + + @@ -60956,18 +67261,37 @@ exports[`Storyshots Views / Discounts / Voucher details default 1`] = ` - - - + + + + + + + @@ -61618,18 +67942,37 @@ exports[`Storyshots Views / Discounts / Voucher details form errors 1`] = ` - - - + + + + + + + @@ -61912,18 +68255,37 @@ exports[`Storyshots Views / Discounts / Voucher details form errors 1`] = ` - - - + + + + + + + @@ -61933,18 +68295,37 @@ exports[`Storyshots Views / Discounts / Voucher details form errors 1`] = ` - - - + + + + + + + @@ -62067,18 +68448,37 @@ exports[`Storyshots Views / Discounts / Voucher details form errors 1`] = ` - - - + + + + + + + @@ -62725,20 +69125,39 @@ exports[`Storyshots Views / Discounts / Voucher details loading 1`] = ` - - - + + + + + + + @@ -62984,18 +69403,37 @@ exports[`Storyshots Views / Discounts / Voucher details loading 1`] = ` - - - + + + + + + + @@ -63005,18 +69443,37 @@ exports[`Storyshots Views / Discounts / Voucher details loading 1`] = ` - - - + + + + + + + @@ -63131,18 +69588,37 @@ exports[`Storyshots Views / Discounts / Voucher details loading 1`] = ` - - - + + + + + + + @@ -63452,17 +69928,36 @@ exports[`Storyshots Views / Discounts / Voucher list default 1`] = ` class="MuiTableCell-root-id MuiTableCell-head-id MuiTableCell-paddingCheckbox-id" scope="col" > - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + + @@ -72816,18 +79944,43 @@ exports[`Storyshots Views / Orders / Fulfill order error 1`] = ` - - - + + + + + + + + @@ -72985,18 +80138,43 @@ exports[`Storyshots Views / Orders / Fulfill order loading 1`] = ` - - - + + + + + + + + @@ -73320,18 +80498,43 @@ exports[`Storyshots Views / Orders / Fulfill order one warehouse 1`] = ` - - - + + + + + + + + @@ -96341,17 +103544,36 @@ exports[`Storyshots Views / Pages / Page list default 1`] = ` class="MuiTableCell-root-id MuiTableCell-head-id MuiTableCell-paddingCheckbox-id" scope="col" > - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - @@ -97550,8 +104891,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create default role="presentation" viewBox="0 0 24 24" > - @@ -97598,8 +104944,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create default role="presentation" viewBox="0 0 24 24" > - @@ -97646,8 +104997,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create default role="presentation" viewBox="0 0 24 24" > - @@ -97694,8 +105050,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create default role="presentation" viewBox="0 0 24 24" > - @@ -97742,8 +105103,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create default role="presentation" viewBox="0 0 24 24" > - @@ -97790,8 +105156,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create default role="presentation" viewBox="0 0 24 24" > - @@ -97838,8 +105209,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create default role="presentation" viewBox="0 0 24 24" > - @@ -97886,8 +105262,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create default role="presentation" viewBox="0 0 24 24" > - @@ -97934,8 +105315,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create default role="presentation" viewBox="0 0 24 24" > - @@ -97982,8 +105368,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create default role="presentation" viewBox="0 0 24 24" > - @@ -98030,8 +105421,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create default role="presentation" viewBox="0 0 24 24" > - @@ -98078,8 +105474,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create default role="presentation" viewBox="0 0 24 24" > - @@ -98244,8 +105645,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create errors 1 role="presentation" viewBox="0 0 24 24" > - @@ -98298,8 +105704,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create errors 1 role="presentation" viewBox="0 0 24 24" > - @@ -98346,8 +105757,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create errors 1 role="presentation" viewBox="0 0 24 24" > - @@ -98394,8 +105810,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create errors 1 role="presentation" viewBox="0 0 24 24" > - @@ -98442,8 +105863,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create errors 1 role="presentation" viewBox="0 0 24 24" > - @@ -98490,8 +105916,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create errors 1 role="presentation" viewBox="0 0 24 24" > - @@ -98538,8 +105969,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create errors 1 role="presentation" viewBox="0 0 24 24" > - @@ -98586,8 +106022,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create errors 1 role="presentation" viewBox="0 0 24 24" > - @@ -98634,8 +106075,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create errors 1 role="presentation" viewBox="0 0 24 24" > - @@ -98682,8 +106128,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create errors 1 role="presentation" viewBox="0 0 24 24" > - @@ -98730,8 +106181,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create errors 1 role="presentation" viewBox="0 0 24 24" > - @@ -98778,8 +106234,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create errors 1 role="presentation" viewBox="0 0 24 24" > - @@ -98826,8 +106287,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create errors 1 role="presentation" viewBox="0 0 24 24" > - @@ -98990,8 +106456,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create loading role="presentation" viewBox="0 0 24 24" > - @@ -99044,8 +106515,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create loading role="presentation" viewBox="0 0 24 24" > - @@ -99092,8 +106568,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create loading role="presentation" viewBox="0 0 24 24" > - @@ -99140,8 +106621,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create loading role="presentation" viewBox="0 0 24 24" > - @@ -99188,8 +106674,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create loading role="presentation" viewBox="0 0 24 24" > - @@ -99236,8 +106727,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create loading role="presentation" viewBox="0 0 24 24" > - @@ -99284,8 +106780,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create loading role="presentation" viewBox="0 0 24 24" > - @@ -99332,8 +106833,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create loading role="presentation" viewBox="0 0 24 24" > - @@ -99380,8 +106886,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create loading role="presentation" viewBox="0 0 24 24" > - @@ -99428,8 +106939,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create loading role="presentation" viewBox="0 0 24 24" > - @@ -99476,8 +106992,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create loading role="presentation" viewBox="0 0 24 24" > - @@ -99524,8 +107045,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create loading role="presentation" viewBox="0 0 24 24" > - @@ -99572,8 +107098,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Create loading role="presentation" viewBox="0 0 24 24" > - @@ -99759,17 +107290,36 @@ exports[`Storyshots Views / Permission Groups / Permission Group Details default class="MuiTableCell-root-id MuiTableCell-head-id MuiTableCell-paddingCheckbox-id" scope="col" > - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - @@ -100220,8 +107851,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Details default role="presentation" viewBox="0 0 24 24" > - @@ -100268,8 +107904,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Details default role="presentation" viewBox="0 0 24 24" > - @@ -100316,8 +107957,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Details default role="presentation" viewBox="0 0 24 24" > - @@ -100365,8 +108011,18 @@ exports[`Storyshots Views / Permission Groups / Permission Group Details default role="presentation" viewBox="0 0 24 24" > + @@ -100413,8 +108069,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Details default role="presentation" viewBox="0 0 24 24" > - @@ -100461,8 +108122,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Details default role="presentation" viewBox="0 0 24 24" > - @@ -100509,8 +108175,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Details default role="presentation" viewBox="0 0 24 24" > - @@ -100557,8 +108228,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Details default role="presentation" viewBox="0 0 24 24" > - @@ -100605,8 +108281,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Details default role="presentation" viewBox="0 0 24 24" > - @@ -100653,8 +108334,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Details default role="presentation" viewBox="0 0 24 24" > - @@ -100701,8 +108387,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Details default role="presentation" viewBox="0 0 24 24" > - @@ -100749,8 +108440,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Details default role="presentation" viewBox="0 0 24 24" > - @@ -100925,19 +108621,38 @@ exports[`Storyshots Views / Permission Groups / Permission Group Details loading class="MuiTableCell-root-id MuiTableCell-head-id MuiTableCell-paddingCheckbox-id" scope="col" > - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - @@ -101587,8 +109383,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Details no memb role="presentation" viewBox="0 0 24 24" > - @@ -101641,8 +109442,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Details no memb role="presentation" viewBox="0 0 24 24" > - @@ -101689,8 +109495,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Details no memb role="presentation" viewBox="0 0 24 24" > - @@ -101737,8 +109548,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Details no memb role="presentation" viewBox="0 0 24 24" > - @@ -101786,8 +109602,18 @@ exports[`Storyshots Views / Permission Groups / Permission Group Details no memb role="presentation" viewBox="0 0 24 24" > + @@ -101834,8 +109660,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Details no memb role="presentation" viewBox="0 0 24 24" > - @@ -101882,8 +109713,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Details no memb role="presentation" viewBox="0 0 24 24" > - @@ -101930,8 +109766,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Details no memb role="presentation" viewBox="0 0 24 24" > - @@ -101978,8 +109819,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Details no memb role="presentation" viewBox="0 0 24 24" > - @@ -102026,8 +109872,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Details no memb role="presentation" viewBox="0 0 24 24" > - @@ -102074,8 +109925,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Details no memb role="presentation" viewBox="0 0 24 24" > - @@ -102122,8 +109978,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Details no memb role="presentation" viewBox="0 0 24 24" > - @@ -102170,8 +110031,13 @@ exports[`Storyshots Views / Permission Groups / Permission Group Details no memb role="presentation" viewBox="0 0 24 24" > - @@ -103289,18 +111155,43 @@ exports[`Storyshots Views / Plugins / Plugin details default 1`] = ` - - - + + + + + + + + @@ -103443,18 +111334,43 @@ exports[`Storyshots Views / Plugins / Plugin details default 1`] = ` - - - + + + + + + + + @@ -103701,18 +111617,43 @@ exports[`Storyshots Views / Plugins / Plugin details form errors 1`] = ` - - - + + + + + + + + @@ -103855,18 +111796,43 @@ exports[`Storyshots Views / Plugins / Plugin details form errors 1`] = ` - - - + + + + + + + + @@ -104101,18 +112067,37 @@ exports[`Storyshots Views / Plugins / Plugin details loading 1`] = ` - - - + + + + + + + @@ -104224,18 +112209,43 @@ exports[`Storyshots Views / Plugins / Plugin details not configurable 1`] = ` - - - + + + + + + + + @@ -105473,18 +113483,37 @@ exports[`Storyshots Views / Product types / Create product type default 1`] = ` - - - + + + + + + + @@ -105711,18 +113740,37 @@ exports[`Storyshots Views / Product types / Create product type form errors 1`] - - - + + + + + + + @@ -105951,20 +113999,39 @@ exports[`Storyshots Views / Product types / Create product type loading 1`] = ` - - - + + + + + + + @@ -106214,17 +114281,36 @@ exports[`Storyshots Views / Product types / Product type details default 1`] = ` class="MuiTableCell-root-id MuiTableCell-head-id TableHead-dragRows-id MuiTableCell-paddingCheckbox-id" scope="col" > - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + @@ -106876,17 +115038,36 @@ exports[`Storyshots Views / Product types / Product type details form errors 1`] class="MuiTableCell-root-id MuiTableCell-head-id TableHead-dragRows-id MuiTableCell-paddingCheckbox-id" scope="col" > - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + @@ -107540,19 +115797,38 @@ exports[`Storyshots Views / Product types / Product type details loading 1`] = ` class="MuiTableCell-root-id MuiTableCell-head-id TableHead-dragRows-id MuiTableCell-paddingCheckbox-id" scope="col" > - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + @@ -108123,18 +116437,37 @@ exports[`Storyshots Views / Product types / Product type details no attributes 1 - - - + + + + + + + @@ -108288,17 +116621,36 @@ exports[`Storyshots Views / Product types / Product types list default 1`] = ` class="MuiTableCell-root-id MuiTableCell-head-id MuiTableCell-paddingCheckbox-id" scope="col" > - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + + @@ -109739,18 +118249,43 @@ exports[`Storyshots Views / Products / Create multiple variants / prices and SKU - - - + + + + + + + + @@ -109760,18 +118295,37 @@ exports[`Storyshots Views / Products / Create multiple variants / prices and SKU - - - + + + + + + + @@ -109781,18 +118335,43 @@ exports[`Storyshots Views / Products / Create multiple variants / prices and SKU - - - + + + + + + + + @@ -111121,18 +119700,43 @@ exports[`Storyshots Views / Products / Create multiple variants / prices and SKU - - - + + + + + + + + @@ -111142,18 +119746,43 @@ exports[`Storyshots Views / Products / Create multiple variants / prices and SKU - - - + + + + + + + + @@ -111163,18 +119792,37 @@ exports[`Storyshots Views / Products / Create multiple variants / prices and SKU - - - + + + + + + + @@ -111184,18 +119832,43 @@ exports[`Storyshots Views / Products / Create multiple variants / prices and SKU - - - + + + + + + + + @@ -114265,18 +122938,43 @@ exports[`Storyshots Views / Products / Create multiple variants choose values 1` - - - + + + + + + + + @@ -114286,18 +122984,37 @@ exports[`Storyshots Views / Products / Create multiple variants choose values 1` - - - + + + + + + + @@ -114307,18 +123024,43 @@ exports[`Storyshots Views / Products / Create multiple variants choose values 1` - - - + + + + + + + + @@ -114328,18 +123070,37 @@ exports[`Storyshots Views / Products / Create multiple variants choose values 1` - - - + + + + + + + @@ -114378,18 +123139,43 @@ exports[`Storyshots Views / Products / Create multiple variants choose values 1` - - - + + + + + + + + @@ -114399,18 +123185,37 @@ exports[`Storyshots Views / Products / Create multiple variants choose values 1` - - - + + + + + + + @@ -114528,18 +123333,37 @@ exports[`Storyshots Views / Products / Create multiple variants interactive 1`] - - - + + + + + + + @@ -114549,18 +123373,37 @@ exports[`Storyshots Views / Products / Create multiple variants interactive 1`] - - - + + + + + + + @@ -114599,18 +123442,37 @@ exports[`Storyshots Views / Products / Create multiple variants interactive 1`] - - - + + + + + + + @@ -114620,18 +123482,37 @@ exports[`Storyshots Views / Products / Create multiple variants interactive 1`] - - - + + + + + + + @@ -114641,18 +123522,37 @@ exports[`Storyshots Views / Products / Create multiple variants interactive 1`] - - - + + + + + + + @@ -114662,18 +123562,37 @@ exports[`Storyshots Views / Products / Create multiple variants interactive 1`] - - - + + + + + + + @@ -114712,18 +123631,37 @@ exports[`Storyshots Views / Products / Create multiple variants interactive 1`] - - - + + + + + + + @@ -114733,18 +123671,37 @@ exports[`Storyshots Views / Products / Create multiple variants interactive 1`] - - - + + + + + + + @@ -114783,18 +123740,37 @@ exports[`Storyshots Views / Products / Create multiple variants interactive 1`] - - - + + + + + + + @@ -114804,18 +123780,37 @@ exports[`Storyshots Views / Products / Create multiple variants interactive 1`] - - - + + + + + + + @@ -117909,18 +126904,43 @@ exports[`Storyshots Views / Products / Create product variant add first variant - - - + + + + + + + + @@ -118576,18 +127596,43 @@ exports[`Storyshots Views / Products / Create product variant default 1`] = ` - - - + + + + + + + + @@ -119169,20 +128214,45 @@ exports[`Storyshots Views / Products / Create product variant when loading data - - - + + + + + + + + @@ -119851,18 +128921,43 @@ exports[`Storyshots Views / Products / Create product variant with errors 1`] = - - - + + + + + + + + @@ -121149,17 +130244,36 @@ Ctrl + K" class="MuiTableCell-root-id MuiTableCell-head-id MuiTableCell-paddingCheckbox-id" scope="col" > - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + + @@ -124482,18 +133716,43 @@ Ctrl + K" - - - + + + + + + + + @@ -126131,18 +135390,43 @@ Ctrl + K" - - - + + + + + + + + @@ -126357,18 +135641,43 @@ Ctrl + K" - - - + + + + + + + + @@ -128203,17 +137512,36 @@ Ctrl + K" class="MuiTableCell-root-id MuiTableCell-head-id MuiTableCell-paddingCheckbox-id" scope="col" > - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + @@ -130984,17 +140369,36 @@ Ctrl + K" class="MuiTableCell-root-id MuiTableCell-head-id MuiTableCell-paddingCheckbox-id" scope="col" > - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + + @@ -132856,18 +142323,43 @@ Ctrl + K" - - - + + + + + + + + @@ -134171,17 +143663,36 @@ exports[`Storyshots Views / Products / Product list default 1`] = ` class="MuiTableCell-root-id MuiTableCell-head-id MuiTableCell-paddingCheckbox-id" scope="col" > - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + + @@ -140914,18 +151286,43 @@ exports[`Storyshots Views / Products / Product variant details when loaded data - - - + + + + + + + + @@ -141647,20 +152044,39 @@ exports[`Storyshots Views / Products / Product variant details when loading data - - - + + + + + + + @@ -144609,17 +155025,36 @@ exports[`Storyshots Views / Shipping / Shipping zones list default 1`] = ` class="MuiTableCell-root-id MuiTableCell-head-id MuiTableCell-paddingCheckbox-id" scope="col" > - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + - - - + + + + + + + + @@ -150129,20 +160836,39 @@ exports[`Storyshots Views / Staff / Staff member details loading 1`] = ` - - - + + + + + + + @@ -151445,18 +162171,37 @@ exports[`Storyshots Views / Taxes / Country List default 1`] = ` - - - + + + + + + + @@ -151469,18 +162214,43 @@ exports[`Storyshots Views / Taxes / Country List default 1`] = ` - - - + + + + + + + + @@ -151493,18 +162263,37 @@ exports[`Storyshots Views / Taxes / Country List default 1`] = ` - - - + + + + + + + @@ -152172,20 +162961,39 @@ exports[`Storyshots Views / Taxes / Country List loading 1`] = ` - - - + + + + + + + @@ -152198,20 +163006,39 @@ exports[`Storyshots Views / Taxes / Country List loading 1`] = ` - - - + + + + + + + @@ -152224,20 +163051,39 @@ exports[`Storyshots Views / Taxes / Country List loading 1`] = ` - - - + + + + + + + diff --git a/src/theme.ts b/src/theme.ts index bddcd3d94..7c1b87451 100644 --- a/src/theme.ts +++ b/src/theme.ts @@ -1,10 +1,15 @@ import Card from "@material-ui/core/Card"; +import Checkbox from "@material-ui/core/Checkbox"; import { createMuiTheme, Theme } from "@material-ui/core/styles"; import { darken, fade } from "@material-ui/core/styles/colorManipulator"; import TextField from "@material-ui/core/TextField"; import Typography from "@material-ui/core/Typography"; +import { createElement } from "react"; import { IThemeColors } from "./components/Theme/themes"; +import CheckboxIcon from "./icons/Checkbox"; +import CheckboxCheckedIcon from "./icons/CheckboxChecked"; +import CheckboxIndeterminateIcon from "./icons/CheckboxIndeterminate"; const createShadow = (pv, pb, ps, uv, ub, us, av, ab, as) => [ @@ -562,3 +567,10 @@ Card.defaultProps = { Typography.defaultProps = { component: "div" }; + +Checkbox.defaultProps = { + checkedIcon: createElement(CheckboxCheckedIcon), + color: "primary", + icon: createElement(CheckboxIcon), + indeterminateIcon: createElement(CheckboxIndeterminateIcon) +};