@payloadcms/ui 3.62.0 → 3.63.0-canary.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useModal","getTranslation","useRouter","formatAdminURL","React","useCallback","toast","useForm","useFormModified","useConfig","useLocale","useRouteTransition","useTranslation","requests","ConfirmationModal","PopupList","DuplicateDocument","id","slug","onDuplicate","redirectAfterDuplicate","singularLabel","router","modified","openModal","locale","setModified","startRouteTransition","config","routes","admin","adminRoute","api","apiRoute","serverURL","getEntityConfig","collectionConfig","collectionSlug","renderModal","setRenderModal","useState","i18n","t","modalSlug","duplicate","post","code","body","JSON","stringify","headers","language","credentials","then","res","doc","errors","message","json","status","success","label","push","path","error","onConfirm","_jsxs","Fragment","_jsx","Button","onClick","confirmLabel","heading"],"sources":["../../../src/elements/DuplicateDocument/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SanitizedCollectionConfig } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport type { DocumentDrawerContextType } from '../DocumentDrawer/Provider.js'\n\nimport { useForm, useFormModified } from '../../forms/Form/context.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { PopupList } from '../Popup/index.js'\n\nexport type Props = {\n readonly id: string\n readonly onDuplicate?: DocumentDrawerContextType['onDuplicate']\n readonly redirectAfterDuplicate?: boolean\n readonly singularLabel: SanitizedCollectionConfig['labels']['singular']\n readonly slug: string\n}\n\nexport const DuplicateDocument: React.FC<Props> = ({\n id,\n slug,\n onDuplicate,\n redirectAfterDuplicate = true,\n singularLabel,\n}) => {\n const router = useRouter()\n const modified = useFormModified()\n const { openModal } = useModal()\n const locale = useLocale()\n const { setModified } = useForm()\n const { startRouteTransition } = useRouteTransition()\n\n const {\n config: {\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug: slug })\n\n const [renderModal, setRenderModal] = React.useState(false)\n const { i18n, t } = useTranslation()\n\n const modalSlug = `duplicate-${id}`\n\n const duplicate = useCallback(async () => {\n setRenderModal(true)\n\n await requests\n .post(\n `${serverURL}${apiRoute}/${slug}/${id}/duplicate${locale?.code ? `?locale=${locale.code}` : ''}`,\n {\n body: JSON.stringify({}),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n credentials: 'include',\n },\n },\n )\n .then(async (res) => {\n const { doc, errors, message } = await res.json()\n\n if (res.status < 400) {\n toast.success(\n message ||\n t('general:successfullyDuplicated', { label: getTranslation(singularLabel, i18n) }),\n )\n\n setModified(false)\n\n if (redirectAfterDuplicate) {\n return startRouteTransition(() =>\n router.push(\n formatAdminURL({\n adminRoute,\n path: `/collections/${slug}/${doc.id}${locale?.code ? `?locale=${locale.code}` : ''}`,\n }),\n ),\n )\n }\n\n if (typeof onDuplicate === 'function') {\n void onDuplicate({ collectionConfig, doc })\n }\n } else {\n toast.error(\n errors?.[0].message ||\n message ||\n t('error:unspecific', { label: getTranslation(singularLabel, i18n) }),\n )\n }\n })\n }, [\n locale,\n serverURL,\n apiRoute,\n slug,\n id,\n i18n,\n t,\n singularLabel,\n onDuplicate,\n redirectAfterDuplicate,\n setModified,\n router,\n adminRoute,\n collectionConfig,\n startRouteTransition,\n ])\n\n const onConfirm = useCallback(async () => {\n setRenderModal(false)\n\n await duplicate()\n }, [duplicate])\n\n return (\n <React.Fragment>\n <PopupList.Button\n id=\"action-duplicate\"\n onClick={() => {\n if (modified) {\n setRenderModal(true)\n return openModal(modalSlug)\n }\n\n return duplicate()\n }}\n >\n {t('general:duplicate')}\n </PopupList.Button>\n {renderModal && (\n <ConfirmationModal\n body={t('general:unsavedChangesDuplicate')}\n confirmLabel={t('general:duplicateWithoutSaving')}\n heading={t('general:unsavedChanges')}\n modalSlug={modalSlug}\n onConfirm={onConfirm}\n />\n )}\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useModal","getTranslation","useRouter","formatAdminURL","qs","React","useCallback","useMemo","toast","useForm","useFormModified","useConfig","useLocale","useRouteTransition","useTranslation","requests","traverseForLocalizedFields","ConfirmationModal","PopupList","SelectLocalesDrawer","DuplicateDocument","id","slug","onDuplicate","redirectAfterDuplicate","selectLocales","singularLabel","router","modified","openModal","code","localeCode","setModified","startRouteTransition","config","localization","routes","admin","adminRoute","api","apiRoute","serverURL","getEntityConfig","collectionConfig","collectionSlug","i18n","t","modalSlug","drawerSlug","isDuplicateByLocaleEnabled","fields","handleDuplicate","args","selectedLocales","hasSelectedLocales","length","queryParams","locale","headers","language","credentials","res","post","stringify","addQueryPrefix","body","JSON","doc","errors","message","json","status","success","label","push","path","error","_error","handleConfirmWithoutSaving","buttonLabel","_jsxs","Fragment","_jsx","Button","onClick","confirmLabel","heading","onConfirm"],"sources":["../../../src/elements/DuplicateDocument/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SanitizedCollectionConfig } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useMemo } from 'react'\nimport { toast } from 'sonner'\n\nimport type { DocumentDrawerContextType } from '../DocumentDrawer/Provider.js'\n\nimport { useForm, useFormModified } from '../../forms/Form/context.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { traverseForLocalizedFields } from '../../utilities/traverseForLocalizedFields.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { PopupList } from '../Popup/index.js'\nimport { SelectLocalesDrawer } from './SelectLocalesDrawer/index.js'\n\nexport type Props = {\n readonly id: number | string\n readonly onDuplicate?: DocumentDrawerContextType['onDuplicate']\n readonly redirectAfterDuplicate?: boolean\n readonly selectLocales?: boolean\n readonly singularLabel: SanitizedCollectionConfig['labels']['singular']\n readonly slug: string\n}\n\nexport const DuplicateDocument: React.FC<Props> = ({\n id,\n slug,\n onDuplicate,\n redirectAfterDuplicate = true,\n selectLocales,\n singularLabel,\n}) => {\n const router = useRouter()\n const modified = useFormModified()\n const { openModal } = useModal()\n const { code: localeCode } = useLocale()\n const { setModified } = useForm()\n const { startRouteTransition } = useRouteTransition()\n\n const {\n config: {\n localization,\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug: slug })\n\n const { i18n, t } = useTranslation()\n\n const modalSlug = `duplicate-${id}`\n const drawerSlug = `duplicate-locales-${id}`\n\n const isDuplicateByLocaleEnabled = useMemo(() => {\n if (selectLocales && collectionConfig) {\n return traverseForLocalizedFields(collectionConfig.fields)\n }\n return false\n }, [collectionConfig, selectLocales])\n\n const handleDuplicate = useCallback(\n async (args?: { selectedLocales?: string[] }) => {\n const { selectedLocales } = args || {}\n const hasSelectedLocales = selectedLocales && selectedLocales.length > 0\n\n const queryParams: Record<string, string | string[]> = {}\n if (localeCode) {\n queryParams.locale = localeCode\n }\n if (hasSelectedLocales) {\n queryParams.selectedLocales = selectedLocales\n }\n\n const headers = {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n credentials: 'include',\n }\n\n try {\n const res = await requests.post(\n `${serverURL}${apiRoute}/${slug}/${id}/duplicate${qs.stringify(queryParams, {\n addQueryPrefix: true,\n })}`,\n {\n body: JSON.stringify({}),\n headers,\n },\n )\n\n const { doc, errors, message } = await res.json()\n\n if (res.status < 400) {\n toast.success(\n message ||\n t('general:successfullyDuplicated', { label: getTranslation(singularLabel, i18n) }),\n )\n\n setModified(false)\n\n if (redirectAfterDuplicate) {\n return startRouteTransition(() =>\n router.push(\n formatAdminURL({\n adminRoute,\n path: `/collections/${slug}/${doc.id}${localeCode ? `?locale=${localeCode}` : ''}`,\n }),\n ),\n )\n }\n\n if (typeof onDuplicate === 'function') {\n void onDuplicate({ collectionConfig, doc })\n }\n } else {\n toast.error(\n errors?.[0].message ||\n message ||\n t('error:unspecific', { label: getTranslation(singularLabel, i18n) }),\n )\n }\n } catch (_error) {\n toast.error(t('error:unspecific', { label: getTranslation(singularLabel, i18n) }))\n }\n },\n [\n adminRoute,\n apiRoute,\n collectionConfig,\n i18n,\n id,\n localeCode,\n onDuplicate,\n redirectAfterDuplicate,\n router,\n serverURL,\n setModified,\n singularLabel,\n slug,\n startRouteTransition,\n t,\n ],\n )\n\n const handleConfirmWithoutSaving = useCallback(async () => {\n if (selectLocales) {\n openModal(drawerSlug)\n } else {\n await handleDuplicate()\n }\n }, [handleDuplicate, drawerSlug, selectLocales, openModal])\n\n const buttonLabel = selectLocales\n ? `${t('general:duplicate')} ${t('localization:selectedLocales')}`\n : t('general:duplicate')\n\n if (!selectLocales || isDuplicateByLocaleEnabled) {\n return (\n <React.Fragment>\n <PopupList.Button\n id={`action-duplicate${isDuplicateByLocaleEnabled ? `-locales` : ''}`}\n onClick={() => {\n if (modified) {\n openModal(modalSlug)\n } else if (selectLocales) {\n openModal(drawerSlug)\n } else {\n void handleDuplicate()\n }\n }}\n >\n {buttonLabel}\n </PopupList.Button>\n <ConfirmationModal\n body={t('general:unsavedChangesDuplicate')}\n confirmLabel={t('general:duplicateWithoutSaving')}\n heading={t('general:unsavedChanges')}\n modalSlug={modalSlug}\n onConfirm={handleConfirmWithoutSaving}\n />\n {selectLocales && localization && (\n <SelectLocalesDrawer\n localization={localization}\n onConfirm={handleDuplicate}\n slug={drawerSlug}\n />\n )}\n </React.Fragment>\n )\n }\n\n return null\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/SortHeader/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAIhD,OAAO,cAAc,CAAA;AAGrB,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;IAC7C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAkCD,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAwChD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/SortHeader/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,cAAc,CAAA;AAGrB,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;IAC7C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAqBD,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA0BhD,CAAA"}
@@ -2,84 +2,59 @@
2
2
 
