@payloadcms/ui 3.0.0-beta.43 → 3.0.0-beta.44

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.
Files changed (101) hide show
  1. package/dist/elements/Autosave/index.d.ts.map +1 -1
  2. package/dist/elements/Autosave/index.js +90 -69
  3. package/dist/elements/Autosave/index.js.map +1 -1
  4. package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
  5. package/dist/elements/DeleteDocument/index.js +1 -2
  6. package/dist/elements/DeleteDocument/index.js.map +1 -1
  7. package/dist/elements/DeleteMany/index.d.ts.map +1 -1
  8. package/dist/elements/DeleteMany/index.js +1 -2
  9. package/dist/elements/DeleteMany/index.js.map +1 -1
  10. package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
  11. package/dist/elements/DocumentDrawer/DrawerContent.js +1 -2
  12. package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
  13. package/dist/elements/DocumentDrawer/index.d.ts.map +1 -1
  14. package/dist/elements/DocumentDrawer/index.js +1 -2
  15. package/dist/elements/DocumentDrawer/index.js.map +1 -1
  16. package/dist/elements/Drawer/index.d.ts.map +1 -1
  17. package/dist/elements/Drawer/index.js +1 -3
  18. package/dist/elements/Drawer/index.js.map +1 -1
  19. package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
  20. package/dist/elements/DuplicateDocument/index.js +1 -2
  21. package/dist/elements/DuplicateDocument/index.js.map +1 -1
  22. package/dist/elements/EditMany/index.d.ts.map +1 -1
  23. package/dist/elements/EditMany/index.js +1 -2
  24. package/dist/elements/EditMany/index.js.map +1 -1
  25. package/dist/elements/EditUpload/index.d.ts.map +1 -1
  26. package/dist/elements/EditUpload/index.js +1 -5
  27. package/dist/elements/EditUpload/index.js.map +1 -1
  28. package/dist/elements/GenerateConfirmation/index.d.ts.map +1 -1
  29. package/dist/elements/GenerateConfirmation/index.js +1 -2
  30. package/dist/elements/GenerateConfirmation/index.js.map +1 -1
  31. package/dist/elements/ListControls/index.d.ts.map +1 -1
  32. package/dist/elements/ListControls/index.js +1 -2
  33. package/dist/elements/ListControls/index.js.map +1 -1
  34. package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
  35. package/dist/elements/ListDrawer/DrawerContent.js +1 -2
  36. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  37. package/dist/elements/ListDrawer/index.d.ts.map +1 -1
  38. package/dist/elements/ListDrawer/index.js +1 -2
  39. package/dist/elements/ListDrawer/index.js.map +1 -1
  40. package/dist/elements/Modal/index.d.ts +1 -7
  41. package/dist/elements/Modal/index.d.ts.map +1 -1
  42. package/dist/elements/Modal/index.js +1 -7
  43. package/dist/elements/Modal/index.js.map +1 -1
  44. package/dist/elements/Nav/NavToggler/index.d.ts.map +1 -1
  45. package/dist/elements/Nav/NavToggler/index.js +1 -2
  46. package/dist/elements/Nav/NavToggler/index.js.map +1 -1
  47. package/dist/elements/Nav/context.d.ts.map +1 -1
  48. package/dist/elements/Nav/context.js +1 -2
  49. package/dist/elements/Nav/context.js.map +1 -1
  50. package/dist/elements/Popup/index.d.ts.map +1 -1
  51. package/dist/elements/Popup/index.js +1 -2
  52. package/dist/elements/Popup/index.js.map +1 -1
  53. package/dist/elements/PublishMany/index.d.ts.map +1 -1
  54. package/dist/elements/PublishMany/index.js +1 -2
  55. package/dist/elements/PublishMany/index.js.map +1 -1
  56. package/dist/elements/Status/index.d.ts.map +1 -1
  57. package/dist/elements/Status/index.js +1 -2
  58. package/dist/elements/Status/index.js.map +1 -1
  59. package/dist/elements/StayLoggedIn/index.d.ts.map +1 -1
  60. package/dist/elements/StayLoggedIn/index.js +1 -2
  61. package/dist/elements/StayLoggedIn/index.js.map +1 -1
  62. package/dist/elements/TableColumns/buildColumnState.d.ts.map +1 -1
  63. package/dist/elements/TableColumns/buildColumnState.js +2 -1
  64. package/dist/elements/TableColumns/buildColumnState.js.map +1 -1
  65. package/dist/elements/UnpublishMany/index.d.ts.map +1 -1
  66. package/dist/elements/UnpublishMany/index.js +1 -2
  67. package/dist/elements/UnpublishMany/index.js.map +1 -1
  68. package/dist/elements/WindowInfo/index.d.ts +1 -3
  69. package/dist/elements/WindowInfo/index.d.ts.map +1 -1
  70. package/dist/elements/WindowInfo/index.js +1 -7
  71. package/dist/elements/WindowInfo/index.js.map +1 -1
  72. package/dist/exports/elements.d.ts +1 -6
  73. package/dist/exports/elements.d.ts.map +1 -1
  74. package/dist/exports/elements.js +1 -4
  75. package/dist/exports/elements.js.map +1 -1
  76. package/dist/fields/Blocks/BlocksDrawer/index.d.ts.map +1 -1
  77. package/dist/fields/Blocks/BlocksDrawer/index.js +1 -2
  78. package/dist/fields/Blocks/BlocksDrawer/index.js.map +1 -1
  79. package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
  80. package/dist/fields/Blocks/RowActions.js +1 -2
  81. package/dist/fields/Blocks/RowActions.js.map +1 -1
  82. package/dist/fields/Checkbox/Input.d.ts.map +1 -1
  83. package/dist/fields/Checkbox/Input.js +1 -0
  84. package/dist/fields/Checkbox/Input.js.map +1 -1
  85. package/dist/fields/Tabs/index.d.ts.map +1 -1
  86. package/dist/fields/Tabs/index.js +10 -1
  87. package/dist/fields/Tabs/index.js.map +1 -1
  88. package/dist/hooks/useHotkey.d.ts.map +1 -1
  89. package/dist/hooks/useHotkey.js +1 -2
  90. package/dist/hooks/useHotkey.js.map +1 -1
  91. package/dist/providers/Auth/index.d.ts.map +1 -1
  92. package/dist/providers/Auth/index.js +1 -2
  93. package/dist/providers/Auth/index.js.map +1 -1
  94. package/dist/providers/Root/index.d.ts.map +1 -1
  95. package/dist/providers/Root/index.js +3 -13
  96. package/dist/providers/Root/index.js.map +1 -1
  97. package/dist/utilities/reduceFieldsToValuesWithValidation.d.ts +15 -0
  98. package/dist/utilities/reduceFieldsToValuesWithValidation.d.ts.map +1 -0
  99. package/dist/utilities/reduceFieldsToValuesWithValidation.js +29 -0
  100. package/dist/utilities/reduceFieldsToValuesWithValidation.js.map +1 -0
  101. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/ListDrawer/DrawerContent.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig } from 'payload/types'\nimport type { Where } from 'payload/types'\n\nimport * as facelessUIImport from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useCallback, useEffect, useReducer, useState } from 'react'\n\nimport type { ListDrawerProps } from './types.js'\n\nimport { FieldLabel } from '../../forms/FieldLabel/index.js'\nimport usePayloadAPI from '../../hooks/usePayloadAPI.js'\nimport { X } from '../../icons/X/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useComponentMap } from '../../providers/ComponentMap/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { ListInfoProvider } from '../../providers/ListInfo/index.js'\nimport { ListQueryProvider } from '../../providers/ListQuery/index.js'\nimport { usePreferences } from '../../providers/Preferences/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useDocumentDrawer } from '../DocumentDrawer/index.js'\nimport { LoadingOverlay } from '../Loading/index.js'\nimport { Pill } from '../Pill/index.js'\nimport { ReactSelect } from '../ReactSelect/index.js'\nimport { TableColumnsProvider } from '../TableColumns/index.js'\nimport { ViewDescription } from '../ViewDescription/index.js'\nimport { baseClass } from './index.js'\n\nconst hoistQueryParamsToAnd = (where: Where, queryParams: Where) => {\n if ('and' in where) {\n where.and.push(queryParams)\n } else if ('or' in where) {\n where = {\n and: [where, queryParams],\n }\n } else {\n where = {\n and: [where, queryParams],\n }\n }\n\n return where\n}\n\nexport const ListDrawerContent: React.FC<ListDrawerProps> = ({\n collectionSlugs,\n customHeader,\n drawerSlug,\n filterOptions,\n onSelect,\n selectedCollection,\n}) => {\n const { useModal } = facelessUIImport\n\n const { i18n, t } = useTranslation()\n const { permissions } = useAuth()\n const { setPreference } = usePreferences()\n const { closeModal, isModalOpen } = useModal()\n const [limit, setLimit] = useState<number>()\n const [sort, setSort] = useState<string>(null)\n const [page, setPage] = useState<number>(1)\n const [where, setWhere] = useState<Where>(null)\n const [search, setSearch] = useState<string>('')\n\n const { componentMap } = useComponentMap()\n\n const {\n collections,\n routes: { api },\n serverURL,\n } = useConfig()\n\n const enabledCollectionConfigs = collections.filter(({ slug }) => {\n return collectionSlugs.includes(slug)\n })\n\n const [selectedCollectionConfig, setSelectedCollectionConfig] = useState<ClientCollectionConfig>(\n () => {\n return (\n enabledCollectionConfigs.find(({ slug }) => slug === selectedCollection) ||\n enabledCollectionConfigs?.[0]\n )\n },\n )\n\n const { List } = componentMap.collections?.[selectedCollectionConfig?.slug] || {}\n\n const [selectedOption, setSelectedOption] = useState<{ label: string; value: string }>(() =>\n selectedCollectionConfig\n ? {\n label: getTranslation(selectedCollectionConfig.labels.singular, i18n),\n value: selectedCollectionConfig.slug,\n }\n : undefined,\n )\n\n // const [fields, setFields] = useState<Field[]>(() => formatFields(selectedCollectionConfig))\n\n useEffect(() => {\n // setFields(formatFields(selectedCollectionConfig))\n }, [selectedCollectionConfig])\n\n // allow external control of selected collection, same as the initial state logic above\n useEffect(() => {\n if (selectedCollection) {\n // if passed a selection, find it and check if it's enabled\n const selectedConfig =\n enabledCollectionConfigs.find(({ slug }) => slug === selectedCollection) ||\n enabledCollectionConfigs?.[0]\n setSelectedCollectionConfig(selectedConfig)\n }\n }, [selectedCollection, enabledCollectionConfigs, onSelect, t])\n\n const preferenceKey = `${selectedCollectionConfig.slug}-list`\n\n // this is the 'create new' drawer\n const [DocumentDrawer, DocumentDrawerToggler, { drawerSlug: documentDrawerSlug }] =\n useDocumentDrawer({\n collectionSlug: selectedCollectionConfig.slug,\n })\n\n useEffect(() => {\n if (selectedOption) {\n setSelectedCollectionConfig(\n enabledCollectionConfigs.find(({ slug }) => selectedOption.value === slug),\n )\n }\n }, [selectedOption, enabledCollectionConfigs])\n\n const collectionPermissions = permissions?.collections?.[selectedCollectionConfig?.slug]\n const hasCreatePermission = collectionPermissions?.create?.permission\n\n // If modal is open, get active page of upload gallery\n const isOpen = isModalOpen(drawerSlug)\n const apiURL = isOpen ? `${serverURL}${api}/${selectedCollectionConfig.slug}` : null\n const [cacheBust, dispatchCacheBust] = useReducer((state) => state + 1, 0) // used to force a re-fetch even when apiURL is unchanged\n const [{ data, isError, isLoading: isLoadingList }, { setParams }] = usePayloadAPI(apiURL, {})\n const moreThanOneAvailableCollection = enabledCollectionConfigs.length > 1\n\n useEffect(() => {\n const {\n slug,\n admin: { listSearchableFields, useAsTitle } = {},\n versions,\n } = selectedCollectionConfig\n const params: {\n cacheBust?: number\n draft?: string\n limit?: number\n page?: number\n search?: string\n sort?: string\n where?: unknown\n } = {}\n\n let copyOfWhere = { ...(where || {}) }\n const filterOption = filterOptions?.[slug]\n\n if (filterOptions && typeof filterOption !== 'boolean') {\n copyOfWhere = hoistQueryParamsToAnd(copyOfWhere, filterOption)\n }\n\n if (search) {\n const searchAsConditions = (listSearchableFields || [useAsTitle]).map((fieldName) => {\n return {\n [fieldName]: {\n like: search,\n },\n }\n }, [])\n\n if (searchAsConditions.length > 0) {\n const searchFilter: Where = {\n or: [...searchAsConditions],\n }\n\n copyOfWhere = hoistQueryParamsToAnd(copyOfWhere, searchFilter)\n }\n }\n\n if (page) params.page = page\n if (sort) params.sort = sort\n if (cacheBust) params.cacheBust = cacheBust\n if (copyOfWhere) params.where = copyOfWhere\n if (versions?.drafts) params.draft = 'true'\n\n setParams(params)\n }, [page, sort, where, search, cacheBust, filterOptions, selectedCollectionConfig, t, setParams])\n\n useEffect(() => {\n const newPreferences = {\n limit,\n sort,\n }\n\n void setPreference(preferenceKey, newPreferences, true)\n }, [sort, limit, setPreference, preferenceKey])\n\n const onCreateNew = useCallback(\n ({ doc }) => {\n if (typeof onSelect === 'function') {\n onSelect({\n collectionSlug: selectedCollectionConfig.slug,\n docID: doc.id,\n })\n }\n dispatchCacheBust()\n closeModal(documentDrawerSlug)\n closeModal(drawerSlug)\n },\n [closeModal, documentDrawerSlug, drawerSlug, onSelect, selectedCollectionConfig],\n )\n\n if (!selectedCollectionConfig || isError) {\n return null\n }\n\n if (isLoadingList) {\n return <LoadingOverlay />\n }\n\n return (\n <ListInfoProvider\n Header={\n <header className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-wrap`}>\n <div className={`${baseClass}__header-content`}>\n <h2 className={`${baseClass}__header-text`}>\n {!customHeader\n ? getTranslation(selectedCollectionConfig?.labels?.plural, i18n)\n : customHeader}\n </h2>\n {hasCreatePermission && (\n <DocumentDrawerToggler className={`${baseClass}__create-new-button`}>\n <Pill>{t('general:createNew')}</Pill>\n </DocumentDrawerToggler>\n )}\n </div>\n <button\n aria-label={t('general:close')}\n className={`${baseClass}__header-close`}\n onClick={() => {\n closeModal(drawerSlug)\n }}\n type=\"button\"\n >\n <X />\n </button>\n </div>\n {selectedCollectionConfig?.admin?.description && (\n <div className={`${baseClass}__sub-header`}>\n <ViewDescription description={selectedCollectionConfig.admin.description} />\n </div>\n )}\n {moreThanOneAvailableCollection && (\n <div className={`${baseClass}__select-collection-wrap`}>\n <FieldLabel label={t('upload:selectCollectionToBrowse')} />\n <ReactSelect\n className={`${baseClass}__select-collection`}\n onChange={setSelectedOption} // this is only changing the options which is not rerunning my effect\n options={enabledCollectionConfigs.map((coll) => ({\n label: getTranslation(coll.labels.singular, i18n),\n value: coll.slug,\n }))}\n value={selectedOption}\n />\n </div>\n )}\n </header>\n }\n collectionConfig={selectedCollectionConfig}\n collectionSlug={selectedCollectionConfig.slug}\n hasCreatePermission={hasCreatePermission}\n newDocumentURL={null}\n >\n <ListQueryProvider\n data={data}\n defaultLimit={limit || selectedCollectionConfig?.admin?.pagination?.defaultLimit}\n defaultSort={sort}\n handlePageChange={setPage}\n handlePerPageChange={setLimit}\n handleSearchChange={setSearch}\n handleSortChange={setSort}\n handleWhereChange={setWhere}\n modifySearchParams={false}\n preferenceKey={preferenceKey}\n >\n <TableColumnsProvider\n cellProps={[\n {\n className: `${baseClass}__first-cell`,\n link: false,\n onClick: ({ collectionSlug: rowColl, rowData }) => {\n if (typeof onSelect === 'function') {\n onSelect({\n collectionSlug: rowColl,\n docID: rowData.id as string,\n })\n }\n },\n },\n ]}\n collectionSlug={selectedCollectionConfig.slug}\n preferenceKey={preferenceKey}\n >\n {List}\n <DocumentDrawer onSave={onCreateNew} />\n </TableColumnsProvider>\n </ListQueryProvider>\n </ListInfoProvider>\n )\n}\n"],"names":["facelessUIImport","getTranslation","React","useCallback","useEffect","useReducer","useState","FieldLabel","usePayloadAPI","X","useAuth","useComponentMap","useConfig","ListInfoProvider","ListQueryProvider","usePreferences","useTranslation","useDocumentDrawer","LoadingOverlay","Pill","ReactSelect","TableColumnsProvider","ViewDescription","baseClass","hoistQueryParamsToAnd","where","queryParams","and","push","ListDrawerContent","collectionSlugs","customHeader","drawerSlug","filterOptions","onSelect","selectedCollection","useModal","i18n","t","permissions","setPreference","closeModal","isModalOpen","limit","setLimit","sort","setSort","page","setPage","setWhere","search","setSearch","componentMap","collections","routes","api","serverURL","enabledCollectionConfigs","filter","slug","includes","selectedCollectionConfig","setSelectedCollectionConfig","find","List","selectedOption","setSelectedOption","label","labels","singular","value","undefined","selectedConfig","preferenceKey","DocumentDrawer","DocumentDrawerToggler","documentDrawerSlug","collectionSlug","collectionPermissions","hasCreatePermission","create","permission","isOpen","apiURL","cacheBust","dispatchCacheBust","state","data","isError","isLoading","isLoadingList","setParams","moreThanOneAvailableCollection","length","admin","listSearchableFields","useAsTitle","versions","params","copyOfWhere","filterOption","searchAsConditions","map","fieldName","like","searchFilter","or","drafts","draft","newPreferences","onCreateNew","doc","docID","id","Header","header","className","div","h2","plural","button","aria-label","onClick","type","description","onChange","options","coll","collectionConfig","newDocumentURL","defaultLimit","pagination","defaultSort","handlePageChange","handlePerPageChange","handleSearchChange","handleSortChange","handleWhereChange","modifySearchParams","cellProps","link","rowColl","rowData","onSave"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../src/elements/ListDrawer/DrawerContent.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig } from 'payload/types'\nimport type { Where } from 'payload/types'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useCallback, useEffect, useReducer, useState } from 'react'\n\nimport type { ListDrawerProps } from './types.js'\n\nimport { FieldLabel } from '../../forms/FieldLabel/index.js'\nimport usePayloadAPI from '../../hooks/usePayloadAPI.js'\nimport { X } from '../../icons/X/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useComponentMap } from '../../providers/ComponentMap/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { ListInfoProvider } from '../../providers/ListInfo/index.js'\nimport { ListQueryProvider } from '../../providers/ListQuery/index.js'\nimport { usePreferences } from '../../providers/Preferences/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useDocumentDrawer } from '../DocumentDrawer/index.js'\nimport { LoadingOverlay } from '../Loading/index.js'\nimport { Pill } from '../Pill/index.js'\nimport { ReactSelect } from '../ReactSelect/index.js'\nimport { TableColumnsProvider } from '../TableColumns/index.js'\nimport { ViewDescription } from '../ViewDescription/index.js'\nimport { baseClass } from './index.js'\n\nconst hoistQueryParamsToAnd = (where: Where, queryParams: Where) => {\n if ('and' in where) {\n where.and.push(queryParams)\n } else if ('or' in where) {\n where = {\n and: [where, queryParams],\n }\n } else {\n where = {\n and: [where, queryParams],\n }\n }\n\n return where\n}\n\nexport const ListDrawerContent: React.FC<ListDrawerProps> = ({\n collectionSlugs,\n customHeader,\n drawerSlug,\n filterOptions,\n onSelect,\n selectedCollection,\n}) => {\n const { i18n, t } = useTranslation()\n const { permissions } = useAuth()\n const { setPreference } = usePreferences()\n const { closeModal, isModalOpen } = useModal()\n const [limit, setLimit] = useState<number>()\n const [sort, setSort] = useState<string>(null)\n const [page, setPage] = useState<number>(1)\n const [where, setWhere] = useState<Where>(null)\n const [search, setSearch] = useState<string>('')\n\n const { componentMap } = useComponentMap()\n\n const {\n collections,\n routes: { api },\n serverURL,\n } = useConfig()\n\n const enabledCollectionConfigs = collections.filter(({ slug }) => {\n return collectionSlugs.includes(slug)\n })\n\n const [selectedCollectionConfig, setSelectedCollectionConfig] = useState<ClientCollectionConfig>(\n () => {\n return (\n enabledCollectionConfigs.find(({ slug }) => slug === selectedCollection) ||\n enabledCollectionConfigs?.[0]\n )\n },\n )\n\n const { List } = componentMap.collections?.[selectedCollectionConfig?.slug] || {}\n\n const [selectedOption, setSelectedOption] = useState<{ label: string; value: string }>(() =>\n selectedCollectionConfig\n ? {\n label: getTranslation(selectedCollectionConfig.labels.singular, i18n),\n value: selectedCollectionConfig.slug,\n }\n : undefined,\n )\n\n // const [fields, setFields] = useState<Field[]>(() => formatFields(selectedCollectionConfig))\n\n useEffect(() => {\n // setFields(formatFields(selectedCollectionConfig))\n }, [selectedCollectionConfig])\n\n // allow external control of selected collection, same as the initial state logic above\n useEffect(() => {\n if (selectedCollection) {\n // if passed a selection, find it and check if it's enabled\n const selectedConfig =\n enabledCollectionConfigs.find(({ slug }) => slug === selectedCollection) ||\n enabledCollectionConfigs?.[0]\n setSelectedCollectionConfig(selectedConfig)\n }\n }, [selectedCollection, enabledCollectionConfigs, onSelect, t])\n\n const preferenceKey = `${selectedCollectionConfig.slug}-list`\n\n // this is the 'create new' drawer\n const [DocumentDrawer, DocumentDrawerToggler, { drawerSlug: documentDrawerSlug }] =\n useDocumentDrawer({\n collectionSlug: selectedCollectionConfig.slug,\n })\n\n useEffect(() => {\n if (selectedOption) {\n setSelectedCollectionConfig(\n enabledCollectionConfigs.find(({ slug }) => selectedOption.value === slug),\n )\n }\n }, [selectedOption, enabledCollectionConfigs])\n\n const collectionPermissions = permissions?.collections?.[selectedCollectionConfig?.slug]\n const hasCreatePermission = collectionPermissions?.create?.permission\n\n // If modal is open, get active page of upload gallery\n const isOpen = isModalOpen(drawerSlug)\n const apiURL = isOpen ? `${serverURL}${api}/${selectedCollectionConfig.slug}` : null\n const [cacheBust, dispatchCacheBust] = useReducer((state) => state + 1, 0) // used to force a re-fetch even when apiURL is unchanged\n const [{ data, isError, isLoading: isLoadingList }, { setParams }] = usePayloadAPI(apiURL, {})\n const moreThanOneAvailableCollection = enabledCollectionConfigs.length > 1\n\n useEffect(() => {\n const {\n slug,\n admin: { listSearchableFields, useAsTitle } = {},\n versions,\n } = selectedCollectionConfig\n const params: {\n cacheBust?: number\n draft?: string\n limit?: number\n page?: number\n search?: string\n sort?: string\n where?: unknown\n } = {}\n\n let copyOfWhere = { ...(where || {}) }\n const filterOption = filterOptions?.[slug]\n\n if (filterOptions && typeof filterOption !== 'boolean') {\n copyOfWhere = hoistQueryParamsToAnd(copyOfWhere, filterOption)\n }\n\n if (search) {\n const searchAsConditions = (listSearchableFields || [useAsTitle]).map((fieldName) => {\n return {\n [fieldName]: {\n like: search,\n },\n }\n }, [])\n\n if (searchAsConditions.length > 0) {\n const searchFilter: Where = {\n or: [...searchAsConditions],\n }\n\n copyOfWhere = hoistQueryParamsToAnd(copyOfWhere, searchFilter)\n }\n }\n\n if (page) params.page = page\n if (sort) params.sort = sort\n if (cacheBust) params.cacheBust = cacheBust\n if (copyOfWhere) params.where = copyOfWhere\n if (versions?.drafts) params.draft = 'true'\n\n setParams(params)\n }, [page, sort, where, search, cacheBust, filterOptions, selectedCollectionConfig, t, setParams])\n\n useEffect(() => {\n const newPreferences = {\n limit,\n sort,\n }\n\n void setPreference(preferenceKey, newPreferences, true)\n }, [sort, limit, setPreference, preferenceKey])\n\n const onCreateNew = useCallback(\n ({ doc }) => {\n if (typeof onSelect === 'function') {\n onSelect({\n collectionSlug: selectedCollectionConfig.slug,\n docID: doc.id,\n })\n }\n dispatchCacheBust()\n closeModal(documentDrawerSlug)\n closeModal(drawerSlug)\n },\n [closeModal, documentDrawerSlug, drawerSlug, onSelect, selectedCollectionConfig],\n )\n\n if (!selectedCollectionConfig || isError) {\n return null\n }\n\n if (isLoadingList) {\n return <LoadingOverlay />\n }\n\n return (\n <ListInfoProvider\n Header={\n <header className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-wrap`}>\n <div className={`${baseClass}__header-content`}>\n <h2 className={`${baseClass}__header-text`}>\n {!customHeader\n ? getTranslation(selectedCollectionConfig?.labels?.plural, i18n)\n : customHeader}\n </h2>\n {hasCreatePermission && (\n <DocumentDrawerToggler className={`${baseClass}__create-new-button`}>\n <Pill>{t('general:createNew')}</Pill>\n </DocumentDrawerToggler>\n )}\n </div>\n <button\n aria-label={t('general:close')}\n className={`${baseClass}__header-close`}\n onClick={() => {\n closeModal(drawerSlug)\n }}\n type=\"button\"\n >\n <X />\n </button>\n </div>\n {selectedCollectionConfig?.admin?.description && (\n <div className={`${baseClass}__sub-header`}>\n <ViewDescription description={selectedCollectionConfig.admin.description} />\n </div>\n )}\n {moreThanOneAvailableCollection && (\n <div className={`${baseClass}__select-collection-wrap`}>\n <FieldLabel label={t('upload:selectCollectionToBrowse')} />\n <ReactSelect\n className={`${baseClass}__select-collection`}\n onChange={setSelectedOption} // this is only changing the options which is not rerunning my effect\n options={enabledCollectionConfigs.map((coll) => ({\n label: getTranslation(coll.labels.singular, i18n),\n value: coll.slug,\n }))}\n value={selectedOption}\n />\n </div>\n )}\n </header>\n }\n collectionConfig={selectedCollectionConfig}\n collectionSlug={selectedCollectionConfig.slug}\n hasCreatePermission={hasCreatePermission}\n newDocumentURL={null}\n >\n <ListQueryProvider\n data={data}\n defaultLimit={limit || selectedCollectionConfig?.admin?.pagination?.defaultLimit}\n defaultSort={sort}\n handlePageChange={setPage}\n handlePerPageChange={setLimit}\n handleSearchChange={setSearch}\n handleSortChange={setSort}\n handleWhereChange={setWhere}\n modifySearchParams={false}\n preferenceKey={preferenceKey}\n >\n <TableColumnsProvider\n cellProps={[\n {\n className: `${baseClass}__first-cell`,\n link: false,\n onClick: ({ collectionSlug: rowColl, rowData }) => {\n if (typeof onSelect === 'function') {\n onSelect({\n collectionSlug: rowColl,\n docID: rowData.id as string,\n })\n }\n },\n },\n ]}\n collectionSlug={selectedCollectionConfig.slug}\n preferenceKey={preferenceKey}\n >\n {List}\n <DocumentDrawer onSave={onCreateNew} />\n </TableColumnsProvider>\n </ListQueryProvider>\n </ListInfoProvider>\n )\n}\n"],"names":["useModal","getTranslation","React","useCallback","useEffect","useReducer","useState","FieldLabel","usePayloadAPI","X","useAuth","useComponentMap","useConfig","ListInfoProvider","ListQueryProvider","usePreferences","useTranslation","useDocumentDrawer","LoadingOverlay","Pill","ReactSelect","TableColumnsProvider","ViewDescription","baseClass","hoistQueryParamsToAnd","where","queryParams","and","push","ListDrawerContent","collectionSlugs","customHeader","drawerSlug","filterOptions","onSelect","selectedCollection","i18n","t","permissions","setPreference","closeModal","isModalOpen","limit","setLimit","sort","setSort","page","setPage","setWhere","search","setSearch","componentMap","collections","routes","api","serverURL","enabledCollectionConfigs","filter","slug","includes","selectedCollectionConfig","setSelectedCollectionConfig","find","List","selectedOption","setSelectedOption","label","labels","singular","value","undefined","selectedConfig","preferenceKey","DocumentDrawer","DocumentDrawerToggler","documentDrawerSlug","collectionSlug","collectionPermissions","hasCreatePermission","create","permission","isOpen","apiURL","cacheBust","dispatchCacheBust","state","data","isError","isLoading","isLoadingList","setParams","moreThanOneAvailableCollection","length","admin","listSearchableFields","useAsTitle","versions","params","copyOfWhere","filterOption","searchAsConditions","map","fieldName","like","searchFilter","or","drafts","draft","newPreferences","onCreateNew","doc","docID","id","Header","header","className","div","h2","plural","button","aria-label","onClick","type","description","onChange","options","coll","collectionConfig","newDocumentURL","defaultLimit","pagination","defaultSort","handlePageChange","handlePerPageChange","handleSearchChange","handleSortChange","handleWhereChange","modifySearchParams","cellProps","link","rowColl","rowData","onSave"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ListDrawer/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA2D,MAAM,OAAO,CAAA;AAE/E,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAElF,cAAc,YAAY,CAAA;AAM1B,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,SAAS,gBAAgB,CAAA;AAEtC,eAAO,MAAM,oBAAoB,qBAG9B;IACD,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb,WAAmC,CAAA;AAEpC,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAiBxD,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAQhD,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,aAgF3B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ListDrawer/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA2D,MAAM,OAAO,CAAA;AAE/E,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAElF,cAAc,YAAY,CAAA;AAM1B,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,SAAS,gBAAgB,CAAA;AAEtC,eAAO,MAAM,oBAAoB,qBAG9B;IACD,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb,WAAmC,CAAA;AAEpC,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAiBxD,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAQhD,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,aA8E3B,CAAA"}
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import { createElement as _createElement } from "react";
4
- import * as facelessUIImport from '@faceless-ui/modal';
4
+ import { useModal } from '@faceless-ui/modal';
5
5
  import React, { useCallback, useEffect, useId, useMemo, useState } from 'react';
