@sentecacommerce-theme/lib 0.12.77 → 0.12.78
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/listing/hooks/useListingFilters.js +2 -2
- package/dist/cjs/listing/hooks/useListingFilters.js.map +1 -1
- package/dist/cjs/ui/hooks/index.js +12 -0
- package/dist/cjs/ui/hooks/index.js.map +1 -0
- package/dist/cjs/ui/hooks/useToasts.js +96 -0
- package/dist/cjs/ui/hooks/useToasts.js.map +1 -0
- package/dist/cjs/ui/index.js +8 -0
- package/dist/cjs/ui/index.js.map +1 -1
- package/dist/cjs/ui/toastUtils/ErrorIcon.js +26 -0
- package/dist/cjs/ui/toastUtils/ErrorIcon.js.map +1 -0
- package/dist/cjs/ui/toastUtils/InfoIcon.js +26 -0
- package/dist/cjs/ui/toastUtils/InfoIcon.js.map +1 -0
- package/dist/cjs/ui/toastUtils/SuccessIcon.js +26 -0
- package/dist/cjs/ui/toastUtils/SuccessIcon.js.map +1 -0
- package/dist/cjs/ui/toastUtils/WarningIcon.js +26 -0
- package/dist/cjs/ui/toastUtils/WarningIcon.js.map +1 -0
- package/dist/cjs/ui/toastUtils/index.js +44 -0
- package/dist/cjs/ui/toastUtils/index.js.map +1 -0
- package/dist/cjs/ui/toastUtils/utils.js +107 -0
- package/dist/cjs/ui/toastUtils/utils.js.map +1 -0
- package/dist/esm/listing/hooks/useListingFilters.js +2 -2
- package/dist/esm/listing/hooks/useListingFilters.js.map +1 -1
- package/dist/esm/ui/hooks/index.js +2 -0
- package/dist/esm/ui/hooks/index.js.map +1 -0
- package/dist/esm/ui/hooks/useToasts.js +74 -0
- package/dist/esm/ui/hooks/useToasts.js.map +1 -0
- package/dist/esm/ui/index.js +1 -0
- package/dist/esm/ui/index.js.map +1 -1
- package/dist/esm/ui/toastUtils/ErrorIcon.js +16 -0
- package/dist/esm/ui/toastUtils/ErrorIcon.js.map +1 -0
- package/dist/esm/ui/toastUtils/InfoIcon.js +16 -0
- package/dist/esm/ui/toastUtils/InfoIcon.js.map +1 -0
- package/dist/esm/ui/toastUtils/SuccessIcon.js +16 -0
- package/dist/esm/ui/toastUtils/SuccessIcon.js.map +1 -0
- package/dist/esm/ui/toastUtils/WarningIcon.js +16 -0
- package/dist/esm/ui/toastUtils/WarningIcon.js.map +1 -0
- package/dist/esm/ui/toastUtils/index.js +6 -0
- package/dist/esm/ui/toastUtils/index.js.map +1 -0
- package/dist/esm/ui/toastUtils/utils.js +82 -0
- package/dist/esm/ui/toastUtils/utils.js.map +1 -0
- package/dist/types/ui/hooks/index.d.ts +1 -0
- package/dist/types/ui/hooks/useToasts.d.ts +20 -0
- package/dist/types/ui/index.d.ts +1 -0
- package/dist/types/ui/toastUtils/ErrorIcon.d.ts +1 -0
- package/dist/types/ui/toastUtils/InfoIcon.d.ts +1 -0
- package/dist/types/ui/toastUtils/SuccessIcon.d.ts +1 -0
- package/dist/types/ui/toastUtils/WarningIcon.d.ts +1 -0
- package/dist/types/ui/toastUtils/index.d.ts +5 -0
- package/dist/types/ui/toastUtils/utils.d.ts +11 -0
- package/package.json +3 -3
@@ -53,7 +53,7 @@ function ListingFiltersProvider(_ref) {
|
|
53
53
|
var result = aggregates == null ? void 0 : aggregates.sort(function (a, b) {
|
54
54
|
return a.order - b.order;
|
55
55
|
}).map(function (currentAggregate) {
|
56
|
-
var _listing$slugAliases
|
56
|
+
var _listing$slugAliases$, _listing$slugAliases;
|
57
57
|
|
58
58
|
var type = currentAggregate.aggregationType.toString();
|
59
59
|
var term = currentAggregate.aggregationDefinition.split(':')[0];
|
@@ -66,7 +66,7 @@ function ListingFiltersProvider(_ref) {
|
|
66
66
|
filter: filter,
|
67
67
|
router: router,
|
68
68
|
type: type,
|
69
|
-
slug: (_listing$slugAliases$ = config.listing.slugAliases[slug]) != null ? _listing$slugAliases$ : slug,
|
69
|
+
slug: (_listing$slugAliases$ = (_listing$slugAliases = config.listing.slugAliases) == null ? void 0 : _listing$slugAliases[slug]) != null ? _listing$slugAliases$ : slug,
|
70
70
|
pageType: pageType
|
71
71
|
});
|
72
72
|
var selectedCount = generatedFilters == null ? void 0 : generatedFilters.reduce(function (count, res) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/listing/hooks/useListingFilters.tsx"],"names":["ListingFiltersStateContext","React","createContext","undefined","ListingFiltersProvider","children","aggregates","pageType","type","attributeSortType","AggregateRequestEnum","Filters","aggData","data","isLoading","isFetching","config","router","slug","useMemo","result","sort","a","b","order","map","currentAggregate","aggregationType","toString","term","aggregationDefinition","split","filter","filterDefinition","current","find","agg","name","generatedFilters","generateFilters","rawFilters","listing","slugAliases","selectedCount","reduce","count","res","selected","attributeResult","label","component","items","raw","clearAll","push","pathname","query","filterByType","clearAllFilters","selectedFilters","useListingFilters","context","useContext","Error","results","currentTerm","filterKey","mapKey","isFilterSelected","filtersOperatorsMap","meta","onClick","createAggregateQuery","aggType","aggKey","aggOperator","Boolean","areFiltersArray","Array","isArray","sel","includes","ranges","stats","terms","r","keysMap","key","from","to","manageFilter","pair","remove","stripped","generateQueryString","activeFilters","extractFilter","str","aggPair","operator","val","filterType","filterVal","filterOperator","Object","keys","forEach","el","applied","remaining","x","length","join","idx","ListingTypesEnum","Search","q","search","cat","typeToSuffix","filters","filterName"],"mappings":"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","sourcesContent":["import React from 'react'\nimport { useRouter } from 'next/router'\nimport { NextRouter } from 'next/router'\nimport { useListingConfig } from './useListingConfig'\nimport {\n useAggregateQuery,\n AggregateRequestEnum,\n AggregateType,\n AggregationResultType,\n} from '../api'\n\nimport { Aggregate, ListingTypesEnum } from '../types'\nimport { useListingSlug } from './useListingSlug'\n\nimport { stripQueryProps } from '../../utils/generateQueryFromRouter'\nimport { typeToSuffix } from '../../utils/typeToSuffix'\nimport { generateQueryStringFromQuery } from '../../utils/generateQueryStringFromQuery'\nimport {\n RangeAggregation,\n StatAggregation,\n TermAggregation,\n} from '@sentecacommerce/sdk'\nimport { getSelectedFilters } from '../../utils'\nimport { useConfigState } from '../../index'\nimport { FiltersQuery } from '../index'\n\nexport type {\n RangeAggregation,\n StatAggregation,\n TermAggregation,\n} from '@sentecacommerce/sdk'\n\ntype AggPair = {\n aggType: string\n aggKey: string\n aggOperator: string\n}\n\nexport type ListingAggregationResultType = {\n selected: boolean\n data: AggregationResultType\n meta: any\n aggregationType?: string\n onClick: () => void\n}\n\nexport type ListingAggregateType = {\n name: string\n component: string\n type: string\n selectedCount: number\n items: ListingAggregationResultType[]\n clearAll: () => void\n raw: StatAggregation | RangeAggregation | TermAggregation\n}\n\nexport type UseListingFiltersResult = {\n data?: ListingAggregateType[]\n clearAllFilters: () => void\n selectedFilters: ListingAggregationResultType[]\n isLoading: boolean\n isFetching: boolean\n}\n\nconst ListingFiltersStateContext = React.createContext<\n UseListingFiltersResult | undefined\n>(undefined)\n\nexport function ListingFiltersProvider({\n children,\n}: {\n children: React.ReactNode\n}) {\n const { aggregates, type: pageType, attributeSortType } = useListingConfig()\n\n const { data: aggData, isLoading, isFetching } = useAggregateQuery(\n aggregates as Aggregate[],\n AggregateRequestEnum.Filters,\n attributeSortType\n )\n\n const config = useConfigState()\n const router = useRouter()\n const slug = useListingSlug()\n\n const data = React.useMemo(() => {\n if (!isLoading && aggData) {\n const result = aggregates\n ?.sort((a, b) => a.order - b.order)\n .map((currentAggregate) => {\n const type = currentAggregate.aggregationType.toString()\n const term = currentAggregate.aggregationDefinition.split(':')[0]\n const filter = currentAggregate.filterDefinition\n const current: AggregateType = aggData[type].find(\n (agg: AggregateType) => agg.name === term\n )\n\n const generatedFilters = generateFilters({\n rawFilters: current,\n filter,\n router,\n type,\n slug: (config as any).listing.slugAliases[slug] ?? slug,\n pageType,\n })\n\n const selectedCount = generatedFilters?.reduce((count, res) => {\n if (res.selected) count++\n return count\n }, 0)\n\n const attributeResult = ({\n name: currentAggregate.label,\n component: currentAggregate.component,\n items: generatedFilters,\n selectedCount,\n raw: current,\n clearAll: () =>\n router.push({\n pathname: router.pathname,\n query: {\n ...router.query,\n filter: filterByType(router.query.filter, filter),\n },\n }),\n type: type,\n } as unknown) as ListingAggregateType\n\n return attributeResult\n })\n\n return result\n }\n return undefined\n }, [aggData, router])\n\n const clearAllFilters = () => {\n const query = { ...router.query }\n delete query.filter\n\n router.push({\n pathname: router.pathname,\n query,\n })\n }\n\n const selectedFilters = React.useMemo(() => {\n return getSelectedFilters(router, slug, data as any, config) as any\n }, [router, data])\n\n return (\n <ListingFiltersStateContext.Provider\n value={{ data, clearAllFilters, selectedFilters, isLoading, isFetching }}\n >\n {children}\n </ListingFiltersStateContext.Provider>\n )\n}\n\nexport function useListingFilters() {\n const context = React.useContext(ListingFiltersStateContext)\n if (context === undefined) {\n throw new Error(\n 'useListingFilters must be used within a ListingFiltersProvider'\n )\n }\n return context\n}\n\nfunction generateFilters({\n rawFilters,\n type,\n filter,\n slug,\n router,\n pageType,\n}: {\n rawFilters: AggregateType\n type: string\n filter: string\n slug: string\n router: NextRouter\n pageType: ListingTypesEnum\n}) {\n return rawFilters.results\n ?.filter((res) => res.count > 0)\n ?.map((currentTerm) => {\n const filterKey = mapKey(currentTerm, type)\n\n const selected = isFilterSelected(\n router,\n filter,\n filterKey,\n filtersOperatorsMap[type]\n )\n\n return {\n data: currentTerm,\n selected,\n meta: currentTerm.meta,\n onClick: () => {\n router.push(\n createAggregateQuery(\n pageType,\n slug,\n {\n aggType: filter,\n aggKey: filterKey,\n aggOperator: filtersOperatorsMap[type],\n },\n Boolean(selected),\n router\n )\n )\n },\n }\n })\n}\n\nconst isFilterSelected = (\n router: NextRouter,\n filter: string,\n filterKey: any,\n type: string\n) => {\n const areFiltersArray = Array.isArray(router.query?.filter)\n\n return areFiltersArray\n ? !!(router.query.filter as string[])\n ?.find((sel: string) => sel.includes(`${filter};${type}`))\n ?.includes(filterKey)\n : router.query.filter?.includes(`${filter};${type}`) &&\n router.query.filter?.includes(filterKey)\n}\n\nexport const filtersOperatorsMap = {\n ranges: 'range',\n stats: 'range',\n terms: 'in',\n}\n\nfunction mapKey(r: any, type: any) {\n const keysMap = {\n terms: `\"${r.key}\"`,\n ranges: `${r.from},${r.to}`,\n }\n if (!keysMap[type]) return r.key\n\n return keysMap[type]\n}\n\nfunction manageFilter(pair: AggPair, query: any, remove: boolean) {\n const stripped = stripQueryProps(query, ['page']) // reset pagination on filter\n\n const result = generateQueryString(stripped, pair, remove)\n return result\n}\n\nconst generateQueryString = (\n query: FiltersQuery,\n pair: AggPair,\n remove?: boolean\n) => {\n const activeFilters = {}\n\n const extractFilter = ({\n str = '',\n aggPair,\n }: {\n str: string\n aggPair?: AggPair\n }) => {\n const [type, operator, val] = str.split(';')\n\n const filterType = aggPair?.aggType ?? type\n const filterVal = aggPair?.aggKey ?? val\n const filterOperator = aggPair?.aggOperator ?? operator\n\n if (activeFilters[filterType]) {\n activeFilters[filterType] += `,${filterVal}`\n } else {\n activeFilters[\n filterType\n ] = `filter=${filterType};${filterOperator};${filterVal}`\n }\n }\n\n Object.keys(query).forEach((el) => {\n if (Array.isArray(query[el])) {\n query[el].forEach((filter: string) => {\n extractFilter({ str: filter })\n })\n } else {\n if (el === 'sort') {\n activeFilters[el] = `sort=${query[el]}`\n } else {\n extractFilter({ str: query[el] })\n }\n }\n })\n\n if (remove) {\n const applied = activeFilters[pair.aggType].split(';')[2].split(',')\n\n const remaining = applied.filter((x: string) => !pair.aggKey.includes(x))\n\n if (remaining.length === 0) {\n activeFilters[pair.aggType] = ``\n } else {\n activeFilters[pair.aggType] = `filter=${pair.aggType};${\n pair.aggOperator\n };${remaining.join(',')}`\n }\n } else {\n extractFilter({ str: '', aggPair: pair })\n }\n\n if (Object.keys(activeFilters).length === 0) return ``\n\n return Object.keys(activeFilters).reduce((res, val, idx) => {\n res += `${idx > 0 ? '&' : ''}${activeFilters[val]}`\n return res\n }, ``)\n}\n\nfunction createAggregateQuery(\n type: ListingTypesEnum,\n slug: string,\n aggPair: AggPair,\n remove: boolean,\n router: NextRouter\n) {\n if (type === ListingTypesEnum.Search) {\n return router.query.q\n ? `/search?q=${router.query.q}&${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n : `/${slug}/c?search=${router.query.search}&${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n }\n\n if (router.query.cat) {\n return `/${router.query.slug}/${router.query.cat}/${\n typeToSuffix[type]\n }?${manageFilter(aggPair, router.query, remove)}`\n }\n\n return `/${slug}/${typeToSuffix[type]}?${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n}\n\nfunction filterByType(\n filters: string | string[] | undefined,\n filterName: string\n) {\n if (!filters) return\n\n if (typeof filters === 'string') {\n if (filters.includes(filterName)) return\n\n return filters\n }\n\n return filters.filter((filter) => !filter.includes(filterName))\n}\n"],"file":"useListingFilters.js"}
|
1
|
+
{"version":3,"sources":["../../../../src/listing/hooks/useListingFilters.tsx"],"names":["ListingFiltersStateContext","React","createContext","undefined","ListingFiltersProvider","children","aggregates","pageType","type","attributeSortType","AggregateRequestEnum","Filters","aggData","data","isLoading","isFetching","config","router","slug","useMemo","result","sort","a","b","order","map","currentAggregate","aggregationType","toString","term","aggregationDefinition","split","filter","filterDefinition","current","find","agg","name","generatedFilters","generateFilters","rawFilters","listing","slugAliases","selectedCount","reduce","count","res","selected","attributeResult","label","component","items","raw","clearAll","push","pathname","query","filterByType","clearAllFilters","selectedFilters","useListingFilters","context","useContext","Error","results","currentTerm","filterKey","mapKey","isFilterSelected","filtersOperatorsMap","meta","onClick","createAggregateQuery","aggType","aggKey","aggOperator","Boolean","areFiltersArray","Array","isArray","sel","includes","ranges","stats","terms","r","keysMap","key","from","to","manageFilter","pair","remove","stripped","generateQueryString","activeFilters","extractFilter","str","aggPair","operator","val","filterType","filterVal","filterOperator","Object","keys","forEach","el","applied","remaining","x","length","join","idx","ListingTypesEnum","Search","q","search","cat","typeToSuffix","filters","filterName"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;AAOA;;AACA;;AAEA;;AACA;;AAOA;;AACA;;AAyCA,IAAMA,0BAA0B,gBAAGC,kBAAMC,aAAN,CAEjCC,SAFiC,CAAnC;;AAIO,SAASC,sBAAT,OAIJ;AAAA,MAHDC,QAGC,QAHDA,QAGC;;AAAA,0BACyD,0CADzD;AAAA,MACOC,UADP,qBACOA,UADP;AAAA,MACyBC,QADzB,qBACmBC,IADnB;AAAA,MACmCC,iBADnC,qBACmCA,iBADnC;;AAAA,2BAGgD,4BAC/CH,UAD+C,EAE/CI,0BAAqBC,OAF0B,EAG/CF,iBAH+C,CAHhD;AAAA,MAGaG,OAHb,sBAGOC,IAHP;AAAA,MAGsBC,SAHtB,sBAGsBA,SAHtB;AAAA,MAGiCC,UAHjC,sBAGiCA,UAHjC;;AASD,MAAMC,MAAM,GAAG,4BAAf;AACA,MAAMC,MAAM,GAAG,wBAAf;AACA,MAAMC,IAAI,GAAG,qCAAb;;AAEA,MAAML,IAAI,GAAGZ,kBAAMkB,OAAN,CAAc,YAAM;AAC/B,QAAI,CAACL,SAAD,IAAcF,OAAlB,EAA2B;AACzB,UAAMQ,MAAM,GAAGd,UAAH,oBAAGA,UAAU,CACrBe,IADW,CACN,UAACC,CAAD,EAAIC,CAAJ;AAAA,eAAUD,CAAC,CAACE,KAAF,GAAUD,CAAC,CAACC,KAAtB;AAAA,OADM,EAEZC,GAFY,CAER,UAACC,gBAAD,EAAsB;AAAA;;AACzB,YAAMlB,IAAI,GAAGkB,gBAAgB,CAACC,eAAjB,CAAiCC,QAAjC,EAAb;AACA,YAAMC,IAAI,GAAGH,gBAAgB,CAACI,qBAAjB,CAAuCC,KAAvC,CAA6C,GAA7C,EAAkD,CAAlD,CAAb;AACA,YAAMC,MAAM,GAAGN,gBAAgB,CAACO,gBAAhC;AACA,YAAMC,OAAsB,GAAGtB,OAAO,CAACJ,IAAD,CAAP,CAAc2B,IAAd,CAC7B,UAACC,GAAD;AAAA,iBAAwBA,GAAG,CAACC,IAAJ,KAAaR,IAArC;AAAA,SAD6B,CAA/B;AAIA,YAAMS,gBAAgB,GAAGC,eAAe,CAAC;AACvCC,UAAAA,UAAU,EAAEN,OAD2B;AAEvCF,UAAAA,MAAM,EAANA,MAFuC;AAGvCf,UAAAA,MAAM,EAANA,MAHuC;AAIvCT,UAAAA,IAAI,EAAJA,IAJuC;AAKvCU,UAAAA,IAAI,mDAAGF,MAAD,CAAgByB,OAAhB,CAAwBC,WAA1B,qBAAE,qBAAsCxB,IAAtC,CAAF,oCAAiDA,IALd;AAMvCX,UAAAA,QAAQ,EAARA;AANuC,SAAD,CAAxC;AASA,YAAMoC,aAAa,GAAGL,gBAAH,oBAAGA,gBAAgB,CAAEM,MAAlB,CAAyB,UAACC,KAAD,EAAQC,GAAR,EAAgB;AAC7D,cAAIA,GAAG,CAACC,QAAR,EAAkBF,KAAK;AACvB,iBAAOA,KAAP;AACD,SAHqB,EAGnB,CAHmB,CAAtB;AAKA,YAAMG,eAAe,GAAI;AACvBX,UAAAA,IAAI,EAAEX,gBAAgB,CAACuB,KADA;AAEvBC,UAAAA,SAAS,EAAExB,gBAAgB,CAACwB,SAFL;AAGvBC,UAAAA,KAAK,EAAEb,gBAHgB;AAIvBK,UAAAA,aAAa,EAAbA,aAJuB;AAKvBS,UAAAA,GAAG,EAAElB,OALkB;AAMvBmB,UAAAA,QAAQ,EAAE;AAAA,mBACRpC,MAAM,CAACqC,IAAP,CAAY;AACVC,cAAAA,QAAQ,EAAEtC,MAAM,CAACsC,QADP;AAEVC,cAAAA,KAAK,gCACAvC,MAAM,CAACuC,KADP;AAEHxB,gBAAAA,MAAM,EAAEyB,YAAY,CAACxC,MAAM,CAACuC,KAAP,CAAaxB,MAAd,EAAsBA,MAAtB;AAFjB;AAFK,aAAZ,CADQ;AAAA,WANa;AAcvBxB,UAAAA,IAAI,EAAEA;AAdiB,SAAzB;AAiBA,eAAOwC,eAAP;AACD,OA1CY,CAAf;AA4CA,aAAO5B,MAAP;AACD;;AACD,WAAOjB,SAAP;AACD,GAjDY,EAiDV,CAACS,OAAD,EAAUK,MAAV,CAjDU,CAAb;;AAmDA,MAAMyC,eAAe,GAAG,SAAlBA,eAAkB,GAAM;AAC5B,QAAMF,KAAK,iCAAQvC,MAAM,CAACuC,KAAf,CAAX;AACA,WAAOA,KAAK,CAACxB,MAAb;AAEAf,IAAAA,MAAM,CAACqC,IAAP,CAAY;AACVC,MAAAA,QAAQ,EAAEtC,MAAM,CAACsC,QADP;AAEVC,MAAAA,KAAK,EAALA;AAFU,KAAZ;AAID,GARD;;AAUA,MAAMG,eAAe,GAAG1D,kBAAMkB,OAAN,CAAc,YAAM;AAC1C,WAAO,+BAAmBF,MAAnB,EAA2BC,IAA3B,EAAiCL,IAAjC,EAA8CG,MAA9C,CAAP;AACD,GAFuB,EAErB,CAACC,MAAD,EAASJ,IAAT,CAFqB,CAAxB;;AAIA,sBACE,gCAAC,0BAAD,CAA4B,QAA5B;AACE,IAAA,KAAK,EAAE;AAAEA,MAAAA,IAAI,EAAJA,IAAF;AAAQ6C,MAAAA,eAAe,EAAfA,eAAR;AAAyBC,MAAAA,eAAe,EAAfA,eAAzB;AAA0C7C,MAAAA,SAAS,EAATA,SAA1C;AAAqDC,MAAAA,UAAU,EAAVA;AAArD;AADT,KAGGV,QAHH,CADF;AAOD;;AAEM,SAASuD,iBAAT,GAA6B;AAClC,MAAMC,OAAO,GAAG5D,kBAAM6D,UAAN,CAAiB9D,0BAAjB,CAAhB;;AACA,MAAI6D,OAAO,KAAK1D,SAAhB,EAA2B;AACzB,UAAM,IAAI4D,KAAJ,CACJ,gEADI,CAAN;AAGD;;AACD,SAAOF,OAAP;AACD;;AAED,SAAStB,eAAT,QAcG;AAAA;;AAAA,MAbDC,UAaC,SAbDA,UAaC;AAAA,MAZDhC,IAYC,SAZDA,IAYC;AAAA,MAXDwB,MAWC,SAXDA,MAWC;AAAA,MAVDd,IAUC,SAVDA,IAUC;AAAA,MATDD,MASC,SATDA,MASC;AAAA,MARDV,QAQC,SARDA,QAQC;AACD,gCAAOiC,UAAU,CAACwB,OAAlB,8CAAO,oBACHhC,MADG,CACI,UAACc,GAAD;AAAA,WAASA,GAAG,CAACD,KAAJ,GAAY,CAArB;AAAA,GADJ,CAAP,qBAAO,sBAEHpB,GAFG,CAEC,UAACwC,WAAD,EAAiB;AACrB,QAAMC,SAAS,GAAGC,MAAM,CAACF,WAAD,EAAczD,IAAd,CAAxB;AAEA,QAAMuC,QAAQ,GAAGqB,gBAAgB,CAC/BnD,MAD+B,EAE/Be,MAF+B,EAG/BkC,SAH+B,EAI/BG,mBAAmB,CAAC7D,IAAD,CAJY,CAAjC;AAOA,WAAO;AACLK,MAAAA,IAAI,EAAEoD,WADD;AAELlB,MAAAA,QAAQ,EAARA,QAFK;AAGLuB,MAAAA,IAAI,EAAEL,WAAW,CAACK,IAHb;AAILC,MAAAA,OAAO,EAAE,mBAAM;AACbtD,QAAAA,MAAM,CAACqC,IAAP,CACEkB,oBAAoB,CAClBjE,QADkB,EAElBW,IAFkB,EAGlB;AACEuD,UAAAA,OAAO,EAAEzC,MADX;AAEE0C,UAAAA,MAAM,EAAER,SAFV;AAGES,UAAAA,WAAW,EAAEN,mBAAmB,CAAC7D,IAAD;AAHlC,SAHkB,EAQlBoE,OAAO,CAAC7B,QAAD,CARW,EASlB9B,MATkB,CADtB;AAaD;AAlBI,KAAP;AAoBD,GAhCI,CAAP;AAiCD;;AAED,IAAMmD,gBAAgB,GAAG,SAAnBA,gBAAmB,CACvBnD,MADuB,EAEvBe,MAFuB,EAGvBkC,SAHuB,EAIvB1D,IAJuB,EAKpB;AAAA;;AACH,MAAMqE,eAAe,GAAGC,KAAK,CAACC,OAAN,kBAAc9D,MAAM,CAACuC,KAArB,qBAAc,cAAcxB,MAA5B,CAAxB;AAEA,SAAO6C,eAAe,GAClB,CAAC,0BAAE5D,MAAM,CAACuC,KAAP,CAAaxB,MAAf,sCAAC,qBACEG,IADF,CACO,UAAC6C,GAAD;AAAA,WAAiBA,GAAG,CAACC,QAAJ,CAAgBjD,MAAhB,SAA0BxB,IAA1B,CAAjB;AAAA,GADP,CAAD,aAAC,sBAEEyE,QAFF,CAEWf,SAFX,CAAD,CADiB,GAIlB,0BAAAjD,MAAM,CAACuC,KAAP,CAAaxB,MAAb,2CAAqBiD,QAArB,CAAiCjD,MAAjC,SAA2CxB,IAA3C,gCACES,MAAM,CAACuC,KAAP,CAAaxB,MADf,qBACE,sBAAqBiD,QAArB,CAA8Bf,SAA9B,CADF,CAJJ;AAMD,CAdD;;AAgBO,IAAMG,mBAAmB,GAAG;AACjCa,EAAAA,MAAM,EAAE,OADyB;AAEjCC,EAAAA,KAAK,EAAE,OAF0B;AAGjCC,EAAAA,KAAK,EAAE;AAH0B,CAA5B;;;AAMP,SAASjB,MAAT,CAAgBkB,CAAhB,EAAwB7E,IAAxB,EAAmC;AACjC,MAAM8E,OAAO,GAAG;AACdF,IAAAA,KAAK,SAAMC,CAAC,CAACE,GAAR,OADS;AAEdL,IAAAA,MAAM,EAAKG,CAAC,CAACG,IAAP,SAAeH,CAAC,CAACI;AAFT,GAAhB;AAIA,MAAI,CAACH,OAAO,CAAC9E,IAAD,CAAZ,EAAoB,OAAO6E,CAAC,CAACE,GAAT;AAEpB,SAAOD,OAAO,CAAC9E,IAAD,CAAd;AACD;;AAED,SAASkF,YAAT,CAAsBC,IAAtB,EAAqCnC,KAArC,EAAiDoC,MAAjD,EAAkE;AAChE,MAAMC,QAAQ,GAAG,8CAAgBrC,KAAhB,EAAuB,CAAC,MAAD,CAAvB,CAAjB,CADgE,CACd;;AAElD,MAAMpC,MAAM,GAAG0E,mBAAmB,CAACD,QAAD,EAAWF,IAAX,EAAiBC,MAAjB,CAAlC;AACA,SAAOxE,MAAP;AACD;;AAED,IAAM0E,mBAAmB,GAAG,SAAtBA,mBAAsB,CAC1BtC,KAD0B,EAE1BmC,IAF0B,EAG1BC,MAH0B,EAIvB;AACH,MAAMG,aAAa,GAAG,EAAtB;;AAEA,MAAMC,aAAa,GAAG,SAAhBA,aAAgB,QAMhB;AAAA;;AAAA,0BALJC,GAKI;AAAA,QALJA,GAKI,0BALE,EAKF;AAAA,QAJJC,OAII,SAJJA,OAII;;AAAA,qBAC0BD,GAAG,CAAClE,KAAJ,CAAU,GAAV,CAD1B;AAAA,QACGvB,IADH;AAAA,QACS2F,QADT;AAAA,QACmBC,GADnB;;AAGJ,QAAMC,UAAU,uBAAGH,OAAH,oBAAGA,OAAO,CAAEzB,OAAZ,+BAAuBjE,IAAvC;AACA,QAAM8F,SAAS,sBAAGJ,OAAH,oBAAGA,OAAO,CAAExB,MAAZ,8BAAsB0B,GAArC;AACA,QAAMG,cAAc,2BAAGL,OAAH,oBAAGA,OAAO,CAAEvB,WAAZ,mCAA2BwB,QAA/C;;AAEA,QAAIJ,aAAa,CAACM,UAAD,CAAjB,EAA+B;AAC7BN,MAAAA,aAAa,CAACM,UAAD,CAAb,UAAiCC,SAAjC;AACD,KAFD,MAEO;AACLP,MAAAA,aAAa,CACXM,UADW,CAAb,eAEcA,UAFd,SAE4BE,cAF5B,SAE8CD,SAF9C;AAGD;AACF,GApBD;;AAsBAE,EAAAA,MAAM,CAACC,IAAP,CAAYjD,KAAZ,EAAmBkD,OAAnB,CAA2B,UAACC,EAAD,EAAQ;AACjC,QAAI7B,KAAK,CAACC,OAAN,CAAcvB,KAAK,CAACmD,EAAD,CAAnB,CAAJ,EAA8B;AAC5BnD,MAAAA,KAAK,CAACmD,EAAD,CAAL,CAAUD,OAAV,CAAkB,UAAC1E,MAAD,EAAoB;AACpCgE,QAAAA,aAAa,CAAC;AAAEC,UAAAA,GAAG,EAAEjE;AAAP,SAAD,CAAb;AACD,OAFD;AAGD,KAJD,MAIO;AACL,UAAI2E,EAAE,KAAK,MAAX,EAAmB;AACjBZ,QAAAA,aAAa,CAACY,EAAD,CAAb,aAA4BnD,KAAK,CAACmD,EAAD,CAAjC;AACD,OAFD,MAEO;AACLX,QAAAA,aAAa,CAAC;AAAEC,UAAAA,GAAG,EAAEzC,KAAK,CAACmD,EAAD;AAAZ,SAAD,CAAb;AACD;AACF;AACF,GAZD;;AAcA,MAAIf,MAAJ,EAAY;AACV,QAAMgB,OAAO,GAAGb,aAAa,CAACJ,IAAI,CAAClB,OAAN,CAAb,CAA4B1C,KAA5B,CAAkC,GAAlC,EAAuC,CAAvC,EAA0CA,KAA1C,CAAgD,GAAhD,CAAhB;AAEA,QAAM8E,SAAS,GAAGD,OAAO,CAAC5E,MAAR,CAAe,UAAC8E,CAAD;AAAA,aAAe,CAACnB,IAAI,CAACjB,MAAL,CAAYO,QAAZ,CAAqB6B,CAArB,CAAhB;AAAA,KAAf,CAAlB;;AAEA,QAAID,SAAS,CAACE,MAAV,KAAqB,CAAzB,EAA4B;AAC1BhB,MAAAA,aAAa,CAACJ,IAAI,CAAClB,OAAN,CAAb;AACD,KAFD,MAEO;AACLsB,MAAAA,aAAa,CAACJ,IAAI,CAAClB,OAAN,CAAb,eAAwCkB,IAAI,CAAClB,OAA7C,SACEkB,IAAI,CAAChB,WADP,SAEIkC,SAAS,CAACG,IAAV,CAAe,GAAf,CAFJ;AAGD;AACF,GAZD,MAYO;AACLhB,IAAAA,aAAa,CAAC;AAAEC,MAAAA,GAAG,EAAE,EAAP;AAAWC,MAAAA,OAAO,EAAEP;AAApB,KAAD,CAAb;AACD;;AAED,MAAIa,MAAM,CAACC,IAAP,CAAYV,aAAZ,EAA2BgB,MAA3B,KAAsC,CAA1C,EAA6C;AAE7C,SAAOP,MAAM,CAACC,IAAP,CAAYV,aAAZ,EAA2BnD,MAA3B,CAAkC,UAACE,GAAD,EAAMsD,GAAN,EAAWa,GAAX,EAAmB;AAC1DnE,IAAAA,GAAG,UAAOmE,GAAG,GAAG,CAAN,GAAU,GAAV,GAAgB,EAAvB,IAA4BlB,aAAa,CAACK,GAAD,CAA5C;AACA,WAAOtD,GAAP;AACD,GAHM,KAAP;AAID,CAjED;;AAmEA,SAAS0B,oBAAT,CACEhE,IADF,EAEEU,IAFF,EAGEgF,OAHF,EAIEN,MAJF,EAKE3E,MALF,EAME;AACA,MAAIT,IAAI,KAAK0G,wBAAiBC,MAA9B,EAAsC;AACpC,WAAOlG,MAAM,CAACuC,KAAP,CAAa4D,CAAb,kBACUnG,MAAM,CAACuC,KAAP,CAAa4D,CADvB,SAC4B1B,YAAY,CACzCQ,OADyC,EAEzCjF,MAAM,CAACuC,KAFkC,EAGzCoC,MAHyC,CADxC,SAMC1E,IAND,kBAMkBD,MAAM,CAACuC,KAAP,CAAa6D,MAN/B,SAMyC3B,YAAY,CACtDQ,OADsD,EAEtDjF,MAAM,CAACuC,KAF+C,EAGtDoC,MAHsD,CAN5D;AAWD;;AAED,MAAI3E,MAAM,CAACuC,KAAP,CAAa8D,GAAjB,EAAsB;AACpB,iBAAWrG,MAAM,CAACuC,KAAP,CAAatC,IAAxB,SAAgCD,MAAM,CAACuC,KAAP,CAAa8D,GAA7C,SACEC,2BAAa/G,IAAb,CADF,SAEIkF,YAAY,CAACQ,OAAD,EAAUjF,MAAM,CAACuC,KAAjB,EAAwBoC,MAAxB,CAFhB;AAGD;;AAED,eAAW1E,IAAX,SAAmBqG,2BAAa/G,IAAb,CAAnB,SAAyCkF,YAAY,CACnDQ,OADmD,EAEnDjF,MAAM,CAACuC,KAF4C,EAGnDoC,MAHmD,CAArD;AAKD;;AAED,SAASnC,YAAT,CACE+D,OADF,EAEEC,UAFF,EAGE;AACA,MAAI,CAACD,OAAL,EAAc;;AAEd,MAAI,OAAOA,OAAP,KAAmB,QAAvB,EAAiC;AAC/B,QAAIA,OAAO,CAACvC,QAAR,CAAiBwC,UAAjB,CAAJ,EAAkC;AAElC,WAAOD,OAAP;AACD;;AAED,SAAOA,OAAO,CAACxF,MAAR,CAAe,UAACA,MAAD;AAAA,WAAY,CAACA,MAAM,CAACiD,QAAP,CAAgBwC,UAAhB,CAAb;AAAA,GAAf,CAAP;AACD","sourcesContent":["import React from 'react'\nimport { useRouter } from 'next/router'\nimport { NextRouter } from 'next/router'\nimport { useListingConfig } from './useListingConfig'\nimport {\n useAggregateQuery,\n AggregateRequestEnum,\n AggregateType,\n AggregationResultType,\n} from '../api'\n\nimport { Aggregate, ListingTypesEnum } from '../types'\nimport { useListingSlug } from './useListingSlug'\n\nimport { stripQueryProps } from '../../utils/generateQueryFromRouter'\nimport { typeToSuffix } from '../../utils/typeToSuffix'\nimport { generateQueryStringFromQuery } from '../../utils/generateQueryStringFromQuery'\nimport {\n RangeAggregation,\n StatAggregation,\n TermAggregation,\n} from '@sentecacommerce/sdk'\nimport { getSelectedFilters } from '../../utils'\nimport { useConfigState } from '../../index'\nimport { FiltersQuery } from '../index'\n\nexport type {\n RangeAggregation,\n StatAggregation,\n TermAggregation,\n} from '@sentecacommerce/sdk'\n\ntype AggPair = {\n aggType: string\n aggKey: string\n aggOperator: string\n}\n\nexport type ListingAggregationResultType = {\n selected: boolean\n data: AggregationResultType\n meta: any\n aggregationType?: string\n onClick: () => void\n}\n\nexport type ListingAggregateType = {\n name: string\n component: string\n type: string\n selectedCount: number\n items: ListingAggregationResultType[]\n clearAll: () => void\n raw: StatAggregation | RangeAggregation | TermAggregation\n}\n\nexport type UseListingFiltersResult = {\n data?: ListingAggregateType[]\n clearAllFilters: () => void\n selectedFilters: ListingAggregationResultType[]\n isLoading: boolean\n isFetching: boolean\n}\n\nconst ListingFiltersStateContext = React.createContext<\n UseListingFiltersResult | undefined\n>(undefined)\n\nexport function ListingFiltersProvider({\n children,\n}: {\n children: React.ReactNode\n}) {\n const { aggregates, type: pageType, attributeSortType } = useListingConfig()\n\n const { data: aggData, isLoading, isFetching } = useAggregateQuery(\n aggregates as Aggregate[],\n AggregateRequestEnum.Filters,\n attributeSortType\n )\n\n const config = useConfigState()\n const router = useRouter()\n const slug = useListingSlug()\n\n const data = React.useMemo(() => {\n if (!isLoading && aggData) {\n const result = aggregates\n ?.sort((a, b) => a.order - b.order)\n .map((currentAggregate) => {\n const type = currentAggregate.aggregationType.toString()\n const term = currentAggregate.aggregationDefinition.split(':')[0]\n const filter = currentAggregate.filterDefinition\n const current: AggregateType = aggData[type].find(\n (agg: AggregateType) => agg.name === term\n )\n\n const generatedFilters = generateFilters({\n rawFilters: current,\n filter,\n router,\n type,\n slug: (config as any).listing.slugAliases?.[slug] ?? slug,\n pageType,\n })\n\n const selectedCount = generatedFilters?.reduce((count, res) => {\n if (res.selected) count++\n return count\n }, 0)\n\n const attributeResult = ({\n name: currentAggregate.label,\n component: currentAggregate.component,\n items: generatedFilters,\n selectedCount,\n raw: current,\n clearAll: () =>\n router.push({\n pathname: router.pathname,\n query: {\n ...router.query,\n filter: filterByType(router.query.filter, filter),\n },\n }),\n type: type,\n } as unknown) as ListingAggregateType\n\n return attributeResult\n })\n\n return result\n }\n return undefined\n }, [aggData, router])\n\n const clearAllFilters = () => {\n const query = { ...router.query }\n delete query.filter\n\n router.push({\n pathname: router.pathname,\n query,\n })\n }\n\n const selectedFilters = React.useMemo(() => {\n return getSelectedFilters(router, slug, data as any, config) as any\n }, [router, data])\n\n return (\n <ListingFiltersStateContext.Provider\n value={{ data, clearAllFilters, selectedFilters, isLoading, isFetching }}\n >\n {children}\n </ListingFiltersStateContext.Provider>\n )\n}\n\nexport function useListingFilters() {\n const context = React.useContext(ListingFiltersStateContext)\n if (context === undefined) {\n throw new Error(\n 'useListingFilters must be used within a ListingFiltersProvider'\n )\n }\n return context\n}\n\nfunction generateFilters({\n rawFilters,\n type,\n filter,\n slug,\n router,\n pageType,\n}: {\n rawFilters: AggregateType\n type: string\n filter: string\n slug: string\n router: NextRouter\n pageType: ListingTypesEnum\n}) {\n return rawFilters.results\n ?.filter((res) => res.count > 0)\n ?.map((currentTerm) => {\n const filterKey = mapKey(currentTerm, type)\n\n const selected = isFilterSelected(\n router,\n filter,\n filterKey,\n filtersOperatorsMap[type]\n )\n\n return {\n data: currentTerm,\n selected,\n meta: currentTerm.meta,\n onClick: () => {\n router.push(\n createAggregateQuery(\n pageType,\n slug,\n {\n aggType: filter,\n aggKey: filterKey,\n aggOperator: filtersOperatorsMap[type],\n },\n Boolean(selected),\n router\n )\n )\n },\n }\n })\n}\n\nconst isFilterSelected = (\n router: NextRouter,\n filter: string,\n filterKey: any,\n type: string\n) => {\n const areFiltersArray = Array.isArray(router.query?.filter)\n\n return areFiltersArray\n ? !!(router.query.filter as string[])\n ?.find((sel: string) => sel.includes(`${filter};${type}`))\n ?.includes(filterKey)\n : router.query.filter?.includes(`${filter};${type}`) &&\n router.query.filter?.includes(filterKey)\n}\n\nexport const filtersOperatorsMap = {\n ranges: 'range',\n stats: 'range',\n terms: 'in',\n}\n\nfunction mapKey(r: any, type: any) {\n const keysMap = {\n terms: `\"${r.key}\"`,\n ranges: `${r.from},${r.to}`,\n }\n if (!keysMap[type]) return r.key\n\n return keysMap[type]\n}\n\nfunction manageFilter(pair: AggPair, query: any, remove: boolean) {\n const stripped = stripQueryProps(query, ['page']) // reset pagination on filter\n\n const result = generateQueryString(stripped, pair, remove)\n return result\n}\n\nconst generateQueryString = (\n query: FiltersQuery,\n pair: AggPair,\n remove?: boolean\n) => {\n const activeFilters = {}\n\n const extractFilter = ({\n str = '',\n aggPair,\n }: {\n str: string\n aggPair?: AggPair\n }) => {\n const [type, operator, val] = str.split(';')\n\n const filterType = aggPair?.aggType ?? type\n const filterVal = aggPair?.aggKey ?? val\n const filterOperator = aggPair?.aggOperator ?? operator\n\n if (activeFilters[filterType]) {\n activeFilters[filterType] += `,${filterVal}`\n } else {\n activeFilters[\n filterType\n ] = `filter=${filterType};${filterOperator};${filterVal}`\n }\n }\n\n Object.keys(query).forEach((el) => {\n if (Array.isArray(query[el])) {\n query[el].forEach((filter: string) => {\n extractFilter({ str: filter })\n })\n } else {\n if (el === 'sort') {\n activeFilters[el] = `sort=${query[el]}`\n } else {\n extractFilter({ str: query[el] })\n }\n }\n })\n\n if (remove) {\n const applied = activeFilters[pair.aggType].split(';')[2].split(',')\n\n const remaining = applied.filter((x: string) => !pair.aggKey.includes(x))\n\n if (remaining.length === 0) {\n activeFilters[pair.aggType] = ``\n } else {\n activeFilters[pair.aggType] = `filter=${pair.aggType};${\n pair.aggOperator\n };${remaining.join(',')}`\n }\n } else {\n extractFilter({ str: '', aggPair: pair })\n }\n\n if (Object.keys(activeFilters).length === 0) return ``\n\n return Object.keys(activeFilters).reduce((res, val, idx) => {\n res += `${idx > 0 ? '&' : ''}${activeFilters[val]}`\n return res\n }, ``)\n}\n\nfunction createAggregateQuery(\n type: ListingTypesEnum,\n slug: string,\n aggPair: AggPair,\n remove: boolean,\n router: NextRouter\n) {\n if (type === ListingTypesEnum.Search) {\n return router.query.q\n ? `/search?q=${router.query.q}&${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n : `/${slug}/c?search=${router.query.search}&${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n }\n\n if (router.query.cat) {\n return `/${router.query.slug}/${router.query.cat}/${\n typeToSuffix[type]\n }?${manageFilter(aggPair, router.query, remove)}`\n }\n\n return `/${slug}/${typeToSuffix[type]}?${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n}\n\nfunction filterByType(\n filters: string | string[] | undefined,\n filterName: string\n) {\n if (!filters) return\n\n if (typeof filters === 'string') {\n if (filters.includes(filterName)) return\n\n return filters\n }\n\n return filters.filter((filter) => !filter.includes(filterName))\n}\n"],"file":"useListingFilters.js"}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
exports.__esModule = true;
|
4
|
+
|
5
|
+
var _useToasts = require("./useToasts");
|
6
|
+
|
7
|
+
Object.keys(_useToasts).forEach(function (key) {
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
9
|
+
if (key in exports && exports[key] === _useToasts[key]) return;
|
10
|
+
exports[key] = _useToasts[key];
|
11
|
+
});
|
12
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../src/ui/hooks/index.ts"],"names":[],"mappings":";;;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["export * from './useToasts'\n"],"file":"index.js"}
|
@@ -0,0 +1,96 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
exports.__esModule = true;
|
6
|
+
exports.useToasts = useToasts;
|
7
|
+
exports.ToastProvider = void 0;
|
8
|
+
|
9
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
10
|
+
|
11
|
+
var _react = _interopRequireDefault(require("react"));
|
12
|
+
|
13
|
+
var _router = require("next/router");
|
14
|
+
|
15
|
+
var _uuid = require("uuid");
|
16
|
+
|
17
|
+
var _toastUtils = require("../toastUtils");
|
18
|
+
|
19
|
+
var ToastContext = /*#__PURE__*/_react["default"].createContext(undefined);
|
20
|
+
|
21
|
+
var ToastProvider = function ToastProvider(_ref) {
|
22
|
+
var children = _ref.children,
|
23
|
+
_ref$duration = _ref.duration,
|
24
|
+
duration = _ref$duration === void 0 ? 5000 : _ref$duration,
|
25
|
+
style = _ref.style;
|
26
|
+
|
27
|
+
var _React$useState = _react["default"].useState([]),
|
28
|
+
toasts = _React$useState[0],
|
29
|
+
setToasts = _React$useState[1];
|
30
|
+
|
31
|
+
var addToast = function addToast(content, options) {
|
32
|
+
setToasts([{
|
33
|
+
content: content,
|
34
|
+
options: options,
|
35
|
+
id: (0, _uuid.v4)()
|
36
|
+
}].concat(toasts));
|
37
|
+
};
|
38
|
+
|
39
|
+
var deleteToasts = _react["default"].useCallback(function () {
|
40
|
+
setToasts([]);
|
41
|
+
}, []);
|
42
|
+
|
43
|
+
var values = {
|
44
|
+
addToast: addToast
|
45
|
+
};
|
46
|
+
var router = (0, _router.useRouter)();
|
47
|
+
|
48
|
+
_react["default"].useEffect(function () {
|
49
|
+
deleteToasts();
|
50
|
+
}, [deleteToasts, router.asPath]);
|
51
|
+
|
52
|
+
return /*#__PURE__*/_react["default"].createElement(ToastContext.Provider, {
|
53
|
+
value: values
|
54
|
+
}, children, /*#__PURE__*/_react["default"].createElement("style", {
|
55
|
+
dangerouslySetInnerHTML: {
|
56
|
+
__html: "\n .Toasts--container {\n position: fixed;\n right: 0;\n transform: translateX(100%);\n top: 0;\n width: 25rem;\n display: flex;\n align-items: stretch;\n flex-direction: column;\n z-index: 99999;\n gap: 0.5rem;\n font-size: 0.8rem;\n padding: 1rem;\n }\n .Toast--left {\n width: 2rem;\n border-radius: 0.3rem 0 0 0.3rem;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n @keyframes showToast {\n 0% { opacity: 0; transform: translateX(0%);}\n 10% {opacity: 1; transform: translateX(-105%)}\n 90% {opacity: 1; transform: translateX(-105%)}\n 100% {opacity: 0; transform: translateX(0%);}\n }\n "
|
57
|
+
}
|
58
|
+
}), /*#__PURE__*/_react["default"].createElement("div", {
|
59
|
+
className: "Toasts--container"
|
60
|
+
}, toasts.map(function (toast) {
|
61
|
+
var _toast$options, _toast$options2, _toast$options3, _toast$options4, _toast$options5;
|
62
|
+
|
63
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
64
|
+
key: toast.id,
|
65
|
+
className: "Toast",
|
66
|
+
style: (0, _extends2["default"])({}, (0, _toastUtils.defaultStyle)(duration))
|
67
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
68
|
+
className: "Toast--left",
|
69
|
+
style: {
|
70
|
+
color: (0, _toastUtils.getBackground)((_toast$options = toast.options) == null ? void 0 : _toast$options.appearance),
|
71
|
+
background: (0, _toastUtils.getMainColor)((_toast$options2 = toast.options) == null ? void 0 : _toast$options2.appearance)
|
72
|
+
}
|
73
|
+
}, (0, _toastUtils.getIcon)((_toast$options3 = toast.options) == null ? void 0 : _toast$options3.appearance)), /*#__PURE__*/_react["default"].createElement("div", {
|
74
|
+
className: "Toast--content",
|
75
|
+
style: (0, _extends2["default"])({
|
76
|
+
padding: '8px 12px',
|
77
|
+
width: '100%',
|
78
|
+
background: (0, _toastUtils.getBackground)((_toast$options4 = toast.options) == null ? void 0 : _toast$options4.appearance),
|
79
|
+
color: (0, _toastUtils.getTextColor)((_toast$options5 = toast.options) == null ? void 0 : _toast$options5.appearance)
|
80
|
+
}, style)
|
81
|
+
}, toast.content));
|
82
|
+
})));
|
83
|
+
};
|
84
|
+
|
85
|
+
exports.ToastProvider = ToastProvider;
|
86
|
+
|
87
|
+
function useToasts() {
|
88
|
+
var context = _react["default"].useContext(ToastContext);
|
89
|
+
|
90
|
+
if (context === undefined) {
|
91
|
+
throw new Error('useToasts must be used within ToastProvider');
|
92
|
+
}
|
93
|
+
|
94
|
+
return context;
|
95
|
+
}
|
96
|
+
//# sourceMappingURL=useToasts.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../src/ui/hooks/useToasts.tsx"],"names":["ToastContext","React","createContext","undefined","ToastProvider","children","duration","style","useState","toasts","setToasts","addToast","content","options","id","deleteToasts","useCallback","values","router","useEffect","asPath","__html","map","toast","color","appearance","background","padding","width","useToasts","context","useContext","Error"],"mappings":";;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAuBA,IAAMA,YAAY,gBAAGC,kBAAMC,aAAN,CAA6CC,SAA7C,CAArB;;AAEO,IAAMC,aAAa,GAAG,SAAhBA,aAAgB,OAQvB;AAAA,MAPJC,QAOI,QAPJA,QAOI;AAAA,2BANJC,QAMI;AAAA,MANJA,QAMI,8BANO,IAMP;AAAA,MALJC,KAKI,QALJA,KAKI;;AAAA,wBACwBN,kBAAMO,QAAN,CAAwB,EAAxB,CADxB;AAAA,MACGC,MADH;AAAA,MACWC,SADX;;AAGJ,MAAMC,QAAQ,GAAG,SAAXA,QAAW,CAACC,OAAD,EAAkBC,OAAlB,EAA6C;AAC5DH,IAAAA,SAAS,EAAE;AAAEE,MAAAA,OAAO,EAAPA,OAAF;AAAWC,MAAAA,OAAO,EAAPA,OAAX;AAAoBC,MAAAA,EAAE,EAAE;AAAxB,KAAF,SAAuCL,MAAvC,EAAT;AACD,GAFD;;AAIA,MAAMM,YAAY,GAAGd,kBAAMe,WAAN,CAAkB,YAAM;AAC3CN,IAAAA,SAAS,CAAC,EAAD,CAAT;AACD,GAFoB,EAElB,EAFkB,CAArB;;AAIA,MAAMO,MAAM,GAAG;AACbN,IAAAA,QAAQ,EAARA;AADa,GAAf;AAIA,MAAMO,MAAM,GAAG,wBAAf;;AAEAjB,oBAAMkB,SAAN,CAAgB,YAAM;AACpBJ,IAAAA,YAAY;AACb,GAFD,EAEG,CAACA,YAAD,EAAeG,MAAM,CAACE,MAAtB,CAFH;;AAIA,sBACE,gCAAC,YAAD,CAAc,QAAd;AAAuB,IAAA,KAAK,EAAEH;AAA9B,KACGZ,QADH,eAEE;AACE,IAAA,uBAAuB,EAAE;AACvBgB,MAAAA,MAAM;AADiB;AAD3B,IAFF,eAoCE;AAAK,IAAA,SAAS,EAAC;AAAf,KACGZ,MAAM,CAACa,GAAP,CAAW,UAACC,KAAD,EAAW;AAAA;;AACrB,wBACE;AACE,MAAA,GAAG,EAAEA,KAAK,CAACT,EADb;AAEE,MAAA,SAAS,EAAC,OAFZ;AAGE,MAAA,KAAK,gCACA,8BAAaR,QAAb,CADA;AAHP,oBAOE;AACE,MAAA,SAAS,EAAC,aADZ;AAEE,MAAA,KAAK,EAAE;AACLkB,QAAAA,KAAK,EAAE,iDAAcD,KAAK,CAACV,OAApB,qBAAc,eAAeY,UAA7B,CADF;AAELC,QAAAA,UAAU,EAAE,iDAAaH,KAAK,CAACV,OAAnB,qBAAa,gBAAeY,UAA5B;AAFP;AAFT,OAOG,4CAAQF,KAAK,CAACV,OAAd,qBAAQ,gBAAeY,UAAvB,CAPH,CAPF,eAgBE;AACE,MAAA,SAAS,EAAC,gBADZ;AAEE,MAAA,KAAK;AACHE,QAAAA,OAAO,EAAE,UADN;AAEHC,QAAAA,KAAK,EAAE,MAFJ;AAGHF,QAAAA,UAAU,EAAE,kDAAcH,KAAK,CAACV,OAApB,qBAAc,gBAAeY,UAA7B,CAHT;AAIHD,QAAAA,KAAK,EAAE,iDAAaD,KAAK,CAACV,OAAnB,qBAAa,gBAAeY,UAA5B;AAJJ,SAKAlB,KALA;AAFP,OAUGgB,KAAK,CAACX,OAVT,CAhBF,CADF;AA+BD,GAhCA,CADH,CApCF,CADF;AA0ED,CAvGM;;;;AAyGA,SAASiB,SAAT,GAAqB;AAC1B,MAAMC,OAAO,GAAG7B,kBAAM8B,UAAN,CAAiB/B,YAAjB,CAAhB;;AAEA,MAAI8B,OAAO,KAAK3B,SAAhB,EAA2B;AACzB,UAAM,IAAI6B,KAAJ,CAAU,6CAAV,CAAN;AACD;;AAED,SAAOF,OAAP;AACD","sourcesContent":["import React from 'react'\nimport { useRouter } from 'next/router'\nimport { v4 as uuid } from 'uuid'\nimport {\n getMainColor,\n getIcon,\n getBackground,\n defaultStyle,\n getTextColor,\n} from '../toastUtils'\n\nexport interface ToastOptions {\n appearance?: 'error' | 'info' | 'success' | 'warning'\n autoDismiss?: boolean\n}\n\nexport interface Toast {\n content: string\n options?: ToastOptions\n id: string\n}\n\ntype ToastValues = {\n addToast: (content: string, options?: ToastOptions) => void\n}\n\nconst ToastContext = React.createContext<ToastValues | undefined>(undefined)\n\nexport const ToastProvider = ({\n children,\n duration = 5000,\n style,\n}: {\n children: React.ReactNode\n duration?: number\n style?: object\n}) => {\n const [toasts, setToasts] = React.useState<Toast[]>([])\n\n const addToast = (content: string, options?: ToastOptions) => {\n setToasts([{ content, options, id: uuid() }, ...toasts])\n }\n\n const deleteToasts = React.useCallback(() => {\n setToasts([])\n }, [])\n\n const values = {\n addToast,\n }\n\n const router = useRouter()\n\n React.useEffect(() => {\n deleteToasts()\n }, [deleteToasts, router.asPath])\n\n return (\n <ToastContext.Provider value={values}>\n {children}\n <style\n dangerouslySetInnerHTML={{\n __html: `\n .Toasts--container {\n position: fixed;\n right: 0;\n transform: translateX(100%);\n top: 0;\n width: 25rem;\n display: flex;\n align-items: stretch;\n flex-direction: column;\n z-index: 99999;\n gap: 0.5rem;\n font-size: 0.8rem;\n padding: 1rem;\n }\n .Toast--left {\n width: 2rem;\n border-radius: 0.3rem 0 0 0.3rem;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n @keyframes showToast {\n 0% { opacity: 0; transform: translateX(0%);}\n 10% {opacity: 1; transform: translateX(-105%)}\n 90% {opacity: 1; transform: translateX(-105%)}\n 100% {opacity: 0; transform: translateX(0%);}\n }\n `,\n }}\n />\n <div className=\"Toasts--container\">\n {toasts.map((toast) => {\n return (\n <div\n key={toast.id}\n className=\"Toast\"\n style={{\n ...defaultStyle(duration),\n }}\n >\n <div\n className=\"Toast--left\"\n style={{\n color: getBackground(toast.options?.appearance),\n background: getMainColor(toast.options?.appearance),\n }}\n >\n {getIcon(toast.options?.appearance)}\n </div>\n <div\n className=\"Toast--content\"\n style={{\n padding: '8px 12px',\n width: '100%',\n background: getBackground(toast.options?.appearance),\n color: getTextColor(toast.options?.appearance),\n ...style,\n }}\n >\n {toast.content}\n </div>\n </div>\n )\n })}\n </div>\n </ToastContext.Provider>\n )\n}\n\nexport function useToasts() {\n const context = React.useContext(ToastContext)\n\n if (context === undefined) {\n throw new Error('useToasts must be used within ToastProvider')\n }\n\n return context\n}\n"],"file":"useToasts.js"}
|
package/dist/cjs/ui/index.js
CHANGED
@@ -9,4 +9,12 @@ Object.keys(_components).forEach(function (key) {
|
|
9
9
|
if (key in exports && exports[key] === _components[key]) return;
|
10
10
|
exports[key] = _components[key];
|
11
11
|
});
|
12
|
+
|
13
|
+
var _hooks = require("./hooks");
|
14
|
+
|
15
|
+
Object.keys(_hooks).forEach(function (key) {
|
16
|
+
if (key === "default" || key === "__esModule") return;
|
17
|
+
if (key in exports && exports[key] === _hooks[key]) return;
|
18
|
+
exports[key] = _hooks[key];
|
19
|
+
});
|
12
20
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/ui/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/ui/index.ts"],"names":[],"mappings":";;;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["export * from './components'"],"file":"index.js"}
|
1
|
+
{"version":3,"sources":["../../../src/ui/index.ts"],"names":[],"mappings":";;;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["export * from './components'\nexport * from './hooks'\n"],"file":"index.js"}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
exports.__esModule = true;
|
6
|
+
exports.ErrorIcon = void 0;
|
7
|
+
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
9
|
+
|
10
|
+
var ErrorIcon = function ErrorIcon() {
|
11
|
+
return /*#__PURE__*/_react["default"].createElement("svg", {
|
12
|
+
"aria-hidden": "true",
|
13
|
+
height: "16",
|
14
|
+
width: "12",
|
15
|
+
viewBox: "0 0 12 16",
|
16
|
+
style: {
|
17
|
+
fill: 'currentcolor'
|
18
|
+
}
|
19
|
+
}, /*#__PURE__*/_react["default"].createElement("path", {
|
20
|
+
"fill-rule": "evenodd",
|
21
|
+
d: "M5.05.01c.81 2.17.41 3.38-.52 4.31C3.55 5.37 1.98 6.15.9 7.68c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.01 8.68 2.15 5.05.02L5.03 0l.02.01z"
|
22
|
+
}));
|
23
|
+
};
|
24
|
+
|
25
|
+
exports.ErrorIcon = ErrorIcon;
|
26
|
+
//# sourceMappingURL=ErrorIcon.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../src/ui/toastUtils/ErrorIcon.tsx"],"names":["ErrorIcon","fill"],"mappings":";;;;;;;AAAA;;AACO,IAAMA,SAAS,GAAG,SAAZA,SAAY,GAAM;AAC7B,sBACE;AACE,mBAAY,MADd;AAEE,IAAA,MAAM,EAAC,IAFT;AAGE,IAAA,KAAK,EAAC,IAHR;AAIE,IAAA,OAAO,EAAC,WAJV;AAKE,IAAA,KAAK,EAAE;AACLC,MAAAA,IAAI,EAAE;AADD;AALT,kBASE;AACE,iBAAU,SADZ;AAEE,IAAA,CAAC,EAAC;AAFJ,IATF,CADF;AAgBD,CAjBM","sourcesContent":["import React from 'react'\nexport const ErrorIcon = () => {\n return (\n <svg\n aria-hidden=\"true\"\n height=\"16\"\n width=\"12\"\n viewBox=\"0 0 12 16\"\n style={{\n fill: 'currentcolor',\n }}\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M5.05.01c.81 2.17.41 3.38-.52 4.31C3.55 5.37 1.98 6.15.9 7.68c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.01 8.68 2.15 5.05.02L5.03 0l.02.01z\"\n ></path>\n </svg>\n )\n}\n"],"file":"ErrorIcon.js"}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
exports.__esModule = true;
|
6
|
+
exports.InfoIcon = void 0;
|
7
|
+
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
9
|
+
|
10
|
+
var InfoIcon = function InfoIcon() {
|
11
|
+
return /*#__PURE__*/_react["default"].createElement("svg", {
|
12
|
+
"aria-hidden": "true",
|
13
|
+
height: "16",
|
14
|
+
width: "14",
|
15
|
+
viewBox: "0 0 14 16",
|
16
|
+
style: {
|
17
|
+
fill: 'currentcolor'
|
18
|
+
}
|
19
|
+
}, /*#__PURE__*/_react["default"].createElement("path", {
|
20
|
+
"fill-rule": "evenodd",
|
21
|
+
d: "M6.3 5.71a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 8.01c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V8v.01zM7 2.32C3.86 2.32 1.3 4.86 1.3 8c0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 1c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"
|
22
|
+
}));
|
23
|
+
};
|
24
|
+
|
25
|
+
exports.InfoIcon = InfoIcon;
|
26
|
+
//# sourceMappingURL=InfoIcon.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../src/ui/toastUtils/InfoIcon.tsx"],"names":["InfoIcon","fill"],"mappings":";;;;;;;AAAA;;AAEO,IAAMA,QAAQ,GAAG,SAAXA,QAAW,GAAM;AAC5B,sBACE;AACE,mBAAY,MADd;AAEE,IAAA,MAAM,EAAC,IAFT;AAGE,IAAA,KAAK,EAAC,IAHR;AAIE,IAAA,OAAO,EAAC,WAJV;AAKE,IAAA,KAAK,EAAE;AAAEC,MAAAA,IAAI,EAAE;AAAR;AALT,kBAOE;AACE,iBAAU,SADZ;AAEE,IAAA,CAAC,EAAC;AAFJ,IAPF,CADF;AAcD,CAfM","sourcesContent":["import React from 'react'\n\nexport const InfoIcon = () => {\n return (\n <svg\n aria-hidden=\"true\"\n height=\"16\"\n width=\"14\"\n viewBox=\"0 0 14 16\"\n style={{ fill: 'currentcolor' }}\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M6.3 5.71a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 8.01c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V8v.01zM7 2.32C3.86 2.32 1.3 4.86 1.3 8c0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 1c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z\"\n ></path>\n </svg>\n )\n}\n"],"file":"InfoIcon.js"}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
exports.__esModule = true;
|
6
|
+
exports.SuccessIcon = void 0;
|
7
|
+
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
9
|
+
|
10
|
+
var SuccessIcon = function SuccessIcon() {
|
11
|
+
return /*#__PURE__*/_react["default"].createElement("svg", {
|
12
|
+
"aria-hidden": "true",
|
13
|
+
height: "16",
|
14
|
+
width: "12",
|
15
|
+
viewBox: "0 0 12 16",
|
16
|
+
style: {
|
17
|
+
fill: 'currentcolor'
|
18
|
+
}
|
19
|
+
}, /*#__PURE__*/_react["default"].createElement("path", {
|
20
|
+
"fill-rule": "evenodd",
|
21
|
+
d: "M12 5.5l-8 8-4-4L1.5 8 4 10.5 10.5 4 12 5.5z"
|
22
|
+
}));
|
23
|
+
};
|
24
|
+
|
25
|
+
exports.SuccessIcon = SuccessIcon;
|
26
|
+
//# sourceMappingURL=SuccessIcon.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../src/ui/toastUtils/SuccessIcon.tsx"],"names":["SuccessIcon","fill"],"mappings":";;;;;;;AAAA;;AAEO,IAAMA,WAAW,GAAG,SAAdA,WAAc,GAAM;AAC/B,sBACE;AACE,mBAAY,MADd;AAEE,IAAA,MAAM,EAAC,IAFT;AAGE,IAAA,KAAK,EAAC,IAHR;AAIE,IAAA,OAAO,EAAC,WAJV;AAKE,IAAA,KAAK,EAAE;AAAEC,MAAAA,IAAI,EAAE;AAAR;AALT,kBAOE;AACE,iBAAU,SADZ;AAEE,IAAA,CAAC,EAAC;AAFJ,IAPF,CADF;AAcD,CAfM","sourcesContent":["import React from 'react'\n\nexport const SuccessIcon = () => {\n return (\n <svg\n aria-hidden=\"true\"\n height=\"16\"\n width=\"12\"\n viewBox=\"0 0 12 16\"\n style={{ fill: 'currentcolor' }}\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M12 5.5l-8 8-4-4L1.5 8 4 10.5 10.5 4 12 5.5z\"\n ></path>\n </svg>\n )\n}\n"],"file":"SuccessIcon.js"}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
exports.__esModule = true;
|
6
|
+
exports.WarningIcon = void 0;
|
7
|
+
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
9
|
+
|
10
|
+
var WarningIcon = function WarningIcon() {
|
11
|
+
return /*#__PURE__*/_react["default"].createElement("svg", {
|
12
|
+
"aria-hidden": "true",
|
13
|
+
height: "16",
|
14
|
+
width: "16",
|
15
|
+
viewBox: "0 0 16 16",
|
16
|
+
style: {
|
17
|
+
fill: 'currentcolor'
|
18
|
+
}
|
19
|
+
}, /*#__PURE__*/_react["default"].createElement("path", {
|
20
|
+
"fill-rule": "evenodd",
|
21
|
+
d: "M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"
|
22
|
+
}));
|
23
|
+
};
|
24
|
+
|
25
|
+
exports.WarningIcon = WarningIcon;
|
26
|
+
//# sourceMappingURL=WarningIcon.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../src/ui/toastUtils/WarningIcon.tsx"],"names":["WarningIcon","fill"],"mappings":";;;;;;;AAAA;;AAEO,IAAMA,WAAW,GAAG,SAAdA,WAAc,GAAM;AAC/B,sBACE;AACE,mBAAY,MADd;AAEE,IAAA,MAAM,EAAC,IAFT;AAGE,IAAA,KAAK,EAAC,IAHR;AAIE,IAAA,OAAO,EAAC,WAJV;AAKE,IAAA,KAAK,EAAE;AAAEC,MAAAA,IAAI,EAAE;AAAR;AALT,kBAOE;AACE,iBAAU,SADZ;AAEE,IAAA,CAAC,EAAC;AAFJ,IAPF,CADF;AAcD,CAfM","sourcesContent":["import React from 'react'\n\nexport const WarningIcon = () => {\n return (\n <svg\n aria-hidden=\"true\"\n height=\"16\"\n width=\"16\"\n viewBox=\"0 0 16 16\"\n style={{ fill: 'currentcolor' }}\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z\"\n ></path>\n </svg>\n )\n}\n"],"file":"WarningIcon.js"}
|
@@ -0,0 +1,44 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
exports.__esModule = true;
|
4
|
+
|
5
|
+
var _ErrorIcon = require("./ErrorIcon");
|
6
|
+
|
7
|
+
Object.keys(_ErrorIcon).forEach(function (key) {
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
9
|
+
if (key in exports && exports[key] === _ErrorIcon[key]) return;
|
10
|
+
exports[key] = _ErrorIcon[key];
|
11
|
+
});
|
12
|
+
|
13
|
+
var _SuccessIcon = require("./SuccessIcon");
|
14
|
+
|
15
|
+
Object.keys(_SuccessIcon).forEach(function (key) {
|
16
|
+
if (key === "default" || key === "__esModule") return;
|
17
|
+
if (key in exports && exports[key] === _SuccessIcon[key]) return;
|
18
|
+
exports[key] = _SuccessIcon[key];
|
19
|
+
});
|
20
|
+
|
21
|
+
var _utils = require("./utils");
|
22
|
+
|
23
|
+
Object.keys(_utils).forEach(function (key) {
|
24
|
+
if (key === "default" || key === "__esModule") return;
|
25
|
+
if (key in exports && exports[key] === _utils[key]) return;
|
26
|
+
exports[key] = _utils[key];
|
27
|
+
});
|
28
|
+
|
29
|
+
var _InfoIcon = require("./InfoIcon");
|
30
|
+
|
31
|
+
Object.keys(_InfoIcon).forEach(function (key) {
|
32
|
+
if (key === "default" || key === "__esModule") return;
|
33
|
+
if (key in exports && exports[key] === _InfoIcon[key]) return;
|
34
|
+
exports[key] = _InfoIcon[key];
|
35
|
+
});
|
36
|
+
|
37
|
+
var _WarningIcon = require("./WarningIcon");
|
38
|
+
|
39
|
+
Object.keys(_WarningIcon).forEach(function (key) {
|
40
|
+
if (key === "default" || key === "__esModule") return;
|
41
|
+
if (key in exports && exports[key] === _WarningIcon[key]) return;
|
42
|
+
exports[key] = _WarningIcon[key];
|
43
|
+
});
|
44
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../src/ui/toastUtils/index.ts"],"names":[],"mappings":";;;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["export * from './ErrorIcon'\nexport * from './SuccessIcon'\nexport * from './utils'\nexport * from './InfoIcon'\nexport * from './WarningIcon'\n"],"file":"index.js"}
|
@@ -0,0 +1,107 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
exports.__esModule = true;
|
6
|
+
exports.defaultStyle = exports.getBackground = exports.getIcon = exports.getTextColor = exports.getMainColor = void 0;
|
7
|
+
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
9
|
+
|
10
|
+
var _index = require("./index");
|
11
|
+
|
12
|
+
var getMainColor = function getMainColor(mode) {
|
13
|
+
switch (mode) {
|
14
|
+
case 'error':
|
15
|
+
return "#FF5630";
|
16
|
+
|
17
|
+
case 'success':
|
18
|
+
return "#36B37E";
|
19
|
+
|
20
|
+
case 'info':
|
21
|
+
return "#2684FF";
|
22
|
+
|
23
|
+
case 'warning':
|
24
|
+
return "#FFAB00";
|
25
|
+
|
26
|
+
default:
|
27
|
+
return "#2684FF";
|
28
|
+
}
|
29
|
+
};
|
30
|
+
|
31
|
+
exports.getMainColor = getMainColor;
|
32
|
+
|
33
|
+
var getTextColor = function getTextColor(mode) {
|
34
|
+
switch (mode) {
|
35
|
+
case 'error':
|
36
|
+
return "#BF2600";
|
37
|
+
|
38
|
+
case 'success':
|
39
|
+
return "#006644";
|
40
|
+
|
41
|
+
case 'info':
|
42
|
+
return "#505F79";
|
43
|
+
|
44
|
+
case 'warning':
|
45
|
+
return "#FF8B00";
|
46
|
+
|
47
|
+
default:
|
48
|
+
return "#505F79";
|
49
|
+
}
|
50
|
+
};
|
51
|
+
|
52
|
+
exports.getTextColor = getTextColor;
|
53
|
+
|
54
|
+
var getIcon = function getIcon(mode) {
|
55
|
+
switch (mode) {
|
56
|
+
case 'error':
|
57
|
+
return /*#__PURE__*/_react["default"].createElement(_index.ErrorIcon, null);
|
58
|
+
|
59
|
+
case 'success':
|
60
|
+
return /*#__PURE__*/_react["default"].createElement(_index.SuccessIcon, null);
|
61
|
+
|
62
|
+
case 'info':
|
63
|
+
return /*#__PURE__*/_react["default"].createElement(_index.InfoIcon, null);
|
64
|
+
|
65
|
+
case 'warning':
|
66
|
+
return /*#__PURE__*/_react["default"].createElement(_index.WarningIcon, null);
|
67
|
+
|
68
|
+
default:
|
69
|
+
return /*#__PURE__*/_react["default"].createElement(_index.InfoIcon, null);
|
70
|
+
}
|
71
|
+
};
|
72
|
+
|
73
|
+
exports.getIcon = getIcon;
|
74
|
+
|
75
|
+
var getBackground = function getBackground(mode) {
|
76
|
+
switch (mode) {
|
77
|
+
case 'error':
|
78
|
+
return "#FFEBE6";
|
79
|
+
|
80
|
+
case 'success':
|
81
|
+
return "#E3FCEF";
|
82
|
+
|
83
|
+
case 'info':
|
84
|
+
return "#fff";
|
85
|
+
|
86
|
+
case 'warning':
|
87
|
+
return "#FFFAE6";
|
88
|
+
|
89
|
+
default:
|
90
|
+
return "#fff";
|
91
|
+
}
|
92
|
+
};
|
93
|
+
|
94
|
+
exports.getBackground = getBackground;
|
95
|
+
|
96
|
+
var defaultStyle = function defaultStyle(duration) {
|
97
|
+
return {
|
98
|
+
height: 'fit-content',
|
99
|
+
borderRadius: '0.3rem',
|
100
|
+
display: 'flex',
|
101
|
+
opacity: '0',
|
102
|
+
animation: duration + "ms cubic-bezier(0.4, 0, 0.2, 1) 0s 1 normal forwards running showToast"
|
103
|
+
};
|
104
|
+
};
|
105
|
+
|
106
|
+
exports.defaultStyle = defaultStyle;
|
107
|
+
//# sourceMappingURL=utils.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../src/ui/toastUtils/utils.tsx"],"names":["getMainColor","mode","getTextColor","getIcon","getBackground","defaultStyle","duration","height","borderRadius","display","opacity","animation"],"mappings":";;;;;;;AAAA;;AACA;;AAEO,IAAMA,YAAY,GAAG,SAAfA,YAAe,CAACC,IAAD,EAAmB;AAC7C,UAAQA,IAAR;AACE,SAAK,OAAL;AACE;;AACF,SAAK,SAAL;AACE;;AACF,SAAK,MAAL;AACE;;AACF,SAAK,SAAL;AACE;;AACF;AACE;AAVJ;AAYD,CAbM;;;;AAcA,IAAMC,YAAY,GAAG,SAAfA,YAAe,CAACD,IAAD,EAAmB;AAC7C,UAAQA,IAAR;AACE,SAAK,OAAL;AACE;;AACF,SAAK,SAAL;AACE;;AACF,SAAK,MAAL;AACE;;AACF,SAAK,SAAL;AACE;;AACF;AACE;AAVJ;AAYD,CAbM;;;;AAeA,IAAME,OAAO,GAAG,SAAVA,OAAU,CAACF,IAAD,EAAmB;AACxC,UAAQA,IAAR;AACE,SAAK,OAAL;AACE,0BAAO,gCAAC,gBAAD,OAAP;;AACF,SAAK,SAAL;AACE,0BAAO,gCAAC,kBAAD,OAAP;;AACF,SAAK,MAAL;AACE,0BAAO,gCAAC,eAAD,OAAP;;AACF,SAAK,SAAL;AACE,0BAAO,gCAAC,kBAAD,OAAP;;AACF;AACE,0BAAO,gCAAC,eAAD,OAAP;AAVJ;AAYD,CAbM;;;;AAeA,IAAMG,aAAa,GAAG,SAAhBA,aAAgB,CAACH,IAAD,EAAmB;AAC9C,UAAQA,IAAR;AACE,SAAK,OAAL;AACE;;AACF,SAAK,SAAL;AACE;;AACF,SAAK,MAAL;AACE;;AACF,SAAK,SAAL;AACE;;AACF;AACE;AAVJ;AAYD,CAbM;;;;AAeA,IAAMI,YAAY,GAAG,SAAfA,YAAe,CAACC,QAAD;AAAA,SAAuB;AACjDC,IAAAA,MAAM,EAAE,aADyC;AAEjDC,IAAAA,YAAY,EAAE,QAFmC;AAGjDC,IAAAA,OAAO,EAAE,MAHwC;AAIjDC,IAAAA,OAAO,EAAE,GAJwC;AAKjDC,IAAAA,SAAS,EAAKL,QAAL;AALwC,GAAvB;AAAA,CAArB","sourcesContent":["import React from 'react'\nimport { ErrorIcon, SuccessIcon, InfoIcon, WarningIcon } from './index'\n\nexport const getMainColor = (mode?: string) => {\n switch (mode) {\n case 'error':\n return `#FF5630`\n case 'success':\n return `#36B37E`\n case 'info':\n return `#2684FF`\n case 'warning':\n return `#FFAB00`\n default:\n return `#2684FF`\n }\n}\nexport const getTextColor = (mode?: string) => {\n switch (mode) {\n case 'error':\n return `#BF2600`\n case 'success':\n return `#006644`\n case 'info':\n return `#505F79`\n case 'warning':\n return `#FF8B00`\n default:\n return `#505F79`\n }\n}\n\nexport const getIcon = (mode?: string) => {\n switch (mode) {\n case 'error':\n return <ErrorIcon />\n case 'success':\n return <SuccessIcon />\n case 'info':\n return <InfoIcon />\n case 'warning':\n return <WarningIcon />\n default:\n return <InfoIcon />\n }\n}\n\nexport const getBackground = (mode?: string) => {\n switch (mode) {\n case 'error':\n return `#FFEBE6`\n case 'success':\n return `#E3FCEF`\n case 'info':\n return `#fff`\n case 'warning':\n return `#FFFAE6`\n default:\n return `#fff`\n }\n}\n\nexport const defaultStyle = (duration: number) => ({\n height: 'fit-content',\n borderRadius: '0.3rem',\n display: 'flex',\n opacity: '0',\n animation: `${duration}ms cubic-bezier(0.4, 0, 0.2, 1) 0s 1 normal forwards running showToast`,\n})\n"],"file":"utils.js"}
|
@@ -30,7 +30,7 @@ export function ListingFiltersProvider(_ref) {
|
|
30
30
|
var data = React.useMemo(() => {
|
31
31
|
if (!isLoading && aggData) {
|
32
32
|
var result = aggregates == null ? void 0 : aggregates.sort((a, b) => a.order - b.order).map(currentAggregate => {
|
33
|
-
var _listing$slugAliases
|
33
|
+
var _listing$slugAliases$, _listing$slugAliases;
|
34
34
|
|
35
35
|
var type = currentAggregate.aggregationType.toString();
|
36
36
|
var term = currentAggregate.aggregationDefinition.split(':')[0];
|
@@ -41,7 +41,7 @@ export function ListingFiltersProvider(_ref) {
|
|
41
41
|
filter,
|
42
42
|
router,
|
43
43
|
type,
|
44
|
-
slug: (_listing$slugAliases$ = config.listing.slugAliases[slug]) != null ? _listing$slugAliases$ : slug,
|
44
|
+
slug: (_listing$slugAliases$ = (_listing$slugAliases = config.listing.slugAliases) == null ? void 0 : _listing$slugAliases[slug]) != null ? _listing$slugAliases$ : slug,
|
45
45
|
pageType
|
46
46
|
});
|
47
47
|
var selectedCount = generatedFilters == null ? void 0 : generatedFilters.reduce((count, res) => {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/listing/hooks/useListingFilters.tsx"],"names":["React","useRouter","useListingConfig","useAggregateQuery","AggregateRequestEnum","ListingTypesEnum","useListingSlug","stripQueryProps","typeToSuffix","getSelectedFilters","useConfigState","ListingFiltersStateContext","createContext","undefined","ListingFiltersProvider","children","aggregates","type","pageType","attributeSortType","data","aggData","isLoading","isFetching","Filters","config","router","slug","useMemo","result","sort","a","b","order","map","currentAggregate","aggregationType","toString","term","aggregationDefinition","split","filter","filterDefinition","current","find","agg","name","generatedFilters","generateFilters","rawFilters","listing","slugAliases","selectedCount","reduce","count","res","selected","attributeResult","label","component","items","raw","clearAll","push","pathname","query","filterByType","clearAllFilters","selectedFilters","useListingFilters","context","useContext","Error","results","currentTerm","filterKey","mapKey","isFilterSelected","filtersOperatorsMap","meta","onClick","createAggregateQuery","aggType","aggKey","aggOperator","Boolean","areFiltersArray","Array","isArray","sel","includes","ranges","stats","terms","r","keysMap","key","from","to","manageFilter","pair","remove","stripped","generateQueryString","activeFilters","extractFilter","str","aggPair","operator","val","filterType","filterVal","filterOperator","Object","keys","forEach","el","applied","remaining","x","length","join","idx","Search","q","search","cat","filters","filterName"],"mappings":"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","sourcesContent":["import React from 'react'\nimport { useRouter } from 'next/router'\nimport { NextRouter } from 'next/router'\nimport { useListingConfig } from './useListingConfig'\nimport {\n useAggregateQuery,\n AggregateRequestEnum,\n AggregateType,\n AggregationResultType,\n} from '../api'\n\nimport { Aggregate, ListingTypesEnum } from '../types'\nimport { useListingSlug } from './useListingSlug'\n\nimport { stripQueryProps } from '../../utils/generateQueryFromRouter'\nimport { typeToSuffix } from '../../utils/typeToSuffix'\nimport { generateQueryStringFromQuery } from '../../utils/generateQueryStringFromQuery'\nimport {\n RangeAggregation,\n StatAggregation,\n TermAggregation,\n} from '@sentecacommerce/sdk'\nimport { getSelectedFilters } from '../../utils'\nimport { useConfigState } from '../../index'\nimport { FiltersQuery } from '../index'\n\nexport type {\n RangeAggregation,\n StatAggregation,\n TermAggregation,\n} from '@sentecacommerce/sdk'\n\ntype AggPair = {\n aggType: string\n aggKey: string\n aggOperator: string\n}\n\nexport type ListingAggregationResultType = {\n selected: boolean\n data: AggregationResultType\n meta: any\n aggregationType?: string\n onClick: () => void\n}\n\nexport type ListingAggregateType = {\n name: string\n component: string\n type: string\n selectedCount: number\n items: ListingAggregationResultType[]\n clearAll: () => void\n raw: StatAggregation | RangeAggregation | TermAggregation\n}\n\nexport type UseListingFiltersResult = {\n data?: ListingAggregateType[]\n clearAllFilters: () => void\n selectedFilters: ListingAggregationResultType[]\n isLoading: boolean\n isFetching: boolean\n}\n\nconst ListingFiltersStateContext = React.createContext<\n UseListingFiltersResult | undefined\n>(undefined)\n\nexport function ListingFiltersProvider({\n children,\n}: {\n children: React.ReactNode\n}) {\n const { aggregates, type: pageType, attributeSortType } = useListingConfig()\n\n const { data: aggData, isLoading, isFetching } = useAggregateQuery(\n aggregates as Aggregate[],\n AggregateRequestEnum.Filters,\n attributeSortType\n )\n\n const config = useConfigState()\n const router = useRouter()\n const slug = useListingSlug()\n\n const data = React.useMemo(() => {\n if (!isLoading && aggData) {\n const result = aggregates\n ?.sort((a, b) => a.order - b.order)\n .map((currentAggregate) => {\n const type = currentAggregate.aggregationType.toString()\n const term = currentAggregate.aggregationDefinition.split(':')[0]\n const filter = currentAggregate.filterDefinition\n const current: AggregateType = aggData[type].find(\n (agg: AggregateType) => agg.name === term\n )\n\n const generatedFilters = generateFilters({\n rawFilters: current,\n filter,\n router,\n type,\n slug: (config as any).listing.slugAliases[slug] ?? slug,\n pageType,\n })\n\n const selectedCount = generatedFilters?.reduce((count, res) => {\n if (res.selected) count++\n return count\n }, 0)\n\n const attributeResult = ({\n name: currentAggregate.label,\n component: currentAggregate.component,\n items: generatedFilters,\n selectedCount,\n raw: current,\n clearAll: () =>\n router.push({\n pathname: router.pathname,\n query: {\n ...router.query,\n filter: filterByType(router.query.filter, filter),\n },\n }),\n type: type,\n } as unknown) as ListingAggregateType\n\n return attributeResult\n })\n\n return result\n }\n return undefined\n }, [aggData, router])\n\n const clearAllFilters = () => {\n const query = { ...router.query }\n delete query.filter\n\n router.push({\n pathname: router.pathname,\n query,\n })\n }\n\n const selectedFilters = React.useMemo(() => {\n return getSelectedFilters(router, slug, data as any, config) as any\n }, [router, data])\n\n return (\n <ListingFiltersStateContext.Provider\n value={{ data, clearAllFilters, selectedFilters, isLoading, isFetching }}\n >\n {children}\n </ListingFiltersStateContext.Provider>\n )\n}\n\nexport function useListingFilters() {\n const context = React.useContext(ListingFiltersStateContext)\n if (context === undefined) {\n throw new Error(\n 'useListingFilters must be used within a ListingFiltersProvider'\n )\n }\n return context\n}\n\nfunction generateFilters({\n rawFilters,\n type,\n filter,\n slug,\n router,\n pageType,\n}: {\n rawFilters: AggregateType\n type: string\n filter: string\n slug: string\n router: NextRouter\n pageType: ListingTypesEnum\n}) {\n return rawFilters.results\n ?.filter((res) => res.count > 0)\n ?.map((currentTerm) => {\n const filterKey = mapKey(currentTerm, type)\n\n const selected = isFilterSelected(\n router,\n filter,\n filterKey,\n filtersOperatorsMap[type]\n )\n\n return {\n data: currentTerm,\n selected,\n meta: currentTerm.meta,\n onClick: () => {\n router.push(\n createAggregateQuery(\n pageType,\n slug,\n {\n aggType: filter,\n aggKey: filterKey,\n aggOperator: filtersOperatorsMap[type],\n },\n Boolean(selected),\n router\n )\n )\n },\n }\n })\n}\n\nconst isFilterSelected = (\n router: NextRouter,\n filter: string,\n filterKey: any,\n type: string\n) => {\n const areFiltersArray = Array.isArray(router.query?.filter)\n\n return areFiltersArray\n ? !!(router.query.filter as string[])\n ?.find((sel: string) => sel.includes(`${filter};${type}`))\n ?.includes(filterKey)\n : router.query.filter?.includes(`${filter};${type}`) &&\n router.query.filter?.includes(filterKey)\n}\n\nexport const filtersOperatorsMap = {\n ranges: 'range',\n stats: 'range',\n terms: 'in',\n}\n\nfunction mapKey(r: any, type: any) {\n const keysMap = {\n terms: `\"${r.key}\"`,\n ranges: `${r.from},${r.to}`,\n }\n if (!keysMap[type]) return r.key\n\n return keysMap[type]\n}\n\nfunction manageFilter(pair: AggPair, query: any, remove: boolean) {\n const stripped = stripQueryProps(query, ['page']) // reset pagination on filter\n\n const result = generateQueryString(stripped, pair, remove)\n return result\n}\n\nconst generateQueryString = (\n query: FiltersQuery,\n pair: AggPair,\n remove?: boolean\n) => {\n const activeFilters = {}\n\n const extractFilter = ({\n str = '',\n aggPair,\n }: {\n str: string\n aggPair?: AggPair\n }) => {\n const [type, operator, val] = str.split(';')\n\n const filterType = aggPair?.aggType ?? type\n const filterVal = aggPair?.aggKey ?? val\n const filterOperator = aggPair?.aggOperator ?? operator\n\n if (activeFilters[filterType]) {\n activeFilters[filterType] += `,${filterVal}`\n } else {\n activeFilters[\n filterType\n ] = `filter=${filterType};${filterOperator};${filterVal}`\n }\n }\n\n Object.keys(query).forEach((el) => {\n if (Array.isArray(query[el])) {\n query[el].forEach((filter: string) => {\n extractFilter({ str: filter })\n })\n } else {\n if (el === 'sort') {\n activeFilters[el] = `sort=${query[el]}`\n } else {\n extractFilter({ str: query[el] })\n }\n }\n })\n\n if (remove) {\n const applied = activeFilters[pair.aggType].split(';')[2].split(',')\n\n const remaining = applied.filter((x: string) => !pair.aggKey.includes(x))\n\n if (remaining.length === 0) {\n activeFilters[pair.aggType] = ``\n } else {\n activeFilters[pair.aggType] = `filter=${pair.aggType};${\n pair.aggOperator\n };${remaining.join(',')}`\n }\n } else {\n extractFilter({ str: '', aggPair: pair })\n }\n\n if (Object.keys(activeFilters).length === 0) return ``\n\n return Object.keys(activeFilters).reduce((res, val, idx) => {\n res += `${idx > 0 ? '&' : ''}${activeFilters[val]}`\n return res\n }, ``)\n}\n\nfunction createAggregateQuery(\n type: ListingTypesEnum,\n slug: string,\n aggPair: AggPair,\n remove: boolean,\n router: NextRouter\n) {\n if (type === ListingTypesEnum.Search) {\n return router.query.q\n ? `/search?q=${router.query.q}&${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n : `/${slug}/c?search=${router.query.search}&${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n }\n\n if (router.query.cat) {\n return `/${router.query.slug}/${router.query.cat}/${\n typeToSuffix[type]\n }?${manageFilter(aggPair, router.query, remove)}`\n }\n\n return `/${slug}/${typeToSuffix[type]}?${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n}\n\nfunction filterByType(\n filters: string | string[] | undefined,\n filterName: string\n) {\n if (!filters) return\n\n if (typeof filters === 'string') {\n if (filters.includes(filterName)) return\n\n return filters\n }\n\n return filters.filter((filter) => !filter.includes(filterName))\n}\n"],"file":"useListingFilters.js"}
|
1
|
+
{"version":3,"sources":["../../../../src/listing/hooks/useListingFilters.tsx"],"names":["React","useRouter","useListingConfig","useAggregateQuery","AggregateRequestEnum","ListingTypesEnum","useListingSlug","stripQueryProps","typeToSuffix","getSelectedFilters","useConfigState","ListingFiltersStateContext","createContext","undefined","ListingFiltersProvider","children","aggregates","type","pageType","attributeSortType","data","aggData","isLoading","isFetching","Filters","config","router","slug","useMemo","result","sort","a","b","order","map","currentAggregate","aggregationType","toString","term","aggregationDefinition","split","filter","filterDefinition","current","find","agg","name","generatedFilters","generateFilters","rawFilters","listing","slugAliases","selectedCount","reduce","count","res","selected","attributeResult","label","component","items","raw","clearAll","push","pathname","query","filterByType","clearAllFilters","selectedFilters","useListingFilters","context","useContext","Error","results","currentTerm","filterKey","mapKey","isFilterSelected","filtersOperatorsMap","meta","onClick","createAggregateQuery","aggType","aggKey","aggOperator","Boolean","areFiltersArray","Array","isArray","sel","includes","ranges","stats","terms","r","keysMap","key","from","to","manageFilter","pair","remove","stripped","generateQueryString","activeFilters","extractFilter","str","aggPair","operator","val","filterType","filterVal","filterOperator","Object","keys","forEach","el","applied","remaining","x","length","join","idx","Search","q","search","cat","filters","filterName"],"mappings":"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","sourcesContent":["import React from 'react'\nimport { useRouter } from 'next/router'\nimport { NextRouter } from 'next/router'\nimport { useListingConfig } from './useListingConfig'\nimport {\n useAggregateQuery,\n AggregateRequestEnum,\n AggregateType,\n AggregationResultType,\n} from '../api'\n\nimport { Aggregate, ListingTypesEnum } from '../types'\nimport { useListingSlug } from './useListingSlug'\n\nimport { stripQueryProps } from '../../utils/generateQueryFromRouter'\nimport { typeToSuffix } from '../../utils/typeToSuffix'\nimport { generateQueryStringFromQuery } from '../../utils/generateQueryStringFromQuery'\nimport {\n RangeAggregation,\n StatAggregation,\n TermAggregation,\n} from '@sentecacommerce/sdk'\nimport { getSelectedFilters } from '../../utils'\nimport { useConfigState } from '../../index'\nimport { FiltersQuery } from '../index'\n\nexport type {\n RangeAggregation,\n StatAggregation,\n TermAggregation,\n} from '@sentecacommerce/sdk'\n\ntype AggPair = {\n aggType: string\n aggKey: string\n aggOperator: string\n}\n\nexport type ListingAggregationResultType = {\n selected: boolean\n data: AggregationResultType\n meta: any\n aggregationType?: string\n onClick: () => void\n}\n\nexport type ListingAggregateType = {\n name: string\n component: string\n type: string\n selectedCount: number\n items: ListingAggregationResultType[]\n clearAll: () => void\n raw: StatAggregation | RangeAggregation | TermAggregation\n}\n\nexport type UseListingFiltersResult = {\n data?: ListingAggregateType[]\n clearAllFilters: () => void\n selectedFilters: ListingAggregationResultType[]\n isLoading: boolean\n isFetching: boolean\n}\n\nconst ListingFiltersStateContext = React.createContext<\n UseListingFiltersResult | undefined\n>(undefined)\n\nexport function ListingFiltersProvider({\n children,\n}: {\n children: React.ReactNode\n}) {\n const { aggregates, type: pageType, attributeSortType } = useListingConfig()\n\n const { data: aggData, isLoading, isFetching } = useAggregateQuery(\n aggregates as Aggregate[],\n AggregateRequestEnum.Filters,\n attributeSortType\n )\n\n const config = useConfigState()\n const router = useRouter()\n const slug = useListingSlug()\n\n const data = React.useMemo(() => {\n if (!isLoading && aggData) {\n const result = aggregates\n ?.sort((a, b) => a.order - b.order)\n .map((currentAggregate) => {\n const type = currentAggregate.aggregationType.toString()\n const term = currentAggregate.aggregationDefinition.split(':')[0]\n const filter = currentAggregate.filterDefinition\n const current: AggregateType = aggData[type].find(\n (agg: AggregateType) => agg.name === term\n )\n\n const generatedFilters = generateFilters({\n rawFilters: current,\n filter,\n router,\n type,\n slug: (config as any).listing.slugAliases?.[slug] ?? slug,\n pageType,\n })\n\n const selectedCount = generatedFilters?.reduce((count, res) => {\n if (res.selected) count++\n return count\n }, 0)\n\n const attributeResult = ({\n name: currentAggregate.label,\n component: currentAggregate.component,\n items: generatedFilters,\n selectedCount,\n raw: current,\n clearAll: () =>\n router.push({\n pathname: router.pathname,\n query: {\n ...router.query,\n filter: filterByType(router.query.filter, filter),\n },\n }),\n type: type,\n } as unknown) as ListingAggregateType\n\n return attributeResult\n })\n\n return result\n }\n return undefined\n }, [aggData, router])\n\n const clearAllFilters = () => {\n const query = { ...router.query }\n delete query.filter\n\n router.push({\n pathname: router.pathname,\n query,\n })\n }\n\n const selectedFilters = React.useMemo(() => {\n return getSelectedFilters(router, slug, data as any, config) as any\n }, [router, data])\n\n return (\n <ListingFiltersStateContext.Provider\n value={{ data, clearAllFilters, selectedFilters, isLoading, isFetching }}\n >\n {children}\n </ListingFiltersStateContext.Provider>\n )\n}\n\nexport function useListingFilters() {\n const context = React.useContext(ListingFiltersStateContext)\n if (context === undefined) {\n throw new Error(\n 'useListingFilters must be used within a ListingFiltersProvider'\n )\n }\n return context\n}\n\nfunction generateFilters({\n rawFilters,\n type,\n filter,\n slug,\n router,\n pageType,\n}: {\n rawFilters: AggregateType\n type: string\n filter: string\n slug: string\n router: NextRouter\n pageType: ListingTypesEnum\n}) {\n return rawFilters.results\n ?.filter((res) => res.count > 0)\n ?.map((currentTerm) => {\n const filterKey = mapKey(currentTerm, type)\n\n const selected = isFilterSelected(\n router,\n filter,\n filterKey,\n filtersOperatorsMap[type]\n )\n\n return {\n data: currentTerm,\n selected,\n meta: currentTerm.meta,\n onClick: () => {\n router.push(\n createAggregateQuery(\n pageType,\n slug,\n {\n aggType: filter,\n aggKey: filterKey,\n aggOperator: filtersOperatorsMap[type],\n },\n Boolean(selected),\n router\n )\n )\n },\n }\n })\n}\n\nconst isFilterSelected = (\n router: NextRouter,\n filter: string,\n filterKey: any,\n type: string\n) => {\n const areFiltersArray = Array.isArray(router.query?.filter)\n\n return areFiltersArray\n ? !!(router.query.filter as string[])\n ?.find((sel: string) => sel.includes(`${filter};${type}`))\n ?.includes(filterKey)\n : router.query.filter?.includes(`${filter};${type}`) &&\n router.query.filter?.includes(filterKey)\n}\n\nexport const filtersOperatorsMap = {\n ranges: 'range',\n stats: 'range',\n terms: 'in',\n}\n\nfunction mapKey(r: any, type: any) {\n const keysMap = {\n terms: `\"${r.key}\"`,\n ranges: `${r.from},${r.to}`,\n }\n if (!keysMap[type]) return r.key\n\n return keysMap[type]\n}\n\nfunction manageFilter(pair: AggPair, query: any, remove: boolean) {\n const stripped = stripQueryProps(query, ['page']) // reset pagination on filter\n\n const result = generateQueryString(stripped, pair, remove)\n return result\n}\n\nconst generateQueryString = (\n query: FiltersQuery,\n pair: AggPair,\n remove?: boolean\n) => {\n const activeFilters = {}\n\n const extractFilter = ({\n str = '',\n aggPair,\n }: {\n str: string\n aggPair?: AggPair\n }) => {\n const [type, operator, val] = str.split(';')\n\n const filterType = aggPair?.aggType ?? type\n const filterVal = aggPair?.aggKey ?? val\n const filterOperator = aggPair?.aggOperator ?? operator\n\n if (activeFilters[filterType]) {\n activeFilters[filterType] += `,${filterVal}`\n } else {\n activeFilters[\n filterType\n ] = `filter=${filterType};${filterOperator};${filterVal}`\n }\n }\n\n Object.keys(query).forEach((el) => {\n if (Array.isArray(query[el])) {\n query[el].forEach((filter: string) => {\n extractFilter({ str: filter })\n })\n } else {\n if (el === 'sort') {\n activeFilters[el] = `sort=${query[el]}`\n } else {\n extractFilter({ str: query[el] })\n }\n }\n })\n\n if (remove) {\n const applied = activeFilters[pair.aggType].split(';')[2].split(',')\n\n const remaining = applied.filter((x: string) => !pair.aggKey.includes(x))\n\n if (remaining.length === 0) {\n activeFilters[pair.aggType] = ``\n } else {\n activeFilters[pair.aggType] = `filter=${pair.aggType};${\n pair.aggOperator\n };${remaining.join(',')}`\n }\n } else {\n extractFilter({ str: '', aggPair: pair })\n }\n\n if (Object.keys(activeFilters).length === 0) return ``\n\n return Object.keys(activeFilters).reduce((res, val, idx) => {\n res += `${idx > 0 ? '&' : ''}${activeFilters[val]}`\n return res\n }, ``)\n}\n\nfunction createAggregateQuery(\n type: ListingTypesEnum,\n slug: string,\n aggPair: AggPair,\n remove: boolean,\n router: NextRouter\n) {\n if (type === ListingTypesEnum.Search) {\n return router.query.q\n ? `/search?q=${router.query.q}&${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n : `/${slug}/c?search=${router.query.search}&${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n }\n\n if (router.query.cat) {\n return `/${router.query.slug}/${router.query.cat}/${\n typeToSuffix[type]\n }?${manageFilter(aggPair, router.query, remove)}`\n }\n\n return `/${slug}/${typeToSuffix[type]}?${manageFilter(\n aggPair,\n router.query,\n remove\n )}`\n}\n\nfunction filterByType(\n filters: string | string[] | undefined,\n filterName: string\n) {\n if (!filters) return\n\n if (typeof filters === 'string') {\n if (filters.includes(filterName)) return\n\n return filters\n }\n\n return filters.filter((filter) => !filter.includes(filterName))\n}\n"],"file":"useListingFilters.js"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../src/ui/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAd","sourcesContent":["export * from './useToasts'\n"],"file":"index.js"}
|
@@ -0,0 +1,74 @@
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
2
|
+
import React from 'react';
|
3
|
+
import { useRouter } from 'next/router';
|
4
|
+
import { v4 as uuid } from 'uuid';
|
5
|
+
import { getMainColor, getIcon, getBackground, defaultStyle, getTextColor } from '../toastUtils';
|
6
|
+
var ToastContext = /*#__PURE__*/React.createContext(undefined);
|
7
|
+
export var ToastProvider = (_ref) => {
|
8
|
+
var {
|
9
|
+
children,
|
10
|
+
duration = 5000,
|
11
|
+
style
|
12
|
+
} = _ref;
|
13
|
+
var [toasts, setToasts] = React.useState([]);
|
14
|
+
|
15
|
+
var addToast = (content, options) => {
|
16
|
+
setToasts([{
|
17
|
+
content,
|
18
|
+
options,
|
19
|
+
id: uuid()
|
20
|
+
}, ...toasts]);
|
21
|
+
};
|
22
|
+
|
23
|
+
var deleteToasts = React.useCallback(() => {
|
24
|
+
setToasts([]);
|
25
|
+
}, []);
|
26
|
+
var values = {
|
27
|
+
addToast
|
28
|
+
};
|
29
|
+
var router = useRouter();
|
30
|
+
React.useEffect(() => {
|
31
|
+
deleteToasts();
|
32
|
+
}, [deleteToasts, router.asPath]);
|
33
|
+
return /*#__PURE__*/React.createElement(ToastContext.Provider, {
|
34
|
+
value: values
|
35
|
+
}, children, /*#__PURE__*/React.createElement("style", {
|
36
|
+
dangerouslySetInnerHTML: {
|
37
|
+
__html: "\n .Toasts--container {\n position: fixed;\n right: 0;\n transform: translateX(100%);\n top: 0;\n width: 25rem;\n display: flex;\n align-items: stretch;\n flex-direction: column;\n z-index: 99999;\n gap: 0.5rem;\n font-size: 0.8rem;\n padding: 1rem;\n }\n .Toast--left {\n width: 2rem;\n border-radius: 0.3rem 0 0 0.3rem;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n @keyframes showToast {\n 0% { opacity: 0; transform: translateX(0%);}\n 10% {opacity: 1; transform: translateX(-105%)}\n 90% {opacity: 1; transform: translateX(-105%)}\n 100% {opacity: 0; transform: translateX(0%);}\n }\n "
|
38
|
+
}
|
39
|
+
}), /*#__PURE__*/React.createElement("div", {
|
40
|
+
className: "Toasts--container"
|
41
|
+
}, toasts.map(toast => {
|
42
|
+
var _toast$options, _toast$options2, _toast$options3, _toast$options4, _toast$options5;
|
43
|
+
|
44
|
+
return /*#__PURE__*/React.createElement("div", {
|
45
|
+
key: toast.id,
|
46
|
+
className: "Toast",
|
47
|
+
style: _extends({}, defaultStyle(duration))
|
48
|
+
}, /*#__PURE__*/React.createElement("div", {
|
49
|
+
className: "Toast--left",
|
50
|
+
style: {
|
51
|
+
color: getBackground((_toast$options = toast.options) == null ? void 0 : _toast$options.appearance),
|
52
|
+
background: getMainColor((_toast$options2 = toast.options) == null ? void 0 : _toast$options2.appearance)
|
53
|
+
}
|
54
|
+
}, getIcon((_toast$options3 = toast.options) == null ? void 0 : _toast$options3.appearance)), /*#__PURE__*/React.createElement("div", {
|
55
|
+
className: "Toast--content",
|
56
|
+
style: _extends({
|
57
|
+
padding: '8px 12px',
|
58
|
+
width: '100%',
|
59
|
+
background: getBackground((_toast$options4 = toast.options) == null ? void 0 : _toast$options4.appearance),
|
60
|
+
color: getTextColor((_toast$options5 = toast.options) == null ? void 0 : _toast$options5.appearance)
|
61
|
+
}, style)
|
62
|
+
}, toast.content));
|
63
|
+
})));
|
64
|
+
};
|
65
|
+
export function useToasts() {
|
66
|
+
var context = React.useContext(ToastContext);
|
67
|
+
|
68
|
+
if (context === undefined) {
|
69
|
+
throw new Error('useToasts must be used within ToastProvider');
|
70
|
+
}
|
71
|
+
|
72
|
+
return context;
|
73
|
+
}
|
74
|
+
//# sourceMappingURL=useToasts.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../src/ui/hooks/useToasts.tsx"],"names":["React","useRouter","v4","uuid","getMainColor","getIcon","getBackground","defaultStyle","getTextColor","ToastContext","createContext","undefined","ToastProvider","children","duration","style","toasts","setToasts","useState","addToast","content","options","id","deleteToasts","useCallback","values","router","useEffect","asPath","__html","map","toast","color","appearance","background","padding","width","useToasts","context","useContext","Error"],"mappings":"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","sourcesContent":["import React from 'react'\nimport { useRouter } from 'next/router'\nimport { v4 as uuid } from 'uuid'\nimport {\n getMainColor,\n getIcon,\n getBackground,\n defaultStyle,\n getTextColor,\n} from '../toastUtils'\n\nexport interface ToastOptions {\n appearance?: 'error' | 'info' | 'success' | 'warning'\n autoDismiss?: boolean\n}\n\nexport interface Toast {\n content: string\n options?: ToastOptions\n id: string\n}\n\ntype ToastValues = {\n addToast: (content: string, options?: ToastOptions) => void\n}\n\nconst ToastContext = React.createContext<ToastValues | undefined>(undefined)\n\nexport const ToastProvider = ({\n children,\n duration = 5000,\n style,\n}: {\n children: React.ReactNode\n duration?: number\n style?: object\n}) => {\n const [toasts, setToasts] = React.useState<Toast[]>([])\n\n const addToast = (content: string, options?: ToastOptions) => {\n setToasts([{ content, options, id: uuid() }, ...toasts])\n }\n\n const deleteToasts = React.useCallback(() => {\n setToasts([])\n }, [])\n\n const values = {\n addToast,\n }\n\n const router = useRouter()\n\n React.useEffect(() => {\n deleteToasts()\n }, [deleteToasts, router.asPath])\n\n return (\n <ToastContext.Provider value={values}>\n {children}\n <style\n dangerouslySetInnerHTML={{\n __html: `\n .Toasts--container {\n position: fixed;\n right: 0;\n transform: translateX(100%);\n top: 0;\n width: 25rem;\n display: flex;\n align-items: stretch;\n flex-direction: column;\n z-index: 99999;\n gap: 0.5rem;\n font-size: 0.8rem;\n padding: 1rem;\n }\n .Toast--left {\n width: 2rem;\n border-radius: 0.3rem 0 0 0.3rem;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n @keyframes showToast {\n 0% { opacity: 0; transform: translateX(0%);}\n 10% {opacity: 1; transform: translateX(-105%)}\n 90% {opacity: 1; transform: translateX(-105%)}\n 100% {opacity: 0; transform: translateX(0%);}\n }\n `,\n }}\n />\n <div className=\"Toasts--container\">\n {toasts.map((toast) => {\n return (\n <div\n key={toast.id}\n className=\"Toast\"\n style={{\n ...defaultStyle(duration),\n }}\n >\n <div\n className=\"Toast--left\"\n style={{\n color: getBackground(toast.options?.appearance),\n background: getMainColor(toast.options?.appearance),\n }}\n >\n {getIcon(toast.options?.appearance)}\n </div>\n <div\n className=\"Toast--content\"\n style={{\n padding: '8px 12px',\n width: '100%',\n background: getBackground(toast.options?.appearance),\n color: getTextColor(toast.options?.appearance),\n ...style,\n }}\n >\n {toast.content}\n </div>\n </div>\n )\n })}\n </div>\n </ToastContext.Provider>\n )\n}\n\nexport function useToasts() {\n const context = React.useContext(ToastContext)\n\n if (context === undefined) {\n throw new Error('useToasts must be used within ToastProvider')\n }\n\n return context\n}\n"],"file":"useToasts.js"}
|
package/dist/esm/ui/index.js
CHANGED
package/dist/esm/ui/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAd","sourcesContent":["export * from './components'"],"file":"index.js"}
|
1
|
+
{"version":3,"sources":["../../../src/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAd;AACA,cAAc,SAAd","sourcesContent":["export * from './components'\nexport * from './hooks'\n"],"file":"index.js"}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
export var ErrorIcon = () => {
|
3
|
+
return /*#__PURE__*/React.createElement("svg", {
|
4
|
+
"aria-hidden": "true",
|
5
|
+
height: "16",
|
6
|
+
width: "12",
|
7
|
+
viewBox: "0 0 12 16",
|
8
|
+
style: {
|
9
|
+
fill: 'currentcolor'
|
10
|
+
}
|
11
|
+
}, /*#__PURE__*/React.createElement("path", {
|
12
|
+
"fill-rule": "evenodd",
|
13
|
+
d: "M5.05.01c.81 2.17.41 3.38-.52 4.31C3.55 5.37 1.98 6.15.9 7.68c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.01 8.68 2.15 5.05.02L5.03 0l.02.01z"
|
14
|
+
}));
|
15
|
+
};
|
16
|
+
//# sourceMappingURL=ErrorIcon.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../src/ui/toastUtils/ErrorIcon.tsx"],"names":["React","ErrorIcon","fill"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAO,IAAMC,SAAS,GAAG,MAAM;AAC7B,sBACE;AACE,mBAAY,MADd;AAEE,IAAA,MAAM,EAAC,IAFT;AAGE,IAAA,KAAK,EAAC,IAHR;AAIE,IAAA,OAAO,EAAC,WAJV;AAKE,IAAA,KAAK,EAAE;AACLC,MAAAA,IAAI,EAAE;AADD;AALT,kBASE;AACE,iBAAU,SADZ;AAEE,IAAA,CAAC,EAAC;AAFJ,IATF,CADF;AAgBD,CAjBM","sourcesContent":["import React from 'react'\nexport const ErrorIcon = () => {\n return (\n <svg\n aria-hidden=\"true\"\n height=\"16\"\n width=\"12\"\n viewBox=\"0 0 12 16\"\n style={{\n fill: 'currentcolor',\n }}\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M5.05.01c.81 2.17.41 3.38-.52 4.31C3.55 5.37 1.98 6.15.9 7.68c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.01 8.68 2.15 5.05.02L5.03 0l.02.01z\"\n ></path>\n </svg>\n )\n}\n"],"file":"ErrorIcon.js"}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
export var InfoIcon = () => {
|
3
|
+
return /*#__PURE__*/React.createElement("svg", {
|
4
|
+
"aria-hidden": "true",
|
5
|
+
height: "16",
|
6
|
+
width: "14",
|
7
|
+
viewBox: "0 0 14 16",
|
8
|
+
style: {
|
9
|
+
fill: 'currentcolor'
|
10
|
+
}
|
11
|
+
}, /*#__PURE__*/React.createElement("path", {
|
12
|
+
"fill-rule": "evenodd",
|
13
|
+
d: "M6.3 5.71a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 8.01c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V8v.01zM7 2.32C3.86 2.32 1.3 4.86 1.3 8c0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 1c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"
|
14
|
+
}));
|
15
|
+
};
|
16
|
+
//# sourceMappingURL=InfoIcon.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../src/ui/toastUtils/InfoIcon.tsx"],"names":["React","InfoIcon","fill"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAEA,OAAO,IAAMC,QAAQ,GAAG,MAAM;AAC5B,sBACE;AACE,mBAAY,MADd;AAEE,IAAA,MAAM,EAAC,IAFT;AAGE,IAAA,KAAK,EAAC,IAHR;AAIE,IAAA,OAAO,EAAC,WAJV;AAKE,IAAA,KAAK,EAAE;AAAEC,MAAAA,IAAI,EAAE;AAAR;AALT,kBAOE;AACE,iBAAU,SADZ;AAEE,IAAA,CAAC,EAAC;AAFJ,IAPF,CADF;AAcD,CAfM","sourcesContent":["import React from 'react'\n\nexport const InfoIcon = () => {\n return (\n <svg\n aria-hidden=\"true\"\n height=\"16\"\n width=\"14\"\n viewBox=\"0 0 14 16\"\n style={{ fill: 'currentcolor' }}\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M6.3 5.71a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 8.01c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V8v.01zM7 2.32C3.86 2.32 1.3 4.86 1.3 8c0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 1c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z\"\n ></path>\n </svg>\n )\n}\n"],"file":"InfoIcon.js"}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
export var SuccessIcon = () => {
|
3
|
+
return /*#__PURE__*/React.createElement("svg", {
|
4
|
+
"aria-hidden": "true",
|
5
|
+
height: "16",
|
6
|
+
width: "12",
|
7
|
+
viewBox: "0 0 12 16",
|
8
|
+
style: {
|
9
|
+
fill: 'currentcolor'
|
10
|
+
}
|
11
|
+
}, /*#__PURE__*/React.createElement("path", {
|
12
|
+
"fill-rule": "evenodd",
|
13
|
+
d: "M12 5.5l-8 8-4-4L1.5 8 4 10.5 10.5 4 12 5.5z"
|
14
|
+
}));
|
15
|
+
};
|
16
|
+
//# sourceMappingURL=SuccessIcon.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../src/ui/toastUtils/SuccessIcon.tsx"],"names":["React","SuccessIcon","fill"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAEA,OAAO,IAAMC,WAAW,GAAG,MAAM;AAC/B,sBACE;AACE,mBAAY,MADd;AAEE,IAAA,MAAM,EAAC,IAFT;AAGE,IAAA,KAAK,EAAC,IAHR;AAIE,IAAA,OAAO,EAAC,WAJV;AAKE,IAAA,KAAK,EAAE;AAAEC,MAAAA,IAAI,EAAE;AAAR;AALT,kBAOE;AACE,iBAAU,SADZ;AAEE,IAAA,CAAC,EAAC;AAFJ,IAPF,CADF;AAcD,CAfM","sourcesContent":["import React from 'react'\n\nexport const SuccessIcon = () => {\n return (\n <svg\n aria-hidden=\"true\"\n height=\"16\"\n width=\"12\"\n viewBox=\"0 0 12 16\"\n style={{ fill: 'currentcolor' }}\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M12 5.5l-8 8-4-4L1.5 8 4 10.5 10.5 4 12 5.5z\"\n ></path>\n </svg>\n )\n}\n"],"file":"SuccessIcon.js"}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
export var WarningIcon = () => {
|
3
|
+
return /*#__PURE__*/React.createElement("svg", {
|
4
|
+
"aria-hidden": "true",
|
5
|
+
height: "16",
|
6
|
+
width: "16",
|
7
|
+
viewBox: "0 0 16 16",
|
8
|
+
style: {
|
9
|
+
fill: 'currentcolor'
|
10
|
+
}
|
11
|
+
}, /*#__PURE__*/React.createElement("path", {
|
12
|
+
"fill-rule": "evenodd",
|
13
|
+
d: "M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"
|
14
|
+
}));
|
15
|
+
};
|
16
|
+
//# sourceMappingURL=WarningIcon.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../src/ui/toastUtils/WarningIcon.tsx"],"names":["React","WarningIcon","fill"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAEA,OAAO,IAAMC,WAAW,GAAG,MAAM;AAC/B,sBACE;AACE,mBAAY,MADd;AAEE,IAAA,MAAM,EAAC,IAFT;AAGE,IAAA,KAAK,EAAC,IAHR;AAIE,IAAA,OAAO,EAAC,WAJV;AAKE,IAAA,KAAK,EAAE;AAAEC,MAAAA,IAAI,EAAE;AAAR;AALT,kBAOE;AACE,iBAAU,SADZ;AAEE,IAAA,CAAC,EAAC;AAFJ,IAPF,CADF;AAcD,CAfM","sourcesContent":["import React from 'react'\n\nexport const WarningIcon = () => {\n return (\n <svg\n aria-hidden=\"true\"\n height=\"16\"\n width=\"16\"\n viewBox=\"0 0 16 16\"\n style={{ fill: 'currentcolor' }}\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z\"\n ></path>\n </svg>\n )\n}\n"],"file":"WarningIcon.js"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../src/ui/toastUtils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAd;AACA,cAAc,eAAd;AACA,cAAc,SAAd;AACA,cAAc,YAAd;AACA,cAAc,eAAd","sourcesContent":["export * from './ErrorIcon'\nexport * from './SuccessIcon'\nexport * from './utils'\nexport * from './InfoIcon'\nexport * from './WarningIcon'\n"],"file":"index.js"}
|
@@ -0,0 +1,82 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { ErrorIcon, SuccessIcon, InfoIcon, WarningIcon } from './index';
|
3
|
+
export var getMainColor = mode => {
|
4
|
+
switch (mode) {
|
5
|
+
case 'error':
|
6
|
+
return "#FF5630";
|
7
|
+
|
8
|
+
case 'success':
|
9
|
+
return "#36B37E";
|
10
|
+
|
11
|
+
case 'info':
|
12
|
+
return "#2684FF";
|
13
|
+
|
14
|
+
case 'warning':
|
15
|
+
return "#FFAB00";
|
16
|
+
|
17
|
+
default:
|
18
|
+
return "#2684FF";
|
19
|
+
}
|
20
|
+
};
|
21
|
+
export var getTextColor = mode => {
|
22
|
+
switch (mode) {
|
23
|
+
case 'error':
|
24
|
+
return "#BF2600";
|
25
|
+
|
26
|
+
case 'success':
|
27
|
+
return "#006644";
|
28
|
+
|
29
|
+
case 'info':
|
30
|
+
return "#505F79";
|
31
|
+
|
32
|
+
case 'warning':
|
33
|
+
return "#FF8B00";
|
34
|
+
|
35
|
+
default:
|
36
|
+
return "#505F79";
|
37
|
+
}
|
38
|
+
};
|
39
|
+
export var getIcon = mode => {
|
40
|
+
switch (mode) {
|
41
|
+
case 'error':
|
42
|
+
return /*#__PURE__*/React.createElement(ErrorIcon, null);
|
43
|
+
|
44
|
+
case 'success':
|
45
|
+
return /*#__PURE__*/React.createElement(SuccessIcon, null);
|
46
|
+
|
47
|
+
case 'info':
|
48
|
+
return /*#__PURE__*/React.createElement(InfoIcon, null);
|
49
|
+
|
50
|
+
case 'warning':
|
51
|
+
return /*#__PURE__*/React.createElement(WarningIcon, null);
|
52
|
+
|
53
|
+
default:
|
54
|
+
return /*#__PURE__*/React.createElement(InfoIcon, null);
|
55
|
+
}
|
56
|
+
};
|
57
|
+
export var getBackground = mode => {
|
58
|
+
switch (mode) {
|
59
|
+
case 'error':
|
60
|
+
return "#FFEBE6";
|
61
|
+
|
62
|
+
case 'success':
|
63
|
+
return "#E3FCEF";
|
64
|
+
|
65
|
+
case 'info':
|
66
|
+
return "#fff";
|
67
|
+
|
68
|
+
case 'warning':
|
69
|
+
return "#FFFAE6";
|
70
|
+
|
71
|
+
default:
|
72
|
+
return "#fff";
|
73
|
+
}
|
74
|
+
};
|
75
|
+
export var defaultStyle = duration => ({
|
76
|
+
height: 'fit-content',
|
77
|
+
borderRadius: '0.3rem',
|
78
|
+
display: 'flex',
|
79
|
+
opacity: '0',
|
80
|
+
animation: duration + "ms cubic-bezier(0.4, 0, 0.2, 1) 0s 1 normal forwards running showToast"
|
81
|
+
});
|
82
|
+
//# sourceMappingURL=utils.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../src/ui/toastUtils/utils.tsx"],"names":["React","ErrorIcon","SuccessIcon","InfoIcon","WarningIcon","getMainColor","mode","getTextColor","getIcon","getBackground","defaultStyle","duration","height","borderRadius","display","opacity","animation"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,SAAT,EAAoBC,WAApB,EAAiCC,QAAjC,EAA2CC,WAA3C,QAA8D,SAA9D;AAEA,OAAO,IAAMC,YAAY,GAAIC,IAAD,IAAmB;AAC7C,UAAQA,IAAR;AACE,SAAK,OAAL;AACE;;AACF,SAAK,SAAL;AACE;;AACF,SAAK,MAAL;AACE;;AACF,SAAK,SAAL;AACE;;AACF;AACE;AAVJ;AAYD,CAbM;AAcP,OAAO,IAAMC,YAAY,GAAID,IAAD,IAAmB;AAC7C,UAAQA,IAAR;AACE,SAAK,OAAL;AACE;;AACF,SAAK,SAAL;AACE;;AACF,SAAK,MAAL;AACE;;AACF,SAAK,SAAL;AACE;;AACF;AACE;AAVJ;AAYD,CAbM;AAeP,OAAO,IAAME,OAAO,GAAIF,IAAD,IAAmB;AACxC,UAAQA,IAAR;AACE,SAAK,OAAL;AACE,0BAAO,oBAAC,SAAD,OAAP;;AACF,SAAK,SAAL;AACE,0BAAO,oBAAC,WAAD,OAAP;;AACF,SAAK,MAAL;AACE,0BAAO,oBAAC,QAAD,OAAP;;AACF,SAAK,SAAL;AACE,0BAAO,oBAAC,WAAD,OAAP;;AACF;AACE,0BAAO,oBAAC,QAAD,OAAP;AAVJ;AAYD,CAbM;AAeP,OAAO,IAAMG,aAAa,GAAIH,IAAD,IAAmB;AAC9C,UAAQA,IAAR;AACE,SAAK,OAAL;AACE;;AACF,SAAK,SAAL;AACE;;AACF,SAAK,MAAL;AACE;;AACF,SAAK,SAAL;AACE;;AACF;AACE;AAVJ;AAYD,CAbM;AAeP,OAAO,IAAMI,YAAY,GAAIC,QAAD,KAAuB;AACjDC,EAAAA,MAAM,EAAE,aADyC;AAEjDC,EAAAA,YAAY,EAAE,QAFmC;AAGjDC,EAAAA,OAAO,EAAE,MAHwC;AAIjDC,EAAAA,OAAO,EAAE,GAJwC;AAKjDC,EAAAA,SAAS,EAAKL,QAAL;AALwC,CAAvB,CAArB","sourcesContent":["import React from 'react'\nimport { ErrorIcon, SuccessIcon, InfoIcon, WarningIcon } from './index'\n\nexport const getMainColor = (mode?: string) => {\n switch (mode) {\n case 'error':\n return `#FF5630`\n case 'success':\n return `#36B37E`\n case 'info':\n return `#2684FF`\n case 'warning':\n return `#FFAB00`\n default:\n return `#2684FF`\n }\n}\nexport const getTextColor = (mode?: string) => {\n switch (mode) {\n case 'error':\n return `#BF2600`\n case 'success':\n return `#006644`\n case 'info':\n return `#505F79`\n case 'warning':\n return `#FF8B00`\n default:\n return `#505F79`\n }\n}\n\nexport const getIcon = (mode?: string) => {\n switch (mode) {\n case 'error':\n return <ErrorIcon />\n case 'success':\n return <SuccessIcon />\n case 'info':\n return <InfoIcon />\n case 'warning':\n return <WarningIcon />\n default:\n return <InfoIcon />\n }\n}\n\nexport const getBackground = (mode?: string) => {\n switch (mode) {\n case 'error':\n return `#FFEBE6`\n case 'success':\n return `#E3FCEF`\n case 'info':\n return `#fff`\n case 'warning':\n return `#FFFAE6`\n default:\n return `#fff`\n }\n}\n\nexport const defaultStyle = (duration: number) => ({\n height: 'fit-content',\n borderRadius: '0.3rem',\n display: 'flex',\n opacity: '0',\n animation: `${duration}ms cubic-bezier(0.4, 0, 0.2, 1) 0s 1 normal forwards running showToast`,\n})\n"],"file":"utils.js"}
|
@@ -0,0 +1 @@
|
|
1
|
+
export * from './useToasts';
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
export interface ToastOptions {
|
3
|
+
appearance?: 'error' | 'info' | 'success' | 'warning';
|
4
|
+
autoDismiss?: boolean;
|
5
|
+
}
|
6
|
+
export interface Toast {
|
7
|
+
content: string;
|
8
|
+
options?: ToastOptions;
|
9
|
+
id: string;
|
10
|
+
}
|
11
|
+
declare type ToastValues = {
|
12
|
+
addToast: (content: string, options?: ToastOptions) => void;
|
13
|
+
};
|
14
|
+
export declare const ToastProvider: ({ children, duration, style, }: {
|
15
|
+
children: React.ReactNode;
|
16
|
+
duration?: number | undefined;
|
17
|
+
style?: object | undefined;
|
18
|
+
}) => JSX.Element;
|
19
|
+
export declare function useToasts(): ToastValues;
|
20
|
+
export {};
|
package/dist/types/ui/index.d.ts
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
export declare const ErrorIcon: () => JSX.Element;
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare const InfoIcon: () => JSX.Element;
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare const SuccessIcon: () => JSX.Element;
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare const WarningIcon: () => JSX.Element;
|
@@ -0,0 +1,11 @@
|
|
1
|
+
export declare const getMainColor: (mode?: string | undefined) => "#FF5630" | "#36B37E" | "#2684FF" | "#FFAB00";
|
2
|
+
export declare const getTextColor: (mode?: string | undefined) => "#BF2600" | "#006644" | "#505F79" | "#FF8B00";
|
3
|
+
export declare const getIcon: (mode?: string | undefined) => JSX.Element;
|
4
|
+
export declare const getBackground: (mode?: string | undefined) => "#fff" | "#FFEBE6" | "#E3FCEF" | "#FFFAE6";
|
5
|
+
export declare const defaultStyle: (duration: number) => {
|
6
|
+
height: string;
|
7
|
+
borderRadius: string;
|
8
|
+
display: string;
|
9
|
+
opacity: string;
|
10
|
+
animation: string;
|
11
|
+
};
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@sentecacommerce-theme/lib",
|
3
3
|
"sideEffects": false,
|
4
|
-
"version": "0.12.
|
4
|
+
"version": "0.12.78",
|
5
5
|
"main": "dist/cjs/index.js",
|
6
6
|
"module": "dist/esm/index.js",
|
7
7
|
"types": "dist/types/index.d.ts",
|
@@ -28,9 +28,9 @@
|
|
28
28
|
"build:types": "tsc --emitDeclarationOnly --declaration --declarationDir dist/types",
|
29
29
|
"dev": "yarn build:esm --watch"
|
30
30
|
},
|
31
|
-
"gitHead": "
|
31
|
+
"gitHead": "c4d40dd917bb576634fb34185877057142155b2b",
|
32
32
|
"dependencies": {
|
33
|
-
"@sentecacommerce-theme/base": "^0.12.
|
33
|
+
"@sentecacommerce-theme/base": "^0.12.78",
|
34
34
|
"@sentecacommerce/sdk": "2.0.157",
|
35
35
|
"body-scroll-lock": "^3.1.5",
|
36
36
|
"copy-to-clipboard": "^3.3.1",
|