3
3
  import { c as _c } from "react/compiler-runtime";
4
4
  import { jsx as _jsx } from "react/jsx-runtime";
5
- import React, { useEffect, useRef } from 'react';
6
- import { SortDownIcon, SortUpIcon } from '../../icons/Sort/index.js';
5
+ import React from 'react';
6
+ import { SortDownIcon } from '../../icons/Sort/index.js';
7
7
  import { useListQuery } from '../../providers/ListQuery/index.js';
8
8
  import './index.scss';
9
9
  import { useTranslation } from '../../providers/Translation/index.js';
10
10
  const baseClass = 'sort-header';
11
11
  function useSort() {
12
- const $ = _c(12);
12
+ const $ = _c(7);
13
13
  const {
14
14
  handleSortChange,
15
15
  orderableFieldName,
16
16
  query
17
17
  } = useListQuery();
18
18
  const querySort = Array.isArray(query.sort) ? query.sort[0] : query.sort;
19
- const sort = useRef(querySort === `-${orderableFieldName}` ? "desc" : "asc");
20
- const isActive = querySort === `-${orderableFieldName}` || querySort === orderableFieldName;
19
+ const isActive = querySort === orderableFieldName;
21
20
  let t0;
22
- let t1;
23
- if ($[0] !== isActive || $[1] !== orderableFieldName || $[2] !== querySort) {
21
+ if ($[0] !== handleSortChange || $[1] !== isActive || $[2] !== orderableFieldName) {
24
22
  t0 = () => {
25
- if (!isActive) {
23
+ if (isActive) {
26
24
  return;
27
25
  }
28
- sort.current = querySort === `-${orderableFieldName}` ? "desc" : "asc";
26
+ handleSortChange(orderableFieldName);
29
27
  };
30
- t1 = [orderableFieldName, querySort, isActive];
31
- $[0] = isActive;
32
- $[1] = orderableFieldName;
33
- $[2] = querySort;
28
+ $[0] = handleSortChange;
29
+ $[1] = isActive;
30
+ $[2] = orderableFieldName;
34
31
  $[3] = t0;
35
- $[4] = t1;
36
32
  } else {
37
33
  t0 = $[3];
38
- t1 = $[4];
39
- }
40
- useEffect(t0, t1);
41
- let t2;
42
- if ($[5] !== handleSortChange || $[6] !== isActive || $[7] !== orderableFieldName) {
43
- t2 = () => {
44
- if (isActive) {
45
- handleSortChange(sort.current === "asc" ? `-${orderableFieldName}` : orderableFieldName);
46
- sort.current = sort.current === "asc" ? "desc" : "asc";
47
- return;
48
- }
49
- handleSortChange(sort.current === "asc" ? orderableFieldName : `-${orderableFieldName}`);
50
- };
51
- $[5] = handleSortChange;
52
- $[6] = isActive;
53
- $[7] = orderableFieldName;
54
- $[8] = t2;
55
- } else {
56
- t2 = $[8];
57
34
  }
58
- const handleSortPress = t2;
59
- let t3;
60
- if ($[9] !== handleSortPress || $[10] !== isActive) {
61
- t3 = {
35
+ const handleSortPress = t0;
36
+ let t1;
37
+ if ($[4] !== handleSortPress || $[5] !== isActive) {
38
+ t1 = {
62
39
  handleSortPress,
63
- isActive,
64
- sort
40
+ isActive
65
41
  };
66
- $[9] = handleSortPress;
67
- $[10] = isActive;
68
- $[11] = t3;
42
+ $[4] = handleSortPress;
43
+ $[5] = isActive;
44
+ $[6] = t1;
69
45
  } else {
70
- t3 = $[11];
46
+ t1 = $[6];
71
47
  }
72
- return t3;
48
+ return t1;
73
49
  }
74
50
  export const SortHeader = props => {
75
- const $ = _c(8);
51
+ const $ = _c(7);
76
52
  const {
77
53
  appearance
78
54
  } = props;
79
55
  const {
80
56
  handleSortPress,
81
- isActive,
82
- sort
57
+ isActive
83
58
  } = useSort();
84
59
  const {
85
60
  t
@@ -95,40 +70,30 @@ export const SortHeader = props => {
95
70
  }
96
71
  const t2 = t1.join(" ");
97
72
  let t3;
98
- if ($[2] !== handleSortPress || $[3] !== isActive || $[4] !== sort.current || $[5] !== t || $[6] !== t2) {
73
+ if ($[2] !== handleSortPress || $[3] !== isActive || $[4] !== t || $[5] !== t2) {
99
74
  t3 = _jsx("div", {
100
75
  className: t2,
101
76
  children: _jsx("div", {
102
77
  className: `${baseClass}__buttons`,
103
- children: sort.current === "desc" ? _jsx("button", {
78
+ children: _jsx("button", {
104
79
  "aria-label": t("general:sortByLabelDirection", {
105
80
  direction: t("general:ascending"),
106
81
  label: "Order"
107
82
  }),
108
- className: `${baseClass}__button ${baseClass}__${sort.current} ${isActive ? `${baseClass}--active` : ""}`,
83
+ className: `${baseClass}__button ${isActive ? `${baseClass}--active` : ""}`,
109
84
  onClick: handleSortPress,
110
85
  type: "button",
111
86
  children: _jsx(SortDownIcon, {})
112
- }) : _jsx("button", {
113
- "aria-label": t("general:sortByLabelDirection", {
114
- direction: t("general:descending"),
115
- label: "Order"
116
- }),
117
- className: `${baseClass}__button ${baseClass}__${sort.current} ${isActive ? `${baseClass}--active` : ""}`,
118
- onClick: handleSortPress,
119
- type: "button",
120
- children: _jsx(SortUpIcon, {})
121
87
  })
122
88
  })
123
89
  });
124
90
  $[2] = handleSortPress;
125
91
  $[3] = isActive;
126
- $[4] = sort.current;
127
- $[5] = t;
128
- $[6] = t2;
129
- $[7] = t3;
92
+ $[4] = t;
93
+ $[5] = t2;
94
+ $[6] = t3;
130
95
  } else {
131
- t3 = $[7];
96
+ t3 = $[6];
132
97
  }
133
98
  return t3;
134
99
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","useEffect","useRef","SortDownIcon","SortUpIcon","useListQuery","useTranslation","baseClass","useSort","$","handleSortChange","orderableFieldName","query","querySort","Array","isArray","sort","isActive","t0","t1","current","t2","handleSortPress","t3","SortHeader","props","appearance","t","filter","Boolean","join","_jsx","className","children","direction","label","onClick","type"],"sources":["../../../src/elements/SortHeader/index.tsx"],"sourcesContent":["'use client'\n\nimport React, { useEffect, useRef } from 'react'\n\nimport { SortDownIcon, SortUpIcon } from '../../icons/Sort/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport './index.scss'\nimport { useTranslation } from '../../providers/Translation/index.js'\n\nexport type SortHeaderProps = {\n readonly appearance?: 'condensed' | 'default'\n readonly disable?: boolean\n}\n\nconst baseClass = 'sort-header'\n\nfunction useSort() {\n const { handleSortChange, orderableFieldName, query } = useListQuery()\n const querySort = Array.isArray(query.sort) ? query.sort[0] : query.sort\n const sort = useRef<'asc' | 'desc'>(querySort === `-${orderableFieldName}` ? 'desc' : 'asc')\n const isActive = querySort === `-${orderableFieldName}` || querySort === orderableFieldName\n\n // This is necessary if you initialize the page without sort url param\n // but your preferences are to sort by -_order.\n // Since sort isn't updated, the arrow would incorrectly point upward.\n useEffect(() => {\n if (!isActive) {\n return\n }\n sort.current = querySort === `-${orderableFieldName}` ? 'desc' : 'asc'\n }, [orderableFieldName, querySort, isActive])\n\n const handleSortPress = () => {\n // If it's already sorted by the \"_order\" field, toggle between \"asc\" and \"desc\"\n if (isActive) {\n void handleSortChange(sort.current === 'asc' ? `-${orderableFieldName}` : orderableFieldName)\n sort.current = sort.current === 'asc' ? 'desc' : 'asc'\n return\n }\n // If NOT sorted by the \"_order\" field, sort by that field but do not toggle the current value of \"asc\" or \"desc\".\n void handleSortChange(sort.current === 'asc' ? orderableFieldName : `-${orderableFieldName}`)\n }\n\n return { handleSortPress, isActive, sort }\n}\n\nexport const SortHeader: React.FC<SortHeaderProps> = (props) => {\n const { appearance } = props\n const { handleSortPress, isActive, sort } = useSort()\n const { t } = useTranslation()\n\n return (\n <div\n className={[baseClass, appearance && `${baseClass}--appearance-${appearance}`]\n .filter(Boolean)\n .join(' ')}\n >\n <div className={`${baseClass}__buttons`}>\n {sort.current === 'desc' ? (\n <button\n aria-label={t('general:sortByLabelDirection', {\n direction: t('general:ascending'),\n label: 'Order',\n })}\n className={`${baseClass}__button ${baseClass}__${sort.current} ${isActive ? `${baseClass}--active` : ''}`}\n onClick={handleSortPress}\n type=\"button\"\n >\n <SortDownIcon />\n </button>\n ) : (\n <button\n aria-label={t('general:sortByLabelDirection', {\n direction: t('general:descending'),\n label: 'Order',\n })}\n className={`${baseClass}__button ${baseClass}__${sort.current} ${isActive ? `${baseClass}--active` : ''}`}\n onClick={handleSortPress}\n type=\"button\"\n >\n <SortUpIcon />\n </button>\n )}\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","SortDownIcon","useListQuery","useTranslation","baseClass","useSort","$","handleSortChange","orderableFieldName","query","querySort","Array","isArray","sort","isActive","t0","handleSortPress","t1","SortHeader","props","appearance","t","filter","Boolean","t2","join","t3","_jsx","className","children","direction","label","onClick","type"],"sources":["../../../src/elements/SortHeader/index.tsx"],"sourcesContent":["'use client'\n\nimport React from 'react'\n\nimport { SortDownIcon } from '../../icons/Sort/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport './index.scss'\nimport { useTranslation } from '../../providers/Translation/index.js'\n\nexport type SortHeaderProps = {\n readonly appearance?: 'condensed' | 'default'\n readonly disable?: boolean\n}\n\nconst baseClass = 'sort-header'\n\nfunction useSort() {\n const { handleSortChange, orderableFieldName, query } = useListQuery()\n const querySort = Array.isArray(query.sort) ? query.sort[0] : query.sort\n const isActive = querySort === orderableFieldName\n\n const handleSortPress = () => {\n // If it's already sorted by the \"_order\" field, do nothing\n if (isActive) {\n return\n }\n // If NOT sorted by the \"_order\" field, sort by that field.\n void handleSortChange(orderableFieldName)\n }\n\n return { handleSortPress, isActive }\n}\n\nexport const SortHeader: React.FC<SortHeaderProps> = (props) => {\n const { appearance } = props\n const { handleSortPress, isActive } = useSort()\n const { t } = useTranslation()\n\n return (\n <div\n className={[baseClass, appearance && `${baseClass}--appearance-${appearance}`]\n .filter(Boolean)\n .join(' ')}\n >\n <div className={`${baseClass}__buttons`}>\n <button\n aria-label={t('general:sortByLabelDirection', {\n direction: t('general:ascending'),\n label: 'Order',\n })}\n className={`${baseClass}__button ${isActive ? `${baseClass}--active` : ''}`}\n onClick={handleSortPress}\n type=\"button\"\n >\n <SortDownIcon />\n </button>\n </div>\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAEA,OAAOC,KAAA,MAAW;AAElB,SAASC,YAAY,QAAQ;AAC7B,SAASC,YAAY,QAAQ;AAC7B,OAAO;AACP,SAASC,cAAc,QAAQ;AAO/B,MAAMC,SAAA,GAAY;AAElB,SAAAC,QAAA;EAAA,MAAAC,CAAA,GAAAP,EAAA;EACE;IAAAQ,gBAAA;IAAAC,kBAAA;IAAAC;EAAA,IAAwDP,YAAA;EACxD,MAAAQ,SAAA,GAAkBC,KAAA,CAAAC,OAAA,CAAcH,KAAA,CAAAI,IAAU,IAAIJ,KAAA,CAAAI,IAAA,MAAgBJ,KAAA,CAAAI,IAAU;EACxE,MAAAC,QAAA,GAAiBJ,SAAA,KAAcF,kBAAA;EAAA,IAAAO,EAAA;EAAA,IAAAT,CAAA,QAAAC,gBAAA,IAAAD,CAAA,QAAAQ,QAAA,IAAAR,CAAA,QAAAE,kBAAA;IAEPO,EAAA,GAAAA,CAAA;MAAA,IAElBD,QAAA;QAAA;MAAA;MAICP,gBAAA,CAAiBC,kBAAA;IAAA;IACxBF,CAAA,MAAAC,gBAAA;IAAAD,CAAA,MAAAQ,QAAA;IAAAR,CAAA,MAAAE,kBAAA;IAAAF,CAAA,MAAAS,EAAA;EAAA;IAAAA,EAAA,GAAAT,CAAA;EAAA;EAPA,MAAAU,eAAA,GAAwBD,EAOxB;EAAA,IAAAE,EAAA;EAAA,IAAAX,CAAA,QAAAU,eAAA,IAAAV,CAAA,QAAAQ,QAAA;IAEOG,EAAA;MAAAD,eAAA;MAAAF;IAAA;IAA4BR,CAAA,MAAAU,eAAA;IAAAV,CAAA,MAAAQ,QAAA;IAAAR,CAAA,MAAAW,EAAA;EAAA;IAAAA,EAAA,GAAAX,CAAA;EAAA;EAAA,OAA5BW,EAA4B;AAAA;AAGrC,OAAO,MAAMC,UAAA,GAAwCC,KAAA;EAAA,MAAAb,CAAA,GAAAP,EAAA;EACnD;IAAAqB;EAAA,IAAuBD,KAAA;EACvB;IAAAH,eAAA;IAAAF;EAAA,IAAsCT,OAAA;EACtC;IAAAgB;EAAA,IAAclB,cAAA;EAIa,MAAAY,EAAA,GAAAK,UAAA,IAAc,GAAAhB,SAAA,gBAA4BgB,UAAA,EAAY;EAAA,IAAAH,EAAA;EAAA,IAAAX,CAAA,QAAAS,EAAA;IAAlEE,EAAA,IAAAb,SAAA,EAAYW,EAAsD,EAAAO,MAAA,CAAAC,OACnE;IAAAjB,CAAA,MAAAS,EAAA;IAAAT,CAAA,MAAAW,EAAA;EAAA;IAAAA,EAAA,GAAAX,CAAA;EAAA;EADC,MAAAkB,EAAA,GAAAP,EACD,CAAAQ,IAAA,CACF;EAAA,IAAAC,EAAA;EAAA,IAAApB,CAAA,QAAAU,eAAA,IAAAV,CAAA,QAAAQ,QAAA,IAAAR,CAAA,QAAAe,CAAA,IAAAf,CAAA,QAAAkB,EAAA;IAHVE,EAAA,GAAAC,IAAA,CAAC;MAAAC,SAAA,EACYJ,EAEH;MAAAK,QAAA,EAERF,IAAA,CAAC;QAAAC,SAAA,EAAe,GAAAxB,SAAA,WAAuB;QAAAyB,QAAA,EACrCF,IAAA,CAAC;UAAA,cACaN,CAAA,CAAE;YAAAS,SAAA,EACDT,CAAA,CAAE;YAAAU,KAAA,EACN;UAAA,CACT;UAAAH,SAAA,EACW,GAAAxB,SAAA,YAAwBU,QAAA,GAAW,GAAAV,SAAA,UAAsB,GAAG,IAAI;UAAA4B,OAAA,EAClEhB,eAAA;UAAAiB,IAAA,EACJ;UAAAJ,QAAA,EAELF,IAAA,CAAA1B,YAAA,IAAC;QAAA,C;;;;;;;;;;;SAfPyB,E;CAoBJ","ignoreList":[]}