6
6
  export * from './types.js';
7
7
  import { useConfig } from '../../providers/Config/index.js';
@@ -35,7 +35,6 @@ export const ListDrawer = (props)=>{
35
35
  });
36
36
  };
37
37
  export const useListDrawer = ({ collectionSlugs: collectionSlugsFromProps, filterOptions, selectedCollection, uploads })=>{
38
- const { useModal } = facelessUIImport;
39
38
  const { collections } = useConfig();
40
39
  const drawerDepth = useEditDepth();
41
40
  const uuid = useId();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/ListDrawer/index.tsx"],"sourcesContent":["'use client'\nimport * as facelessUIImport from '@faceless-ui/modal'\nimport React, { useCallback, useEffect, useId, useMemo, useState } from 'react'\n\nimport type { ListDrawerProps, ListTogglerProps, UseListDrawer } from './types.js'\n\nexport * from './types.js'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { Drawer, DrawerToggler } from '../Drawer/index.js'\nimport { ListDrawerContent } from './DrawerContent.js'\nimport './index.scss'\n\nexport const baseClass = 'list-drawer'\n\nexport const formatListDrawerSlug = ({\n depth,\n uuid,\n}: {\n depth: number\n uuid: string // supply when creating a new document and no id is available\n}) => `list-drawer_${depth}_${uuid}`\n\nexport const ListDrawerToggler: React.FC<ListTogglerProps> = ({\n children,\n className,\n disabled,\n drawerSlug,\n ...rest\n}) => {\n return (\n <DrawerToggler\n className={[className, `${baseClass}__toggler`].filter(Boolean).join(' ')}\n disabled={disabled}\n slug={drawerSlug}\n {...rest}\n >\n {children}\n </DrawerToggler>\n )\n}\n\nexport const ListDrawer: React.FC<ListDrawerProps> = (props) => {\n const { drawerSlug } = props\n\n return (\n <Drawer Header={null} className={baseClass} gutter={false} slug={drawerSlug}>\n <ListDrawerContent {...props} />\n </Drawer>\n )\n}\n\nexport const useListDrawer: UseListDrawer = ({\n collectionSlugs: collectionSlugsFromProps,\n filterOptions,\n selectedCollection,\n uploads,\n}) => {\n const { useModal } = facelessUIImport\n\n const { collections } = useConfig()\n const drawerDepth = useEditDepth()\n const uuid = useId()\n const { closeModal, modalState, openModal, toggleModal } = useModal()\n const [isOpen, setIsOpen] = useState(false)\n const [collectionSlugs, setCollectionSlugs] = useState(collectionSlugsFromProps)\n\n const drawerSlug = formatListDrawerSlug({\n depth: drawerDepth,\n uuid,\n })\n\n useEffect(() => {\n setIsOpen(Boolean(modalState[drawerSlug]?.isOpen))\n }, [modalState, drawerSlug])\n\n useEffect(() => {\n if (!collectionSlugs || collectionSlugs.length === 0) {\n const filteredCollectionSlugs = collections.filter(({ upload }) => {\n if (uploads) {\n return Boolean(upload) === true\n }\n return true\n })\n\n setCollectionSlugs(filteredCollectionSlugs.map(({ slug }) => slug))\n }\n }, [collectionSlugs, uploads, collections])\n const toggleDrawer = useCallback(() => {\n toggleModal(drawerSlug)\n }, [toggleModal, drawerSlug])\n\n const closeDrawer = useCallback(() => {\n closeModal(drawerSlug)\n }, [drawerSlug, closeModal])\n\n const openDrawer = useCallback(() => {\n openModal(drawerSlug)\n }, [drawerSlug, openModal])\n\n const MemoizedDrawer = useMemo(() => {\n return (props) => (\n <ListDrawer\n {...props}\n closeDrawer={closeDrawer}\n collectionSlugs={collectionSlugs}\n drawerSlug={drawerSlug}\n filterOptions={filterOptions}\n key={drawerSlug}\n selectedCollection={selectedCollection}\n uploads={uploads}\n />\n )\n }, [drawerSlug, collectionSlugs, uploads, closeDrawer, selectedCollection, filterOptions])\n\n const MemoizedDrawerToggler = useMemo(() => {\n return (props) => <ListDrawerToggler {...props} drawerSlug={drawerSlug} />\n }, [drawerSlug])\n\n const MemoizedDrawerState = useMemo(\n () => ({\n closeDrawer,\n drawerDepth,\n drawerSlug,\n isDrawerOpen: isOpen,\n openDrawer,\n toggleDrawer,\n }),\n [drawerDepth, drawerSlug, isOpen, toggleDrawer, closeDrawer, openDrawer],\n )\n\n return [MemoizedDrawer, MemoizedDrawerToggler, MemoizedDrawerState]\n}\n"],"names":["facelessUIImport","React","useCallback","useEffect","useId","useMemo","useState","useConfig","useEditDepth","Drawer","DrawerToggler","ListDrawerContent","baseClass","formatListDrawerSlug","depth","uuid","ListDrawerToggler","children","className","disabled","drawerSlug","rest","filter","Boolean","join","slug","ListDrawer","props","Header","gutter","useListDrawer","collectionSlugs","collectionSlugsFromProps","filterOptions","selectedCollection","uploads","useModal","collections","drawerDepth","closeModal","modalState","openModal","toggleModal","isOpen","setIsOpen","setCollectionSlugs","length","filteredCollectionSlugs","upload","map","toggleDrawer","closeDrawer","openDrawer","MemoizedDrawer","key","MemoizedDrawerToggler","MemoizedDrawerState","isDrawerOpen"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../src/elements/ListDrawer/index.tsx"],"sourcesContent":["'use client'\nimport { useModal } from '@faceless-ui/modal'\nimport React, { useCallback, useEffect, useId, useMemo, useState } from 'react'\n\nimport type { ListDrawerProps, ListTogglerProps, UseListDrawer } from './types.js'\n\nexport * from './types.js'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { Drawer, DrawerToggler } from '../Drawer/index.js'\nimport { ListDrawerContent } from './DrawerContent.js'\nimport './index.scss'\n\nexport const baseClass = 'list-drawer'\n\nexport const formatListDrawerSlug = ({\n depth,\n uuid,\n}: {\n depth: number\n uuid: string // supply when creating a new document and no id is available\n}) => `list-drawer_${depth}_${uuid}`\n\nexport const ListDrawerToggler: React.FC<ListTogglerProps> = ({\n children,\n className,\n disabled,\n drawerSlug,\n ...rest\n}) => {\n return (\n <DrawerToggler\n className={[className, `${baseClass}__toggler`].filter(Boolean).join(' ')}\n disabled={disabled}\n slug={drawerSlug}\n {...rest}\n >\n {children}\n </DrawerToggler>\n )\n}\n\nexport const ListDrawer: React.FC<ListDrawerProps> = (props) => {\n const { drawerSlug } = props\n\n return (\n <Drawer Header={null} className={baseClass} gutter={false} slug={drawerSlug}>\n <ListDrawerContent {...props} />\n </Drawer>\n )\n}\n\nexport const useListDrawer: UseListDrawer = ({\n collectionSlugs: collectionSlugsFromProps,\n filterOptions,\n selectedCollection,\n uploads,\n}) => {\n const { collections } = useConfig()\n const drawerDepth = useEditDepth()\n const uuid = useId()\n const { closeModal, modalState, openModal, toggleModal } = useModal()\n const [isOpen, setIsOpen] = useState(false)\n const [collectionSlugs, setCollectionSlugs] = useState(collectionSlugsFromProps)\n\n const drawerSlug = formatListDrawerSlug({\n depth: drawerDepth,\n uuid,\n })\n\n useEffect(() => {\n setIsOpen(Boolean(modalState[drawerSlug]?.isOpen))\n }, [modalState, drawerSlug])\n\n useEffect(() => {\n if (!collectionSlugs || collectionSlugs.length === 0) {\n const filteredCollectionSlugs = collections.filter(({ upload }) => {\n if (uploads) {\n return Boolean(upload) === true\n }\n return true\n })\n\n setCollectionSlugs(filteredCollectionSlugs.map(({ slug }) => slug))\n }\n }, [collectionSlugs, uploads, collections])\n const toggleDrawer = useCallback(() => {\n toggleModal(drawerSlug)\n }, [toggleModal, drawerSlug])\n\n const closeDrawer = useCallback(() => {\n closeModal(drawerSlug)\n }, [drawerSlug, closeModal])\n\n const openDrawer = useCallback(() => {\n openModal(drawerSlug)\n }, [drawerSlug, openModal])\n\n const MemoizedDrawer = useMemo(() => {\n return (props) => (\n <ListDrawer\n {...props}\n closeDrawer={closeDrawer}\n collectionSlugs={collectionSlugs}\n drawerSlug={drawerSlug}\n filterOptions={filterOptions}\n key={drawerSlug}\n selectedCollection={selectedCollection}\n uploads={uploads}\n />\n )\n }, [drawerSlug, collectionSlugs, uploads, closeDrawer, selectedCollection, filterOptions])\n\n const MemoizedDrawerToggler = useMemo(() => {\n return (props) => <ListDrawerToggler {...props} drawerSlug={drawerSlug} />\n }, [drawerSlug])\n\n const MemoizedDrawerState = useMemo(\n () => ({\n closeDrawer,\n drawerDepth,\n drawerSlug,\n isDrawerOpen: isOpen,\n openDrawer,\n toggleDrawer,\n }),\n [drawerDepth, drawerSlug, isOpen, toggleDrawer, closeDrawer, openDrawer],\n )\n\n return [MemoizedDrawer, MemoizedDrawerToggler, MemoizedDrawerState]\n}\n"],"names":["useModal","React","useCallback","useEffect","useId","useMemo","useState","useConfig","useEditDepth","Drawer","DrawerToggler","ListDrawerContent","baseClass","formatListDrawerSlug","depth","uuid","ListDrawerToggler","children","className","disabled","drawerSlug","rest","filter","Boolean","join","slug","ListDrawer","props","Header","gutter","useListDrawer","collectionSlugs","collectionSlugsFromProps","filterOptions","selectedCollection","uploads","collections","drawerDepth","closeModal","modalState","openModal","toggleModal","isOpen","setIsOpen","setCollectionSlugs","length","filteredCollectionSlugs","upload","map","toggleDrawer","closeDrawer","openDrawer","MemoizedDrawer","key","MemoizedDrawerToggler","MemoizedDrawerState","isDrawerOpen"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1,9 +1,3 @@
1
- /// <reference types="react" resolution-mode="require"/>
2
- declare const Modal: import("react").FC<import("@faceless-ui/modal/dist/Modal/index.js").ModalProps & {
3
- modal?: import("@faceless-ui/modal/dist/ModalProvider/context.js").IModalContext;
4
- } & {
5
- children?: import("react").ReactNode | import("@faceless-ui/modal/dist/Modal/index.js").ChildFunction;
6
- }>;
7
- declare const useModal: () => import("@faceless-ui/modal/dist/ModalProvider/context.js").IModalContext;
1
+ import { Modal, useModal } from '@faceless-ui/modal';
8
2
  export { Modal, useModal };
9
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Modal/index.tsx"],"names":[],"mappings":";AACA,QAAA,MAAQ,KAAK;;;;EAC8E,CAAA;AAC3F,QAAA,MAAQ,QAAQ,gFACiF,CAAA;AACjG,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Modal/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA"}
@@ -1,10 +1,4 @@
1
- import * as facelessUIImport from '@faceless-ui/modal';
2
- const { Modal } = facelessUIImport && 'Modal' in facelessUIImport ? facelessUIImport : {
3
- Modal: undefined
4
- };
5
- const { useModal } = facelessUIImport && 'useModal' in facelessUIImport ? facelessUIImport : {
6
- useModal: undefined
7
- };
1
+ import { Modal, useModal } from '@faceless-ui/modal';
8
2
  export { Modal, useModal };
9
3
 
10
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/Modal/index.tsx"],"sourcesContent":["import * as facelessUIImport from '@faceless-ui/modal'\nconst { Modal } =\n facelessUIImport && 'Modal' in facelessUIImport ? facelessUIImport : { Modal: undefined }\nconst { useModal } =\n facelessUIImport && 'useModal' in facelessUIImport ? facelessUIImport : { useModal: undefined }\nexport { Modal, useModal }\n"],"names":["facelessUIImport","Modal","undefined","useModal"],"rangeMappings":";;;;;;;","mappings":"AAAA,YAAYA,sBAAsB,qBAAoB;AACtD,MAAM,EAAEC,KAAK,EAAE,GACbD,oBAAoB,WAAWA,mBAAmBA,mBAAmB;IAAEC,OAAOC;AAAU;AAC1F,MAAM,EAAEC,QAAQ,EAAE,GAChBH,oBAAoB,cAAcA,mBAAmBA,mBAAmB;IAAEG,UAAUD;AAAU;AAChG,SAASD,KAAK,EAAEE,QAAQ,GAAE"}
1
+ {"version":3,"sources":["../../../src/elements/Modal/index.tsx"],"sourcesContent":["import { Modal, useModal } from '@faceless-ui/modal'\nexport { Modal, useModal }\n"],"names":["Modal","useModal"],"rangeMappings":";","mappings":"AAAA,SAASA,KAAK,EAAEC,QAAQ,QAAQ,qBAAoB;AACpD,SAASD,KAAK,EAAEC,QAAQ,GAAE"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/Nav/NavToggler/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAsCA,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/Nav/NavToggler/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAqCA,CAAA"}
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
- import * as facelessUIImport from '@faceless-ui/window-info';
3
+ import { useWindowInfo } from '@faceless-ui/window-info';
4
4
  import React from 'react';
5
5
  import { usePreferences } from '../../../providers/Preferences/index.js';
6
6
  import { useTranslation } from '../../../providers/Translation/index.js';
@@ -8,7 +8,6 @@ import { useNav } from '../context.js';
8
8
  const baseClass = 'nav-toggler';
9
9
  export const NavToggler = (props)=>{
10
10
  const { id, children, className, tabIndex = 0 } = props;
11
- const { useWindowInfo } = facelessUIImport;
12
11
  const { t } = useTranslation();
13
12
  const { setPreference } = usePreferences();
14
13
  const { navOpen, setNavOpen } = useNav();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/elements/Nav/NavToggler/index.tsx"],"sourcesContent":["'use client'\nimport * as facelessUIImport from '@faceless-ui/window-info'\nimport React from 'react'\n\nimport { usePreferences } from '../../../providers/Preferences/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { useNav } from '../context.js'\nimport './index.scss'\n\nconst baseClass = 'nav-toggler'\n\nexport const NavToggler: React.FC<{\n children?: React.ReactNode\n className?: string\n id?: string\n tabIndex?: number\n}> = (props) => {\n const { id, children, className, tabIndex = 0 } = props\n const { useWindowInfo } = facelessUIImport\n\n const { t } = useTranslation()\n\n const { setPreference } = usePreferences()\n\n const { navOpen, setNavOpen } = useNav()\n\n const {\n breakpoints: { l: largeBreak },\n } = useWindowInfo()\n\n return (\n <button\n aria-label={`${navOpen ? t('general:close') : t('general:open')} ${t('general:menu')}`}\n className={[baseClass, navOpen && `${baseClass}--is-open`, className]\n .filter(Boolean)\n .join(' ')}\n id={id}\n onClick={async () => {\n setNavOpen(!navOpen)\n\n // only when the user explicitly toggles the nav on desktop do we want to set the preference\n // this is because the js may open or close the nav based on the window size, routing, etc\n if (!largeBreak) {\n await setPreference('nav', {\n open: !navOpen,\n })\n }\n }}\n tabIndex={tabIndex}\n type=\"button\"\n >\n {children}\n </button>\n )\n}\n"],"names":["facelessUIImport","React","usePreferences","useTranslation","useNav","baseClass","NavToggler","props","id","children","className","tabIndex","useWindowInfo","t","setPreference","navOpen","setNavOpen","breakpoints","l","largeBreak","button","aria-label","filter","Boolean","join","onClick","open","type"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;;AACA,YAAYA,sBAAsB,2BAA0B;AAC5D,OAAOC,WAAW,QAAO;AAEzB,SAASC,cAAc,QAAQ,0CAAyC;AACxE,SAASC,cAAc,QAAQ,0CAAyC;AACxE,SAASC,MAAM,QAAQ,gBAAe;AAGtC,MAAMC,YAAY;AAElB,OAAO,MAAMC,aAKR,CAACC;IACJ,MAAM,EAAEC,EAAE,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,WAAW,CAAC,EAAE,GAAGJ;IAClD,MAAM,EAAEK,aAAa,EAAE,GAAGZ;IAE1B,MAAM,EAAEa,CAAC,EAAE,GAAGV;IAEd,MAAM,EAAEW,aAAa,EAAE,GAAGZ;IAE1B,MAAM,EAAEa,OAAO,EAAEC,UAAU,EAAE,GAAGZ;IAEhC,MAAM,EACJa,aAAa,EAAEC,GAAGC,UAAU,EAAE,EAC/B,GAAGP;IAEJ,qBACE,KAACQ;QACCC,cAAY,CAAC,EAAEN,UAAUF,EAAE,mBAAmBA,EAAE,gBAAgB,CAAC,EAAEA,EAAE,gBAAgB,CAAC;QACtFH,WAAW;YAACL;YAAWU,WAAW,CAAC,EAAEV,UAAU,SAAS,CAAC;YAAEK;SAAU,CAClEY,MAAM,CAACC,SACPC,IAAI,CAAC;QACRhB,IAAIA;QACJiB,SAAS;YACPT,WAAW,CAACD;YAEZ,4FAA4F;YAC5F,0FAA0F;YAC1F,IAAI,CAACI,YAAY;gBACf,MAAML,cAAc,OAAO;oBACzBY,MAAM,CAACX;gBACT;YACF;QACF;QACAJ,UAAUA;QACVgB,MAAK;kBAEJlB;;AAGP,EAAC"}
1
+ {"version":3,"sources":["../../../../src/elements/Nav/NavToggler/index.tsx"],"sourcesContent":["'use client'\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport React from 'react'\n\nimport { usePreferences } from '../../../providers/Preferences/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { useNav } from '../context.js'\nimport './index.scss'\n\nconst baseClass = 'nav-toggler'\n\nexport const NavToggler: React.FC<{\n children?: React.ReactNode\n className?: string\n id?: string\n tabIndex?: number\n}> = (props) => {\n const { id, children, className, tabIndex = 0 } = props\n\n const { t } = useTranslation()\n\n const { setPreference } = usePreferences()\n\n const { navOpen, setNavOpen } = useNav()\n\n const {\n breakpoints: { l: largeBreak },\n } = useWindowInfo()\n\n return (\n <button\n aria-label={`${navOpen ? t('general:close') : t('general:open')} ${t('general:menu')}`}\n className={[baseClass, navOpen && `${baseClass}--is-open`, className]\n .filter(Boolean)\n .join(' ')}\n id={id}\n onClick={async () => {\n setNavOpen(!navOpen)\n\n // only when the user explicitly toggles the nav on desktop do we want to set the preference\n // this is because the js may open or close the nav based on the window size, routing, etc\n if (!largeBreak) {\n await setPreference('nav', {\n open: !navOpen,\n })\n }\n }}\n tabIndex={tabIndex}\n type=\"button\"\n >\n {children}\n </button>\n )\n}\n"],"names":["useWindowInfo","React","usePreferences","useTranslation","useNav","baseClass","NavToggler","props","id","children","className","tabIndex","t","setPreference","navOpen","setNavOpen","breakpoints","l","largeBreak","button","aria-label","filter","Boolean","join","onClick","open","type"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;;AACA,SAASA,aAAa,QAAQ,2BAA0B;AACxD,OAAOC,WAAW,QAAO;AAEzB,SAASC,cAAc,QAAQ,0CAAyC;AACxE,SAASC,cAAc,QAAQ,0CAAyC;AACxE,SAASC,MAAM,QAAQ,gBAAe;AAGtC,MAAMC,YAAY;AAElB,OAAO,MAAMC,aAKR,CAACC;IACJ,MAAM,EAAEC,EAAE,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,WAAW,CAAC,EAAE,GAAGJ;IAElD,MAAM,EAAEK,CAAC,EAAE,GAAGT;IAEd,MAAM,EAAEU,aAAa,EAAE,GAAGX;IAE1B,MAAM,EAAEY,OAAO,EAAEC,UAAU,EAAE,GAAGX;IAEhC,MAAM,EACJY,aAAa,EAAEC,GAAGC,UAAU,EAAE,EAC/B,GAAGlB;IAEJ,qBACE,KAACmB;QACCC,cAAY,CAAC,EAAEN,UAAUF,EAAE,mBAAmBA,EAAE,gBAAgB,CAAC,EAAEA,EAAE,gBAAgB,CAAC;QACtFF,WAAW;YAACL;YAAWS,WAAW,CAAC,EAAET,UAAU,SAAS,CAAC;YAAEK;SAAU,CAClEW,MAAM,CAACC,SACPC,IAAI,CAAC;QACRf,IAAIA;QACJgB,SAAS;YACPT,WAAW,CAACD;YAEZ,4FAA4F;YAC5F,0FAA0F;YAC1F,IAAI,CAACI,YAAY;gBACf,MAAML,cAAc,OAAO;oBACzBY,MAAM,CAACX;gBACT;YACF;QACF;QACAH,UAAUA;QACVe,MAAK;kBAEJjB;;AAGP,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/elements/Nav/context.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAIhD,KAAK,cAAc,GAAG;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAA;IAC9C,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;CACrC,CAAA;AAED,eAAO,MAAM,UAAU,+BAIrB,CAAA;AAEF,eAAO,MAAM,MAAM,sBAAqC,CAAA;AAYxD,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,CA8DA,CAAA"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/elements/Nav/context.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAIhD,KAAK,cAAc,GAAG;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAA;IAC9C,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;CACrC,CAAA;AAED,eAAO,MAAM,UAAU,+BAIrB,CAAA;AAEF,eAAO,MAAM,MAAM,sBAAqC,CAAA;AAYxD,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,CA4DA,CAAA"}
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
- import * as facelessUIImport from '@faceless-ui/window-info';
3
+ import { useWindowInfo } from '@faceless-ui/window-info';
4
4
  import { clearAllBodyScrollLocks, disableBodyScroll, enableBodyScroll } from 'body-scroll-lock';
5
5
  import React, { useEffect, useRef } from 'react';
6
6
  import { usePreferences } from '../../providers/Preferences/index.js';
@@ -20,7 +20,6 @@ const getNavPreference = async (getPreference)=>{
20
20
  }
21
21
  };
22
22
  export const NavProvider = ({ children })=>{
23
- const { useWindowInfo } = facelessUIImport;
24
23
  const { breakpoints: { l: largeBreak, m: midBreak, s: smallBreak } } = useWindowInfo();
25
24
  const { getPreference } = usePreferences();
26
25
  const navRef = useRef(null);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/Nav/context.tsx"],"sourcesContent":["'use client'\nimport * as facelessUIImport from '@faceless-ui/window-info'\nimport { clearAllBodyScrollLocks, disableBodyScroll, enableBodyScroll } from 'body-scroll-lock'\nimport React, { useEffect, useRef } from 'react'\n\nimport { usePreferences } from '../../providers/Preferences/index.js'\n\ntype NavContextType = {\n navOpen: boolean\n navRef: React.RefObject<HTMLDivElement | null>\n setNavOpen: (value: boolean) => void\n}\n\nexport const NavContext = React.createContext<NavContextType>({\n navOpen: true,\n navRef: null,\n setNavOpen: () => {},\n})\n\nexport const useNav = () => React.useContext(NavContext)\n\nconst getNavPreference = async (getPreference): Promise<boolean> => {\n const navPrefs = await getPreference('nav')\n const preferredState = navPrefs?.open\n if (typeof preferredState === 'boolean') {\n return preferredState\n } else {\n return true\n }\n}\n\nexport const NavProvider: React.FC<{\n children: React.ReactNode\n}> = ({ children }) => {\n const { useWindowInfo } = facelessUIImport\n\n const {\n breakpoints: { l: largeBreak, m: midBreak, s: smallBreak },\n } = useWindowInfo()\n\n const { getPreference } = usePreferences()\n const navRef = useRef(null)\n\n // initialize the nav to be closed\n // this is because getting the preference is async\n // so instead of closing it after the preference is loaded\n // we will open it after the preference is loaded\n const [navOpen, setNavOpen] = React.useState(false)\n\n // on load check the user's preference and set \"initial\" state\n useEffect(() => {\n if (largeBreak === false) {\n const setNavFromPreferences = async () => {\n const preferredState = await getNavPreference(getPreference)\n setNavOpen(preferredState)\n }\n\n setNavFromPreferences() // eslint-disable-line @typescript-eslint/no-floating-promises\n }\n }, [largeBreak, getPreference, setNavOpen])\n\n // TODO: on smaller screens where the nav is a modal\n // close the nav when the user navigates away\n\n // on open and close, lock the body scroll\n // do not do this on desktop, the sidebar is not a modal\n useEffect(() => {\n if (navRef.current) {\n if (navOpen && midBreak) {\n disableBodyScroll(navRef.current)\n } else {\n enableBodyScroll(navRef.current)\n }\n }\n }, [navOpen, midBreak])\n\n // on smaller screens where the nav is a modal\n // close the nav when the user resizes down to mobile\n // the sidebar is a modal on mobile\n useEffect(() => {\n if (largeBreak === false || midBreak === false || smallBreak === false) {\n setNavOpen(false)\n }\n }, [largeBreak, midBreak, smallBreak])\n\n // when the component unmounts, clear all body scroll locks\n useEffect(() => {\n return () => {\n clearAllBodyScrollLocks()\n }\n }, [])\n\n return (\n <NavContext.Provider value={{ navOpen, navRef, setNavOpen }}>{children}</NavContext.Provider>\n )\n}\n"],"names":["facelessUIImport","clearAllBodyScrollLocks","disableBodyScroll","enableBodyScroll","React","useEffect","useRef","usePreferences","NavContext","createContext","navOpen","navRef","setNavOpen","useNav","useContext","getNavPreference","getPreference","navPrefs","preferredState","open","NavProvider","children","useWindowInfo","breakpoints","l","largeBreak","m","midBreak","s","smallBreak","useState","setNavFromPreferences","current","Provider","value"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;;AACA,YAAYA,sBAAsB,2BAA0B;AAC5D,SAASC,uBAAuB,EAAEC,iBAAiB,EAAEC,gBAAgB,QAAQ,mBAAkB;AAC/F,OAAOC,SAASC,SAAS,EAAEC,MAAM,QAAQ,QAAO;AAEhD,SAASC,cAAc,QAAQ,uCAAsC;AAQrE,OAAO,MAAMC,2BAAaJ,MAAMK,aAAa,CAAiB;IAC5DC,SAAS;IACTC,QAAQ;IACRC,YAAY,KAAO;AACrB,GAAE;AAEF,OAAO,MAAMC,SAAS,IAAMT,MAAMU,UAAU,CAACN,YAAW;AAExD,MAAMO,mBAAmB,OAAOC;IAC9B,MAAMC,WAAW,MAAMD,cAAc;IACrC,MAAME,iBAAiBD,UAAUE;IACjC,IAAI,OAAOD,mBAAmB,WAAW;QACvC,OAAOA;IACT,OAAO;QACL,OAAO;IACT;AACF;AAEA,OAAO,MAAME,cAER,CAAC,EAAEC,QAAQ,EAAE;IAChB,MAAM,EAAEC,aAAa,EAAE,GAAGtB;IAE1B,MAAM,EACJuB,aAAa,EAAEC,GAAGC,UAAU,EAAEC,GAAGC,QAAQ,EAAEC,GAAGC,UAAU,EAAE,EAC3D,GAAGP;IAEJ,MAAM,EAAEN,aAAa,EAAE,GAAGT;IAC1B,MAAMI,SAASL,OAAO;IAEtB,kCAAkC;IAClC,kDAAkD;IAClD,0DAA0D;IAC1D,iDAAiD;IACjD,MAAM,CAACI,SAASE,WAAW,GAAGR,MAAM0B,QAAQ,CAAC;IAE7C,8DAA8D;IAC9DzB,UAAU;QACR,IAAIoB,eAAe,OAAO;YACxB,MAAMM,wBAAwB;gBAC5B,MAAMb,iBAAiB,MAAMH,iBAAiBC;gBAC9CJ,WAAWM;YACb;YAEAa,wBAAwB,8DAA8D;;QACxF;IACF,GAAG;QAACN;QAAYT;QAAeJ;KAAW;IAE1C,oDAAoD;IACpD,6CAA6C;IAE7C,0CAA0C;IAC1C,wDAAwD;IACxDP,UAAU;QACR,IAAIM,OAAOqB,OAAO,EAAE;YAClB,IAAItB,WAAWiB,UAAU;gBACvBzB,kBAAkBS,OAAOqB,OAAO;YAClC,OAAO;gBACL7B,iBAAiBQ,OAAOqB,OAAO;YACjC;QACF;IACF,GAAG;QAACtB;QAASiB;KAAS;IAEtB,8CAA8C;IAC9C,qDAAqD;IACrD,mCAAmC;IACnCtB,UAAU;QACR,IAAIoB,eAAe,SAASE,aAAa,SAASE,eAAe,OAAO;YACtEjB,WAAW;QACb;IACF,GAAG;QAACa;QAAYE;QAAUE;KAAW;IAErC,2DAA2D;IAC3DxB,UAAU;QACR,OAAO;YACLJ;QACF;IACF,GAAG,EAAE;IAEL,qBACE,KAACO,WAAWyB,QAAQ;QAACC,OAAO;YAAExB;YAASC;YAAQC;QAAW;kBAAIS;;AAElE,EAAC"}
1
+ {"version":3,"sources":["../../../src/elements/Nav/context.tsx"],"sourcesContent":["'use client'\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { clearAllBodyScrollLocks, disableBodyScroll, enableBodyScroll } from 'body-scroll-lock'\nimport React, { useEffect, useRef } from 'react'\n\nimport { usePreferences } from '../../providers/Preferences/index.js'\n\ntype NavContextType = {\n navOpen: boolean\n navRef: React.RefObject<HTMLDivElement | null>\n setNavOpen: (value: boolean) => void\n}\n\nexport const NavContext = React.createContext<NavContextType>({\n navOpen: true,\n navRef: null,\n setNavOpen: () => {},\n})\n\nexport const useNav = () => React.useContext(NavContext)\n\nconst getNavPreference = async (getPreference): Promise<boolean> => {\n const navPrefs = await getPreference('nav')\n const preferredState = navPrefs?.open\n if (typeof preferredState === 'boolean') {\n return preferredState\n } else {\n return true\n }\n}\n\nexport const NavProvider: React.FC<{\n children: React.ReactNode\n}> = ({ children }) => {\n const {\n breakpoints: { l: largeBreak, m: midBreak, s: smallBreak },\n } = useWindowInfo()\n\n const { getPreference } = usePreferences()\n const navRef = useRef(null)\n\n // initialize the nav to be closed\n // this is because getting the preference is async\n // so instead of closing it after the preference is loaded\n // we will open it after the preference is loaded\n const [navOpen, setNavOpen] = React.useState(false)\n\n // on load check the user's preference and set \"initial\" state\n useEffect(() => {\n if (largeBreak === false) {\n const setNavFromPreferences = async () => {\n const preferredState = await getNavPreference(getPreference)\n setNavOpen(preferredState)\n }\n\n setNavFromPreferences() // eslint-disable-line @typescript-eslint/no-floating-promises\n }\n }, [largeBreak, getPreference, setNavOpen])\n\n // TODO: on smaller screens where the nav is a modal\n // close the nav when the user navigates away\n\n // on open and close, lock the body scroll\n // do not do this on desktop, the sidebar is not a modal\n useEffect(() => {\n if (navRef.current) {\n if (navOpen && midBreak) {\n disableBodyScroll(navRef.current)\n } else {\n enableBodyScroll(navRef.current)\n }\n }\n }, [navOpen, midBreak])\n\n // on smaller screens where the nav is a modal\n // close the nav when the user resizes down to mobile\n // the sidebar is a modal on mobile\n useEffect(() => {\n if (largeBreak === false || midBreak === false || smallBreak === false) {\n setNavOpen(false)\n }\n }, [largeBreak, midBreak, smallBreak])\n\n // when the component unmounts, clear all body scroll locks\n useEffect(() => {\n return () => {\n clearAllBodyScrollLocks()\n }\n }, [])\n\n return (\n <NavContext.Provider value={{ navOpen, navRef, setNavOpen }}>{children}</NavContext.Provider>\n )\n}\n"],"names":["useWindowInfo","clearAllBodyScrollLocks","disableBodyScroll","enableBodyScroll","React","useEffect","useRef","usePreferences","NavContext","createContext","navOpen","navRef","setNavOpen","useNav","useContext","getNavPreference","getPreference","navPrefs","preferredState","open","NavProvider","children","breakpoints","l","largeBreak","m","midBreak","s","smallBreak","useState","setNavFromPreferences","current","Provider","value"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;;AACA,SAASA,aAAa,QAAQ,2BAA0B;AACxD,SAASC,uBAAuB,EAAEC,iBAAiB,EAAEC,gBAAgB,QAAQ,mBAAkB;AAC/F,OAAOC,SAASC,SAAS,EAAEC,MAAM,QAAQ,QAAO;AAEhD,SAASC,cAAc,QAAQ,uCAAsC;AAQrE,OAAO,MAAMC,2BAAaJ,MAAMK,aAAa,CAAiB;IAC5DC,SAAS;IACTC,QAAQ;IACRC,YAAY,KAAO;AACrB,GAAE;AAEF,OAAO,MAAMC,SAAS,IAAMT,MAAMU,UAAU,CAACN,YAAW;AAExD,MAAMO,mBAAmB,OAAOC;IAC9B,MAAMC,WAAW,MAAMD,cAAc;IACrC,MAAME,iBAAiBD,UAAUE;IACjC,IAAI,OAAOD,mBAAmB,WAAW;QACvC,OAAOA;IACT,OAAO;QACL,OAAO;IACT;AACF;AAEA,OAAO,MAAME,cAER,CAAC,EAAEC,QAAQ,EAAE;IAChB,MAAM,EACJC,aAAa,EAAEC,GAAGC,UAAU,EAAEC,GAAGC,QAAQ,EAAEC,GAAGC,UAAU,EAAE,EAC3D,GAAG5B;IAEJ,MAAM,EAAEgB,aAAa,EAAE,GAAGT;IAC1B,MAAMI,SAASL,OAAO;IAEtB,kCAAkC;IAClC,kDAAkD;IAClD,0DAA0D;IAC1D,iDAAiD;IACjD,MAAM,CAACI,SAASE,WAAW,GAAGR,MAAMyB,QAAQ,CAAC;IAE7C,8DAA8D;IAC9DxB,UAAU;QACR,IAAImB,eAAe,OAAO;YACxB,MAAMM,wBAAwB;gBAC5B,MAAMZ,iBAAiB,MAAMH,iBAAiBC;gBAC9CJ,WAAWM;YACb;YAEAY,wBAAwB,8DAA8D;;QACxF;IACF,GAAG;QAACN;QAAYR;QAAeJ;KAAW;IAE1C,oDAAoD;IACpD,6CAA6C;IAE7C,0CAA0C;IAC1C,wDAAwD;IACxDP,UAAU;QACR,IAAIM,OAAOoB,OAAO,EAAE;YAClB,IAAIrB,WAAWgB,UAAU;gBACvBxB,kBAAkBS,OAAOoB,OAAO;YAClC,OAAO;gBACL5B,iBAAiBQ,OAAOoB,OAAO;YACjC;QACF;IACF,GAAG;QAACrB;QAASgB;KAAS;IAEtB,8CAA8C;IAC9C,qDAAqD;IACrD,mCAAmC;IACnCrB,UAAU;QACR,IAAImB,eAAe,SAASE,aAAa,SAASE,eAAe,OAAO;YACtEhB,WAAW;QACb;IACF,GAAG;QAACY;QAAYE;QAAUE;KAAW;IAErC,2DAA2D;IAC3DvB,UAAU;QACR,OAAO;YACLJ;QACF;IACF,GAAG,EAAE;IAEL,qBACE,KAACO,WAAWwB,QAAQ;QAACC,OAAO;YAAEvB;YAASC;YAAQC;QAAW;kBAAIS;;AAElE,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Popup/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAE1C,OAAO,KAAK,SAAS,MAAM,4BAA4B,CAAA;AAGvD,OAAO,KAAmD,MAAM,OAAO,CAAA;AAIvE,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,UAAU,GAAG;IACvB,eAAe,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAA;IAClD,WAAW,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAA;IACjD,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,UAAU,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAA;IAC1C,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,eAAe,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;IAC7C,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;IACxC,MAAM,CAAC,EAAE,CAAC,GAAG,KAAA,KAAK,KAAK,CAAC,SAAS,CAAA;IACjC,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAA;IACnD,aAAa,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAA;CACjC,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAkKtC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Popup/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAE1C,OAAO,KAAK,SAAS,MAAM,4BAA4B,CAAA;AAGvD,OAAO,KAAmD,MAAM,OAAO,CAAA;AAIvE,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,UAAU,GAAG;IACvB,eAAe,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAA;IAClD,WAAW,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAA;IACjD,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,UAAU,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAA;IAC1C,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,eAAe,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;IAC7C,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;IACxC,MAAM,CAAC,EAAE,CAAC,GAAG,KAAA,KAAK,KAAK,CAAC,SAAS,CAAA;IACjC,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAA;IACnD,aAAa,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAA;CACjC,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAgKtC,CAAA"}
@@ -1,14 +1,13 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  export * as PopupList from './PopupButtonList/index.js';
4
- import * as facelessUIImport from '@faceless-ui/window-info';
4
+ import { useWindowInfo } from '@faceless-ui/window-info';
5
5
  import React, { useCallback, useEffect, useRef, useState } from 'react';
6
6
  import { useIntersect } from '../../hooks/useIntersect.js';
7
7
  import { PopupTrigger } from './PopupTrigger/index.js';
8
8
  const baseClass = 'popup';
9
9
  export const Popup = (props)=>{
10
10
  const { boundingRef, button, buttonClassName, buttonType = 'default', caret = true, children, className, forceOpen, horizontalAlign: horizontalAlignFromProps = 'left', initActive = false, onToggleOpen, render, showOnHover = false, showScrollbar = false, size = 'medium', verticalAlign: verticalAlignFromProps = 'top' } = props;
11
- const { useWindowInfo } = facelessUIImport;
12
11
  const { height: windowHeight, width: windowWidth } = useWindowInfo();
13
12
  const [intersectionRef, intersectionEntry] = useIntersect({
14
13
  root: boundingRef?.current || null,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/Popup/index.tsx"],"sourcesContent":["'use client'\nimport type { CSSProperties } from 'react'\n\nexport * as PopupList from './PopupButtonList/index.js'\n\nimport * as facelessUIImport from '@faceless-ui/window-info'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\n\nimport { useIntersect } from '../../hooks/useIntersect.js'\nimport { PopupTrigger } from './PopupTrigger/index.js'\nimport './index.scss'\n\nconst baseClass = 'popup'\n\nexport type PopupProps = {\n backgroundColor?: CSSProperties['backgroundColor']\n boundingRef?: React.MutableRefObject<HTMLElement>\n button?: React.ReactNode\n buttonClassName?: string\n buttonType?: 'custom' | 'default' | 'none'\n caret?: boolean\n children?: React.ReactNode\n className?: string\n forceOpen?: boolean\n horizontalAlign?: 'center' | 'left' | 'right'\n initActive?: boolean\n onToggleOpen?: (active: boolean) => void\n render?: (any) => React.ReactNode\n showOnHover?: boolean\n showScrollbar?: boolean\n size?: 'fit-content' | 'large' | 'medium' | 'small'\n verticalAlign?: 'bottom' | 'top'\n}\n\nexport const Popup: React.FC<PopupProps> = (props) => {\n const {\n boundingRef,\n button,\n buttonClassName,\n buttonType = 'default',\n caret = true,\n children,\n className,\n forceOpen,\n horizontalAlign: horizontalAlignFromProps = 'left',\n initActive = false,\n onToggleOpen,\n render,\n showOnHover = false,\n showScrollbar = false,\n size = 'medium',\n verticalAlign: verticalAlignFromProps = 'top',\n } = props\n const { useWindowInfo } = facelessUIImport\n\n const { height: windowHeight, width: windowWidth } = useWindowInfo()\n const [intersectionRef, intersectionEntry] = useIntersect({\n root: boundingRef?.current || null,\n rootMargin: '-100px 0px 0px 0px',\n threshold: 1,\n })\n\n const contentRef = useRef(null)\n const [active, setActive] = useState(initActive)\n const [verticalAlign, setVerticalAlign] = useState(verticalAlignFromProps)\n const [horizontalAlign, setHorizontalAlign] = useState(horizontalAlignFromProps)\n\n const setPosition = useCallback(\n ({ horizontal = false, vertical = false }) => {\n if (contentRef.current) {\n const bounds = contentRef.current.getBoundingClientRect()\n\n const {\n bottom: contentBottomPos,\n left: contentLeftPos,\n right: contentRightPos,\n top: contentTopPos,\n } = bounds\n\n let boundingTopPos = 100\n let boundingRightPos = document.documentElement.clientWidth\n let boundingBottomPos = document.documentElement.clientHeight\n let boundingLeftPos = 0\n\n if (boundingRef?.current) {\n ;({\n bottom: boundingBottomPos,\n left: boundingLeftPos,\n right: boundingRightPos,\n top: boundingTopPos,\n } = boundingRef.current.getBoundingClientRect())\n }\n\n if (horizontal) {\n if (contentRightPos > boundingRightPos && contentLeftPos > boundingLeftPos) {\n setHorizontalAlign('right')\n } else if (contentLeftPos < boundingLeftPos && contentRightPos < boundingRightPos) {\n setHorizontalAlign('left')\n }\n }\n\n if (vertical) {\n if (contentTopPos < boundingTopPos && contentBottomPos < boundingBottomPos) {\n setVerticalAlign('bottom')\n } else if (contentBottomPos > boundingBottomPos && contentTopPos > boundingTopPos) {\n setVerticalAlign('top')\n }\n }\n }\n },\n [boundingRef],\n )\n\n const handleClickOutside = useCallback(\n (e) => {\n if (contentRef.current.contains(e.target)) {\n return\n }\n\n setActive(false)\n },\n [contentRef],\n )\n\n useEffect(() => {\n setPosition({ horizontal: true })\n }, [intersectionEntry, setPosition, windowWidth])\n\n useEffect(() => {\n setPosition({ vertical: true })\n }, [intersectionEntry, setPosition, windowHeight])\n\n useEffect(() => {\n if (typeof onToggleOpen === 'function') onToggleOpen(active)\n\n if (active) {\n document.addEventListener('mousedown', handleClickOutside)\n } else {\n document.removeEventListener('mousedown', handleClickOutside)\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [active, handleClickOutside, onToggleOpen])\n\n useEffect(() => {\n setActive(forceOpen)\n }, [forceOpen])\n\n const classes = [\n baseClass,\n className,\n `${baseClass}--size-${size}`,\n `${baseClass}--v-align-${verticalAlign}`,\n `${baseClass}--h-align-${horizontalAlign}`,\n active && `${baseClass}--active`,\n showScrollbar && `${baseClass}--show-scrollbar`,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <div className={classes}>\n <div className={`${baseClass}__trigger-wrap`}>\n {showOnHover ? (\n <div\n className={`${baseClass}__on-hover-watch`}\n onMouseEnter={() => setActive(true)}\n onMouseLeave={() => setActive(false)}\n >\n <PopupTrigger\n {...{ active, button, buttonType, className: buttonClassName, setActive }}\n />\n </div>\n ) : (\n <PopupTrigger\n {...{ active, button, buttonType, className: buttonClassName, setActive }}\n />\n )}\n </div>\n\n <div className={`${baseClass}__content`} ref={contentRef}>\n <div className={`${baseClass}__hide-scrollbar`} ref={intersectionRef}>\n <div className={`${baseClass}__scroll-container`}>\n <div className={`${baseClass}__scroll-content`}>\n {render && render({ close: () => setActive(false) })}\n {children && children}\n </div>\n </div>\n </div>\n\n {caret && <div className={`${baseClass}__caret`} />}\n </div>\n </div>\n )\n}\n"],"names":["PopupList","facelessUIImport","React","useCallback","useEffect","useRef","useState","useIntersect","PopupTrigger","baseClass","Popup","props","boundingRef","button","buttonClassName","buttonType","caret","children","className","forceOpen","horizontalAlign","horizontalAlignFromProps","initActive","onToggleOpen","render","showOnHover","showScrollbar","size","verticalAlign","verticalAlignFromProps","useWindowInfo","height","windowHeight","width","windowWidth","intersectionRef","intersectionEntry","root","current","rootMargin","threshold","contentRef","active","setActive","setVerticalAlign","setHorizontalAlign","setPosition","horizontal","vertical","bounds","getBoundingClientRect","bottom","contentBottomPos","left","contentLeftPos","right","contentRightPos","top","contentTopPos","boundingTopPos","boundingRightPos","document","documentElement","clientWidth","boundingBottomPos","clientHeight","boundingLeftPos","handleClickOutside","e","contains","target","addEventListener","removeEventListener","classes","filter","Boolean","join","div","onMouseEnter","onMouseLeave","ref","close"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../src/elements/Popup/index.tsx"],"sourcesContent":["'use client'\nimport type { CSSProperties } from 'react'\n\nexport * as PopupList from './PopupButtonList/index.js'\n\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\n\nimport { useIntersect } from '../../hooks/useIntersect.js'\nimport { PopupTrigger } from './PopupTrigger/index.js'\nimport './index.scss'\n\nconst baseClass = 'popup'\n\nexport type PopupProps = {\n backgroundColor?: CSSProperties['backgroundColor']\n boundingRef?: React.MutableRefObject<HTMLElement>\n button?: React.ReactNode\n buttonClassName?: string\n buttonType?: 'custom' | 'default' | 'none'\n caret?: boolean\n children?: React.ReactNode\n className?: string\n forceOpen?: boolean\n horizontalAlign?: 'center' | 'left' | 'right'\n initActive?: boolean\n onToggleOpen?: (active: boolean) => void\n render?: (any) => React.ReactNode\n showOnHover?: boolean\n showScrollbar?: boolean\n size?: 'fit-content' | 'large' | 'medium' | 'small'\n verticalAlign?: 'bottom' | 'top'\n}\n\nexport const Popup: React.FC<PopupProps> = (props) => {\n const {\n boundingRef,\n button,\n buttonClassName,\n buttonType = 'default',\n caret = true,\n children,\n className,\n forceOpen,\n horizontalAlign: horizontalAlignFromProps = 'left',\n initActive = false,\n onToggleOpen,\n render,\n showOnHover = false,\n showScrollbar = false,\n size = 'medium',\n verticalAlign: verticalAlignFromProps = 'top',\n } = props\n const { height: windowHeight, width: windowWidth } = useWindowInfo()\n const [intersectionRef, intersectionEntry] = useIntersect({\n root: boundingRef?.current || null,\n rootMargin: '-100px 0px 0px 0px',\n threshold: 1,\n })\n\n const contentRef = useRef(null)\n const [active, setActive] = useState(initActive)\n const [verticalAlign, setVerticalAlign] = useState(verticalAlignFromProps)\n const [horizontalAlign, setHorizontalAlign] = useState(horizontalAlignFromProps)\n\n const setPosition = useCallback(\n ({ horizontal = false, vertical = false }) => {\n if (contentRef.current) {\n const bounds = contentRef.current.getBoundingClientRect()\n\n const {\n bottom: contentBottomPos,\n left: contentLeftPos,\n right: contentRightPos,\n top: contentTopPos,\n } = bounds\n\n let boundingTopPos = 100\n let boundingRightPos = document.documentElement.clientWidth\n let boundingBottomPos = document.documentElement.clientHeight\n let boundingLeftPos = 0\n\n if (boundingRef?.current) {\n ;({\n bottom: boundingBottomPos,\n left: boundingLeftPos,\n right: boundingRightPos,\n top: boundingTopPos,\n } = boundingRef.current.getBoundingClientRect())\n }\n\n if (horizontal) {\n if (contentRightPos > boundingRightPos && contentLeftPos > boundingLeftPos) {\n setHorizontalAlign('right')\n } else if (contentLeftPos < boundingLeftPos && contentRightPos < boundingRightPos) {\n setHorizontalAlign('left')\n }\n }\n\n if (vertical) {\n if (contentTopPos < boundingTopPos && contentBottomPos < boundingBottomPos) {\n setVerticalAlign('bottom')\n } else if (contentBottomPos > boundingBottomPos && contentTopPos > boundingTopPos) {\n setVerticalAlign('top')\n }\n }\n }\n },\n [boundingRef],\n )\n\n const handleClickOutside = useCallback(\n (e) => {\n if (contentRef.current.contains(e.target)) {\n return\n }\n\n setActive(false)\n },\n [contentRef],\n )\n\n useEffect(() => {\n setPosition({ horizontal: true })\n }, [intersectionEntry, setPosition, windowWidth])\n\n useEffect(() => {\n setPosition({ vertical: true })\n }, [intersectionEntry, setPosition, windowHeight])\n\n useEffect(() => {\n if (typeof onToggleOpen === 'function') onToggleOpen(active)\n\n if (active) {\n document.addEventListener('mousedown', handleClickOutside)\n } else {\n document.removeEventListener('mousedown', handleClickOutside)\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [active, handleClickOutside, onToggleOpen])\n\n useEffect(() => {\n setActive(forceOpen)\n }, [forceOpen])\n\n const classes = [\n baseClass,\n className,\n `${baseClass}--size-${size}`,\n `${baseClass}--v-align-${verticalAlign}`,\n `${baseClass}--h-align-${horizontalAlign}`,\n active && `${baseClass}--active`,\n showScrollbar && `${baseClass}--show-scrollbar`,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <div className={classes}>\n <div className={`${baseClass}__trigger-wrap`}>\n {showOnHover ? (\n <div\n className={`${baseClass}__on-hover-watch`}\n onMouseEnter={() => setActive(true)}\n onMouseLeave={() => setActive(false)}\n >\n <PopupTrigger\n {...{ active, button, buttonType, className: buttonClassName, setActive }}\n />\n </div>\n ) : (\n <PopupTrigger\n {...{ active, button, buttonType, className: buttonClassName, setActive }}\n />\n )}\n </div>\n\n <div className={`${baseClass}__content`} ref={contentRef}>\n <div className={`${baseClass}__hide-scrollbar`} ref={intersectionRef}>\n <div className={`${baseClass}__scroll-container`}>\n <div className={`${baseClass}__scroll-content`}>\n {render && render({ close: () => setActive(false) })}\n {children && children}\n </div>\n </div>\n </div>\n\n {caret && <div className={`${baseClass}__caret`} />}\n </div>\n </div>\n )\n}\n"],"names":["PopupList","useWindowInfo","React","useCallback","useEffect","useRef","useState","useIntersect","PopupTrigger","baseClass","Popup","props","boundingRef","button","buttonClassName","buttonType","caret","children","className","forceOpen","horizontalAlign","horizontalAlignFromProps","initActive","onToggleOpen","render","showOnHover","showScrollbar","size","verticalAlign","verticalAlignFromProps","height","windowHeight","width","windowWidth","intersectionRef","intersectionEntry","root","current","rootMargin","threshold","contentRef","active","setActive","setVerticalAlign","setHorizontalAlign","setPosition","horizontal","vertical","bounds","getBoundingClientRect","bottom","contentBottomPos","left","contentLeftPos","right","contentRightPos","top","contentTopPos","boundingTopPos","boundingRightPos","document","documentElement","clientWidth","boundingBottomPos","clientHeight","boundingLeftPos","handleClickOutside","e","contains","target","addEventListener","removeEventListener","classes","filter","Boolean","join","div","onMouseEnter","onMouseLeave","ref","close"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/PublishMany/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAK3D,OAAO,KAAgC,MAAM,OAAO,CAAA;AAapD,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,EAAE,sBAAsB,CAAA;CACnC,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAwHlD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/PublishMany/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAK3D,OAAO,KAAgC,MAAM,OAAO,CAAA;AAapD,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,EAAE,sBAAsB,CAAA;CACnC,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAuHlD,CAAA"}
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import * as facelessUIImport from '@faceless-ui/modal';
3
+ import { Modal, useModal } from '@faceless-ui/modal';
4
4
  import { getTranslation } from '@payloadcms/translations';
5
5
  import { useRouter } from 'next/navigation.js';
6
6
  import React, { useCallback, useState } from 'react';
@@ -17,7 +17,6 @@ import { Button } from '../Button/index.js';
17
17
  import { Pill } from '../Pill/index.js';
18
18
  const baseClass = 'publish-many';
19
19
  export const PublishMany = (props)=>{
20
- const { Modal, useModal } = facelessUIImport;
21
20
  const { clearRouteCache } = useRouteCache();
22
21
  const { collection: { slug, labels: { plural }, versions } = {} } = props;
23
22
  const { routes: { api }, serverURL } = useConfig();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/PublishMany/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig } from 'payload/types'\n\nimport * as facelessUIImport from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport React, { useCallback, useState } from 'react'\nimport { toast } from 'react-toastify'\n\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { useSearchParams } from '../../providers/SearchParams/index.js'\nimport { SelectAllStatus, useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { MinimalTemplate } from '../../templates/Minimal/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { Button } from '../Button/index.js'\nimport { Pill } from '../Pill/index.js'\nimport './index.scss'\n\nconst baseClass = 'publish-many'\n\nexport type PublishManyProps = {\n collection: ClientCollectionConfig\n}\n\nexport const PublishMany: React.FC<PublishManyProps> = (props) => {\n const { Modal, useModal } = facelessUIImport\n const { clearRouteCache } = useRouteCache()\n\n const { collection: { slug, labels: { plural }, versions } = {} } = props\n\n const {\n routes: { api },\n serverURL,\n } = useConfig()\n const { permissions } = useAuth()\n const { toggleModal } = useModal()\n const { i18n, t } = useTranslation()\n const { getQueryParams, selectAll } = useSelection()\n const [submitted, setSubmitted] = useState(false)\n const router = useRouter()\n const { stringifyParams } = useSearchParams()\n\n const collectionPermissions = permissions?.collections?.[slug]\n const hasPermission = collectionPermissions?.update?.permission\n\n const modalSlug = `publish-${slug}`\n\n const addDefaultError = useCallback(() => {\n toast.error(t('error:unknown'))\n }, [t])\n\n const handlePublish = useCallback(async () => {\n setSubmitted(true)\n await requests\n .patch(\n `${serverURL}${api}/${slug}${getQueryParams({ _status: { not_equals: 'published' } })}&draft=true`,\n {\n body: JSON.stringify({\n _status: 'published',\n }),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n },\n )\n .then(async (res) => {\n try {\n const json = await res.json()\n toggleModal(modalSlug)\n if (res.status < 400) {\n toast.success(t('general:updatedSuccessfully'))\n router.replace(\n stringifyParams({\n params: {\n page: selectAll ? '1' : undefined,\n },\n }),\n )\n\n clearRouteCache()\n return null\n }\n\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n addDefaultError()\n }\n return false\n } catch (e) {\n return addDefaultError()\n }\n })\n }, [\n addDefaultError,\n api,\n getQueryParams,\n i18n.language,\n modalSlug,\n selectAll,\n serverURL,\n slug,\n t,\n toggleModal,\n router,\n stringifyParams,\n clearRouteCache,\n ])\n\n if (!versions?.drafts || selectAll === SelectAllStatus.None || !hasPermission) {\n return null\n }\n\n return (\n <React.Fragment>\n <Pill\n className={`${baseClass}__toggle`}\n onClick={() => {\n setSubmitted(false)\n toggleModal(modalSlug)\n }}\n >\n {t('version:publish')}\n </Pill>\n <Modal className={baseClass} slug={modalSlug}>\n <MinimalTemplate className={`${baseClass}__template`}>\n <h1>{t('version:confirmPublish')}</h1>\n <p>{t('version:aboutToPublishSelection', { label: getTranslation(plural, i18n) })}</p>\n <Button\n buttonStyle=\"secondary\"\n id=\"confirm-cancel\"\n onClick={submitted ? undefined : () => toggleModal(modalSlug)}\n type=\"button\"\n >\n {t('general:cancel')}\n </Button>\n <Button id=\"confirm-publish\" onClick={submitted ? undefined : handlePublish}>\n {submitted ? t('version:publishing') : t('general:confirm')}\n </Button>\n </MinimalTemplate>\n </Modal>\n </React.Fragment>\n )\n}\n"],"names":["facelessUIImport","getTranslation","useRouter","React","useCallback","useState","toast","useAuth","useConfig","useRouteCache","useSearchParams","SelectAllStatus","useSelection","useTranslation","MinimalTemplate","requests","Button","Pill","baseClass","PublishMany","props","Modal","useModal","clearRouteCache","collection","slug","labels","plural","versions","routes","api","serverURL","permissions","toggleModal","i18n","t","getQueryParams","selectAll","submitted","setSubmitted","router","stringifyParams","collectionPermissions","collections","hasPermission","update","permission","modalSlug","addDefaultError","error","handlePublish","patch","_status","not_equals","body","JSON","stringify","headers","language","then","res","json","status","success","replace","params","page","undefined","errors","forEach","message","e","drafts","None","Fragment","className","onClick","h1","p","label","buttonStyle","id","type"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../src/elements/PublishMany/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig } from 'payload/types'\n\nimport { Modal, useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport React, { useCallback, useState } from 'react'\nimport { toast } from 'react-toastify'\n\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { useSearchParams } from '../../providers/SearchParams/index.js'\nimport { SelectAllStatus, useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { MinimalTemplate } from '../../templates/Minimal/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { Button } from '../Button/index.js'\nimport { Pill } from '../Pill/index.js'\nimport './index.scss'\n\nconst baseClass = 'publish-many'\n\nexport type PublishManyProps = {\n collection: ClientCollectionConfig\n}\n\nexport const PublishMany: React.FC<PublishManyProps> = (props) => {\n const { clearRouteCache } = useRouteCache()\n\n const { collection: { slug, labels: { plural }, versions } = {} } = props\n\n const {\n routes: { api },\n serverURL,\n } = useConfig()\n const { permissions } = useAuth()\n const { toggleModal } = useModal()\n const { i18n, t } = useTranslation()\n const { getQueryParams, selectAll } = useSelection()\n const [submitted, setSubmitted] = useState(false)\n const router = useRouter()\n const { stringifyParams } = useSearchParams()\n\n const collectionPermissions = permissions?.collections?.[slug]\n const hasPermission = collectionPermissions?.update?.permission\n\n const modalSlug = `publish-${slug}`\n\n const addDefaultError = useCallback(() => {\n toast.error(t('error:unknown'))\n }, [t])\n\n const handlePublish = useCallback(async () => {\n setSubmitted(true)\n await requests\n .patch(\n `${serverURL}${api}/${slug}${getQueryParams({ _status: { not_equals: 'published' } })}&draft=true`,\n {\n body: JSON.stringify({\n _status: 'published',\n }),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n },\n )\n .then(async (res) => {\n try {\n const json = await res.json()\n toggleModal(modalSlug)\n if (res.status < 400) {\n toast.success(t('general:updatedSuccessfully'))\n router.replace(\n stringifyParams({\n params: {\n page: selectAll ? '1' : undefined,\n },\n }),\n )\n\n clearRouteCache()\n return null\n }\n\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n addDefaultError()\n }\n return false\n } catch (e) {\n return addDefaultError()\n }\n })\n }, [\n addDefaultError,\n api,\n getQueryParams,\n i18n.language,\n modalSlug,\n selectAll,\n serverURL,\n slug,\n t,\n toggleModal,\n router,\n stringifyParams,\n clearRouteCache,\n ])\n\n if (!versions?.drafts || selectAll === SelectAllStatus.None || !hasPermission) {\n return null\n }\n\n return (\n <React.Fragment>\n <Pill\n className={`${baseClass}__toggle`}\n onClick={() => {\n setSubmitted(false)\n toggleModal(modalSlug)\n }}\n >\n {t('version:publish')}\n </Pill>\n <Modal className={baseClass} slug={modalSlug}>\n <MinimalTemplate className={`${baseClass}__template`}>\n <h1>{t('version:confirmPublish')}</h1>\n <p>{t('version:aboutToPublishSelection', { label: getTranslation(plural, i18n) })}</p>\n <Button\n buttonStyle=\"secondary\"\n id=\"confirm-cancel\"\n onClick={submitted ? undefined : () => toggleModal(modalSlug)}\n type=\"button\"\n >\n {t('general:cancel')}\n </Button>\n <Button id=\"confirm-publish\" onClick={submitted ? undefined : handlePublish}>\n {submitted ? t('version:publishing') : t('general:confirm')}\n </Button>\n </MinimalTemplate>\n </Modal>\n </React.Fragment>\n )\n}\n"],"names":["Modal","useModal","getTranslation","useRouter","React","useCallback","useState","toast","useAuth","useConfig","useRouteCache","useSearchParams","SelectAllStatus","useSelection","useTranslation","MinimalTemplate","requests","Button","Pill","baseClass","PublishMany","props","clearRouteCache","collection","slug","labels","plural","versions","routes","api","serverURL","permissions","toggleModal","i18n","t","getQueryParams","selectAll","submitted","setSubmitted","router","stringifyParams","collectionPermissions","collections","hasPermission","update","permission","modalSlug","addDefaultError","error","handlePublish","patch","_status","not_equals","body","JSON","stringify","headers","language","then","res","json","status","success","replace","params","page","undefined","errors","forEach","message","e","drafts","None","Fragment","className","onClick","h1","p","label","buttonStyle","id","type"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Status/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAgC,MAAM,OAAO,CAAA;AAWpD,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAiM1B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Status/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAgC,MAAM,OAAO,CAAA;AAWpD,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EA+L1B,CAAA"}
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import * as facelessUIImport from '@faceless-ui/modal';
3
+ import { Modal, useModal } from '@faceless-ui/modal';
4
4
  import React, { useCallback, useState } from 'react';
5
5
  import { toast } from 'react-toastify';
6
6
  import { useForm } from '../../forms/Form/context.js';
@@ -13,7 +13,6 @@ import { requests } from '../../utilities/api.js';
13
13
  import { Button } from '../Button/index.js';
14
14
  const baseClass = 'status';
15
15
  export const Status = ()=>{
16
- const { Modal, useModal } = facelessUIImport;
17
16
  const { id, collectionSlug, docPermissions, getVersions, globalSlug, publishedDoc, unpublishedVersions } = useDocumentInfo();
18
17
  const { toggleModal } = useModal();
19
18
  const { routes: { api }, serverURL } = useConfig();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/Status/index.tsx"],"sourcesContent":["'use client'\nimport * as facelessUIImport from '@faceless-ui/modal'\nimport React, { useCallback, useState } from 'react'\nimport { toast } from 'react-toastify'\n\nimport { useForm } from '../../forms/Form/context.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { MinimalTemplate } from '../../templates/Minimal/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { Button } from '../Button/index.js'\nimport './index.scss'\n\nconst baseClass = 'status'\n\nexport const Status: React.FC = () => {\n const { Modal, useModal } = facelessUIImport\n\n const {\n id,\n collectionSlug,\n docPermissions,\n getVersions,\n globalSlug,\n publishedDoc,\n unpublishedVersions,\n } = useDocumentInfo()\n const { toggleModal } = useModal()\n const {\n routes: { api },\n serverURL,\n } = useConfig()\n const [processing, setProcessing] = useState(false)\n const { reset: resetForm } = useForm()\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n\n const unPublishModalSlug = `confirm-un-publish-${id}`\n const revertModalSlug = `confirm-revert-${id}`\n\n let statusToRender: 'changed' | 'draft' | 'published'\n\n if (unpublishedVersions?.docs?.length > 0 && publishedDoc) {\n statusToRender = 'changed'\n } else if (!publishedDoc) {\n statusToRender = 'draft'\n } else if (publishedDoc && unpublishedVersions?.docs?.length <= 1) {\n statusToRender = 'published'\n }\n\n const performAction = useCallback(\n async (action: 'revert' | 'unpublish') => {\n let url\n let method\n let body\n\n setProcessing(true)\n\n if (action === 'unpublish') {\n body = {\n _status: 'draft',\n }\n }\n\n if (action === 'revert') {\n body = publishedDoc\n }\n\n if (collectionSlug) {\n url = `${serverURL}${api}/${collectionSlug}/${id}?locale=${locale}&fallback-locale=null`\n method = 'patch'\n }\n if (globalSlug) {\n url = `${serverURL}${api}/globals/${globalSlug}?locale=${locale}&fallback-locale=null`\n method = 'post'\n }\n\n const res = await requests[method](url, {\n body: JSON.stringify(body),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n\n if (res.status === 200) {\n let data\n const json = await res.json()\n\n if (globalSlug) {\n data = json.result\n } else if (collectionSlug) {\n data = json.doc\n }\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n resetForm(data)\n toast.success(json.message)\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n getVersions()\n } else {\n toast.error(t('error:unPublishingDocument'))\n }\n\n setProcessing(false)\n if (action === 'revert') {\n toggleModal(revertModalSlug)\n }\n\n if (action === 'unpublish') {\n toggleModal(unPublishModalSlug)\n }\n },\n [\n api,\n collectionSlug,\n getVersions,\n globalSlug,\n i18n.language,\n id,\n locale,\n publishedDoc,\n resetForm,\n revertModalSlug,\n serverURL,\n t,\n toggleModal,\n unPublishModalSlug,\n ],\n )\n\n const canUpdate = docPermissions?.update?.permission\n\n if (statusToRender) {\n return (\n <div\n className={baseClass}\n title={`${t('version:status')}: ${t(`version:${statusToRender}`)}`}\n >\n <div className={`${baseClass}__value-wrap`}>\n <span className={`${baseClass}__label`}>{t('version:status')}:&nbsp;</span>\n <span className={`${baseClass}__value`}>{t(`version:${statusToRender}`)}</span>\n {canUpdate && statusToRender === 'published' && (\n <React.Fragment>\n &nbsp;&mdash;&nbsp;\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__action`}\n onClick={() => toggleModal(unPublishModalSlug)}\n >\n {t('version:unpublish')}\n </Button>\n <Modal className={`${baseClass}__modal`} slug={unPublishModalSlug}>\n <MinimalTemplate className={`${baseClass}__modal-template`}>\n <h1>{t('version:confirmUnpublish')}</h1>\n <p>{t('version:aboutToUnpublish')}</p>\n <Button\n buttonStyle=\"secondary\"\n onClick={processing ? undefined : () => toggleModal(unPublishModalSlug)}\n type=\"button\"\n >\n {t('general:cancel')}\n </Button>\n <Button onClick={processing ? undefined : () => performAction('unpublish')}>\n {t(processing ? 'version:unpublishing' : 'general:confirm')}\n </Button>\n </MinimalTemplate>\n </Modal>\n </React.Fragment>\n )}\n {canUpdate && statusToRender === 'changed' && (\n <React.Fragment>\n &nbsp;&mdash;&nbsp;\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__action`}\n id=\"action-revert-to-published\"\n onClick={() => toggleModal(revertModalSlug)}\n >\n {t('version:revertToPublished')}\n </Button>\n <Modal className={`${baseClass}__modal`} slug={revertModalSlug}>\n <MinimalTemplate className={`${baseClass}__modal-template`}>\n <h1>{t('version:confirmRevertToSaved')}</h1>\n <p>{t('version:aboutToRevertToPublished')}</p>\n <Button\n buttonStyle=\"secondary\"\n onClick={processing ? undefined : () => toggleModal(revertModalSlug)}\n type=\"button\"\n >\n {t('general:cancel')}\n </Button>\n <Button\n id=\"action-revert-to-published-confirm\"\n onClick={processing ? undefined : () => performAction('revert')}\n >\n {t(processing ? 'version:reverting' : 'general:confirm')}\n </Button>\n </MinimalTemplate>\n </Modal>\n </React.Fragment>\n )}\n </div>\n </div>\n )\n }\n\n return null\n}\n"],"names":["facelessUIImport","React","useCallback","useState","toast","useForm","useConfig","useDocumentInfo","useLocale","useTranslation","MinimalTemplate","requests","Button","baseClass","Status","Modal","useModal","id","collectionSlug","docPermissions","getVersions","globalSlug","publishedDoc","unpublishedVersions","toggleModal","routes","api","serverURL","processing","setProcessing","reset","resetForm","code","locale","i18n","t","unPublishModalSlug","revertModalSlug","statusToRender","docs","length","performAction","action","url","method","body","_status","res","JSON","stringify","headers","language","status","data","json","result","doc","success","message","error","canUpdate","update","permission","div","className","title","span","Fragment","buttonStyle","onClick","slug","h1","p","undefined","type"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../src/elements/Status/index.tsx"],"sourcesContent":["'use client'\nimport { Modal, useModal } from '@faceless-ui/modal'\nimport React, { useCallback, useState } from 'react'\nimport { toast } from 'react-toastify'\n\nimport { useForm } from '../../forms/Form/context.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { MinimalTemplate } from '../../templates/Minimal/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { Button } from '../Button/index.js'\nimport './index.scss'\n\nconst baseClass = 'status'\n\nexport const Status: React.FC = () => {\n const {\n id,\n collectionSlug,\n docPermissions,\n getVersions,\n globalSlug,\n publishedDoc,\n unpublishedVersions,\n } = useDocumentInfo()\n const { toggleModal } = useModal()\n const {\n routes: { api },\n serverURL,\n } = useConfig()\n const [processing, setProcessing] = useState(false)\n const { reset: resetForm } = useForm()\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n\n const unPublishModalSlug = `confirm-un-publish-${id}`\n const revertModalSlug = `confirm-revert-${id}`\n\n let statusToRender: 'changed' | 'draft' | 'published'\n\n if (unpublishedVersions?.docs?.length > 0 && publishedDoc) {\n statusToRender = 'changed'\n } else if (!publishedDoc) {\n statusToRender = 'draft'\n } else if (publishedDoc && unpublishedVersions?.docs?.length <= 1) {\n statusToRender = 'published'\n }\n\n const performAction = useCallback(\n async (action: 'revert' | 'unpublish') => {\n let url\n let method\n let body\n\n setProcessing(true)\n\n if (action === 'unpublish') {\n body = {\n _status: 'draft',\n }\n }\n\n if (action === 'revert') {\n body = publishedDoc\n }\n\n if (collectionSlug) {\n url = `${serverURL}${api}/${collectionSlug}/${id}?locale=${locale}&fallback-locale=null`\n method = 'patch'\n }\n if (globalSlug) {\n url = `${serverURL}${api}/globals/${globalSlug}?locale=${locale}&fallback-locale=null`\n method = 'post'\n }\n\n const res = await requests[method](url, {\n body: JSON.stringify(body),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n\n if (res.status === 200) {\n let data\n const json = await res.json()\n\n if (globalSlug) {\n data = json.result\n } else if (collectionSlug) {\n data = json.doc\n }\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n resetForm(data)\n toast.success(json.message)\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n getVersions()\n } else {\n toast.error(t('error:unPublishingDocument'))\n }\n\n setProcessing(false)\n if (action === 'revert') {\n toggleModal(revertModalSlug)\n }\n\n if (action === 'unpublish') {\n toggleModal(unPublishModalSlug)\n }\n },\n [\n api,\n collectionSlug,\n getVersions,\n globalSlug,\n i18n.language,\n id,\n locale,\n publishedDoc,\n resetForm,\n revertModalSlug,\n serverURL,\n t,\n toggleModal,\n unPublishModalSlug,\n ],\n )\n\n const canUpdate = docPermissions?.update?.permission\n\n if (statusToRender) {\n return (\n <div\n className={baseClass}\n title={`${t('version:status')}: ${t(`version:${statusToRender}`)}`}\n >\n <div className={`${baseClass}__value-wrap`}>\n <span className={`${baseClass}__label`}>{t('version:status')}:&nbsp;</span>\n <span className={`${baseClass}__value`}>{t(`version:${statusToRender}`)}</span>\n {canUpdate && statusToRender === 'published' && (\n <React.Fragment>\n &nbsp;&mdash;&nbsp;\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__action`}\n onClick={() => toggleModal(unPublishModalSlug)}\n >\n {t('version:unpublish')}\n </Button>\n <Modal className={`${baseClass}__modal`} slug={unPublishModalSlug}>\n <MinimalTemplate className={`${baseClass}__modal-template`}>\n <h1>{t('version:confirmUnpublish')}</h1>\n <p>{t('version:aboutToUnpublish')}</p>\n <Button\n buttonStyle=\"secondary\"\n onClick={processing ? undefined : () => toggleModal(unPublishModalSlug)}\n type=\"button\"\n >\n {t('general:cancel')}\n </Button>\n <Button onClick={processing ? undefined : () => performAction('unpublish')}>\n {t(processing ? 'version:unpublishing' : 'general:confirm')}\n </Button>\n </MinimalTemplate>\n </Modal>\n </React.Fragment>\n )}\n {canUpdate && statusToRender === 'changed' && (\n <React.Fragment>\n &nbsp;&mdash;&nbsp;\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__action`}\n id=\"action-revert-to-published\"\n onClick={() => toggleModal(revertModalSlug)}\n >\n {t('version:revertToPublished')}\n </Button>\n <Modal className={`${baseClass}__modal`} slug={revertModalSlug}>\n <MinimalTemplate className={`${baseClass}__modal-template`}>\n <h1>{t('version:confirmRevertToSaved')}</h1>\n <p>{t('version:aboutToRevertToPublished')}</p>\n <Button\n buttonStyle=\"secondary\"\n onClick={processing ? undefined : () => toggleModal(revertModalSlug)}\n type=\"button\"\n >\n {t('general:cancel')}\n </Button>\n <Button\n id=\"action-revert-to-published-confirm\"\n onClick={processing ? undefined : () => performAction('revert')}\n >\n {t(processing ? 'version:reverting' : 'general:confirm')}\n </Button>\n </MinimalTemplate>\n </Modal>\n </React.Fragment>\n )}\n </div>\n </div>\n )\n }\n\n return null\n}\n"],"names":["Modal","useModal","React","useCallback","useState","toast","useForm","useConfig","useDocumentInfo","useLocale","useTranslation","MinimalTemplate","requests","Button","baseClass","Status","id","collectionSlug","docPermissions","getVersions","globalSlug","publishedDoc","unpublishedVersions","toggleModal","routes","api","serverURL","processing","setProcessing","reset","resetForm","code","locale","i18n","t","unPublishModalSlug","revertModalSlug","statusToRender","docs","length","performAction","action","url","method","body","_status","res","JSON","stringify","headers","language","status","data","json","result","doc","success","message","error","canUpdate","update","permission","div","className","title","span","Fragment","buttonStyle","onClick","slug","h1","p","undefined","type"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/StayLoggedIn/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,qBAAqB,mBAAmB,CAAA;AAErD,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EA6CrC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/StayLoggedIn/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,qBAAqB,mBAAmB,CAAA;AAErD,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EA4CrC,CAAA"}
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import * as facelessUIImport from '@faceless-ui/modal';
3
+ import { Modal, useModal } from '@faceless-ui/modal';
4
4
  // TODO: abstract the `next/navigation` dependency out from this component
5
5
  import { useRouter } from 'next/navigation.js';
6
6
  import React from 'react';
@@ -11,7 +11,6 @@ import { useTranslation } from '../../providers/Translation/index.js';
11
11
  const baseClass = 'stay-logged-in';
12
12
  export const stayLoggedInModalSlug = 'stay-logged-in';
13
13
  export const StayLoggedInModal = ()=>{
14
- const { Modal, useModal } = facelessUIImport;
15
14
  const { refreshCookie } = useAuth();
16
15
  const router = useRouter();
17
16
  const config = useConfig();