@strapi/admin 5.29.0 → 5.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/admin/src/components/FormInputs/String.js +2 -1
- package/dist/admin/admin/src/components/FormInputs/String.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/String.mjs +2 -1
- package/dist/admin/admin/src/components/FormInputs/String.mjs.map +1 -1
- package/dist/admin/admin/src/components/Theme.js +34 -1
- package/dist/admin/admin/src/components/Theme.js.map +1 -1
- package/dist/admin/admin/src/components/Theme.mjs +34 -1
- package/dist/admin/admin/src/components/Theme.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Login.js +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Login.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Login.mjs +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Login.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenName.js +1 -0
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenName.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenName.mjs +1 -0
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenName.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.mjs +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleForm.js +2 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleForm.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleForm.mjs +2 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/RoleForm.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs.map +1 -1
- package/dist/admin/admin/src/pages/UseCasePage.js +1 -0
- package/dist/admin/admin/src/pages/UseCasePage.js.map +1 -1
- package/dist/admin/admin/src/pages/UseCasePage.mjs +1 -0
- package/dist/admin/admin/src/pages/UseCasePage.mjs.map +1 -1
- package/dist/admin/admin/src/translations/en.json.js +4 -0
- package/dist/admin/admin/src/translations/en.json.js.map +1 -1
- package/dist/admin/admin/src/translations/en.json.mjs +4 -0
- package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
- package/dist/server/server/src/services/user.js +30 -0
- package/dist/server/server/src/services/user.js.map +1 -1
- package/dist/server/server/src/services/user.mjs +30 -0
- package/dist/server/server/src/services/user.mjs.map +1 -1
- package/dist/server/src/services/user.d.ts.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HomePage.mjs","sources":["../../../../../../admin/src/pages/Home/HomePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, Main } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { DragLayer, isWidgetDragItem } from '../../components/DragLayer';\nimport { GapDropZoneManager } from '../../components/GapDropZone';\nimport { GuidedTourHomepageOverview } from '../../components/GuidedTour/Overview';\nimport { Layouts } from '../../components/Layouts/Layout';\nimport { Page } from '../../components/PageHelpers';\nimport { WidgetResizeHandle } from '../../components/ResizeIndicator';\nimport { Widget } from '../../components/WidgetHelpers';\nimport { WidgetRoot } from '../../components/WidgetRoot';\nimport { useEnterprise } from '../../ee';\nimport { useAuth } from '../../features/Auth';\nimport { useStrapiApp } from '../../features/StrapiApp';\nimport { useWidgets } from '../../features/Widgets';\nimport { useGetHomepageLayoutQuery } from '../../services/homepage';\nimport { getWidgetElement, WIDGET_DATA_ATTRIBUTES } from '../../utils/widgetLayout';\nimport {\n applyHomepageLayout,\n createDefaultWidgetWidths,\n isLastWidgetInRow,\n canResizeBetweenWidgets,\n getWidgetWidth,\n} from '../../utils/widgetLayout';\n\nimport { AddWidgetModal } from './components/AddWidgetModal';\nimport { FreeTrialEndedModal } from './components/FreeTrialEndedModal';\nimport { FreeTrialWelcomeModal } from './components/FreeTrialWelcomeModal';\n\nimport type { WidgetWithUID } from '../../core/apis/Widgets';\n\n// Styled wrapper for the drag preview\nconst DragPreviewWrapper = styled.div<{ $maxWidth: string }>`\n max-width: ${(props) => props.$maxWidth};\n overflow: hidden;\n opacity: 0.9;\n border: 2px solid ${({ theme }) => theme.colors.primary500};\n border-radius: ${({ theme }) => theme.borderRadius};\n pointer-events: none;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * UnstableHomePageCe\n * -----------------------------------------------------------------------------------------------*/\n\nexport const WidgetComponent = ({\n component,\n columnWidth,\n}: {\n component: () => Promise<React.ComponentType>;\n columnWidth: number;\n}) => {\n const [loadedComponent, setLoadedComponent] = React.useState<React.ComponentType<{\n columnWidth?: number;\n }> | null>(null);\n\n React.useEffect(() => {\n const loadComponent = async () => {\n const resolvedComponent = await component();\n\n setLoadedComponent(() => resolvedComponent);\n };\n\n loadComponent();\n }, [component]);\n\n const Component = loadedComponent;\n\n if (!Component) {\n return <Widget.Loading />;\n }\n\n return <Component {...({ columnWidth } as Record<string, unknown>)} />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HomePageCE\n * -----------------------------------------------------------------------------------------------*/\n\nconst HomePageCE = () => {\n const { formatMessage } = useIntl();\n const user = useAuth('HomePageCE', (state) => state.user);\n const displayName = user?.firstname ?? user?.username ?? user?.email;\n const getAllWidgets = useStrapiApp('UnstableHomepageCe', (state) => state.widgets.getAll);\n const checkUserHasPermissions = useAuth('WidgetRoot', (state) => state.checkUserHasPermissions);\n const { data: homepageLayout, isLoading: _isLoadingLayout } = useGetHomepageLayoutQuery();\n const [filteredWidgets, setFilteredWidgets] = React.useState<WidgetWithUID[]>([]);\n const [allAvailableWidgets, setAllAvailableWidgets] = React.useState<WidgetWithUID[]>([]);\n const [loading, setLoading] = React.useState(true);\n const [isAddWidgetModalOpen, setIsAddWidgetModalOpen] = React.useState(false);\n\n // Use custom hook for widget management\n const {\n findWidget,\n deleteWidget,\n addWidget,\n moveWidget,\n columnWidths,\n setColumnWidths,\n handleWidgetResize,\n saveLayout,\n isDraggingWidget,\n draggedWidgetId,\n handleDragStart,\n handleDragEnd,\n } = useWidgets({\n filteredWidgets,\n setFilteredWidgets,\n });\n\n React.useEffect(() => {\n const checkWidgetsPermissions = async () => {\n const allWidgets = getAllWidgets();\n const authorizedWidgets = await Promise.all(\n allWidgets.map(async (widget) => {\n if (!widget.permissions || widget.permissions.length === 0) return true;\n const matchingPermissions = await checkUserHasPermissions(widget.permissions);\n return matchingPermissions.length >= widget.permissions.length;\n })\n );\n const authorizedWidgetsList = allWidgets.filter((_, i) => authorizedWidgets[i]);\n\n setAllAvailableWidgets(authorizedWidgetsList);\n setLoading(false);\n };\n\n checkWidgetsPermissions();\n }, [checkUserHasPermissions, getAllWidgets]);\n\n React.useEffect(() => {\n if (allAvailableWidgets.length === 0) return;\n\n // If user has customized the homepage layout, apply it\n if (homepageLayout && homepageLayout.widgets) {\n const { filteredWidgets, widths: homepageWidths } = applyHomepageLayout(\n allAvailableWidgets,\n homepageLayout\n );\n\n setFilteredWidgets(filteredWidgets);\n setColumnWidths(homepageWidths);\n } else {\n // Set default layout when no custom layout exists\n setFilteredWidgets(allAvailableWidgets);\n setColumnWidths(createDefaultWidgetWidths(allAvailableWidgets));\n }\n }, [homepageLayout, allAvailableWidgets, setColumnWidths]);\n\n const widgetLayout = React.useMemo(() => {\n return filteredWidgets.map((widget, index) => {\n const rightWidgetId = filteredWidgets[index + 1]?.uid;\n const widgetWidth = getWidgetWidth(columnWidths, widget.uid);\n const rightWidgetWidth = getWidgetWidth(columnWidths, rightWidgetId);\n\n return {\n widget,\n index,\n isLastInRow: isLastWidgetInRow(index, filteredWidgets, columnWidths),\n rightWidgetId,\n widgetWidth,\n rightWidgetWidth,\n canResize:\n rightWidgetId &&\n canResizeBetweenWidgets(widget.uid, rightWidgetId, columnWidths, filteredWidgets),\n };\n });\n }, [filteredWidgets, columnWidths]);\n\n return (\n <Layouts.Root>\n <Main>\n <Page.Title>\n {formatMessage({ id: 'HomePage.head.title', defaultMessage: 'Homepage' })}\n </Page.Title>\n <Layouts.Header\n title={formatMessage(\n { id: 'HomePage.header.title', defaultMessage: 'Hello {name}' },\n { name: displayName }\n )}\n subtitle={formatMessage({\n id: 'HomePage.header.subtitle',\n defaultMessage: 'Welcome to your administration panel',\n })}\n primaryAction={\n <Button\n variant=\"tertiary\"\n size=\"S\"\n startIcon={<Plus />}\n onClick={() => setIsAddWidgetModalOpen(true)}\n >\n {formatMessage({\n id: 'HomePage.addWidget.button',\n defaultMessage: 'Add Widget',\n })}\n </Button>\n }\n />\n <FreeTrialWelcomeModal />\n <FreeTrialEndedModal />\n <AddWidgetModal\n isOpen={isAddWidgetModalOpen}\n onClose={() => setIsAddWidgetModalOpen(false)}\n onAddWidget={addWidget}\n currentWidgets={filteredWidgets}\n availableWidgets={allAvailableWidgets}\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={8} paddingBottom={10}>\n <GuidedTourHomepageOverview />\n {loading ? (\n <Box position=\"absolute\" top={0} left={0} right={0} bottom={0}>\n <Page.Loading />\n </Box>\n ) : (\n <Box position=\"relative\" {...{ [WIDGET_DATA_ATTRIBUTES.GRID_CONTAINER]: true }}>\n <Grid.Root gap={5}>\n {widgetLayout.map(\n ({\n widget,\n isLastInRow,\n rightWidgetId,\n widgetWidth,\n rightWidgetWidth,\n canResize,\n }) => (\n <React.Fragment key={widget.uid}>\n <Grid.Item col={widgetWidth} s={12}>\n <WidgetRoot\n uid={widget.uid}\n title={widget.title}\n icon={widget.icon}\n link={widget.link}\n findWidget={findWidget}\n deleteWidget={deleteWidget}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n component={widget.component}\n >\n <WidgetComponent\n component={widget.component}\n columnWidth={widgetWidth}\n />\n </WidgetRoot>\n </Grid.Item>\n\n {!isLastInRow && canResize && rightWidgetId && (\n <WidgetResizeHandle\n key={`resize-${widget.uid}`}\n leftWidgetId={widget.uid}\n rightWidgetId={rightWidgetId}\n leftWidgetWidth={widgetWidth}\n rightWidgetWidth={rightWidgetWidth}\n onResize={handleWidgetResize}\n saveLayout={saveLayout}\n filteredWidgets={filteredWidgets}\n />\n )}\n </React.Fragment>\n )\n )}\n </Grid.Root>\n\n {isDraggingWidget && (\n <GapDropZoneManager\n filteredWidgets={filteredWidgets}\n columnWidths={columnWidths}\n draggedWidgetId={draggedWidgetId}\n moveWidget={moveWidget}\n />\n )}\n </Box>\n )}\n </Flex>\n </Layouts.Content>\n\n {/* Add the DragLayer to handle custom drag previews */}\n <DragLayer\n renderItem={({ type, item }) => {\n if (!isWidgetDragItem(item)) {\n return null;\n }\n\n const widgetElement = getWidgetElement(item.id);\n const maxWidth = `${widgetElement?.clientWidth}px`;\n\n return (\n <DragPreviewWrapper $maxWidth={maxWidth}>\n <WidgetRoot\n uid={item.id as WidgetWithUID['uid']}\n title={item.title || { id: `${item.id}`, defaultMessage: item.id }}\n icon={item.icon}\n link={item.link}\n >\n <WidgetComponent component={item.component} columnWidth={4} />\n </WidgetRoot>\n </DragPreviewWrapper>\n );\n }}\n />\n </Main>\n </Layouts.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HomePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst HomePage = () => {\n const Page = useEnterprise(\n HomePageCE,\n // eslint-disable-next-line import/no-cycle\n async () => (await import('../../../../ee/admin/src/pages/HomePage')).HomePageEE\n );\n\n // block rendering until the EE component is fully loaded\n if (!Page) {\n return null;\n }\n\n return <Page />;\n};\n\nexport { HomePage, HomePageCE };\n"],"names":["DragPreviewWrapper","styled","div","props","$maxWidth","theme","colors","primary500","borderRadius","WidgetComponent","component","columnWidth","loadedComponent","setLoadedComponent","React","useState","useEffect","loadComponent","resolvedComponent","Component","_jsx","Widget","Loading","HomePageCE","formatMessage","useIntl","user","useAuth","state","displayName","firstname","username","email","getAllWidgets","useStrapiApp","widgets","getAll","checkUserHasPermissions","data","homepageLayout","isLoading","_isLoadingLayout","useGetHomepageLayoutQuery","filteredWidgets","setFilteredWidgets","allAvailableWidgets","setAllAvailableWidgets","loading","setLoading","isAddWidgetModalOpen","setIsAddWidgetModalOpen","findWidget","deleteWidget","addWidget","moveWidget","columnWidths","setColumnWidths","handleWidgetResize","saveLayout","isDraggingWidget","draggedWidgetId","handleDragStart","handleDragEnd","useWidgets","checkWidgetsPermissions","allWidgets","authorizedWidgets","Promise","all","map","widget","permissions","length","matchingPermissions","authorizedWidgetsList","filter","_","i","widths","homepageWidths","applyHomepageLayout","createDefaultWidgetWidths","widgetLayout","useMemo","index","rightWidgetId","uid","widgetWidth","getWidgetWidth","rightWidgetWidth","isLastInRow","isLastWidgetInRow","canResize","canResizeBetweenWidgets","Layouts","Root","_jsxs","Main","Page","Title","id","defaultMessage","Header","title","name","subtitle","primaryAction","Button","variant","size","startIcon","Plus","onClick","FreeTrialWelcomeModal","FreeTrialEndedModal","AddWidgetModal","isOpen","onClose","onAddWidget","currentWidgets","availableWidgets","Content","Flex","direction","alignItems","gap","paddingBottom","GuidedTourHomepageOverview","Box","position","top","left","right","bottom","WIDGET_DATA_ATTRIBUTES","GRID_CONTAINER","Grid","Fragment","Item","col","s","WidgetRoot","icon","link","onDragStart","onDragEnd","WidgetResizeHandle","leftWidgetId","leftWidgetWidth","onResize","GapDropZoneManager","DragLayer","renderItem","type","item","isWidgetDragItem","widgetElement","getWidgetElement","maxWidth","clientWidth","HomePage","useEnterprise","HomePageEE"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"HomePage.mjs","sources":["../../../../../../admin/src/pages/Home/HomePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, Main } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { DragLayer, isWidgetDragItem } from '../../components/DragLayer';\nimport { GapDropZoneManager } from '../../components/GapDropZone';\nimport { GuidedTourHomepageOverview } from '../../components/GuidedTour/Overview';\nimport { Layouts } from '../../components/Layouts/Layout';\nimport { Page } from '../../components/PageHelpers';\nimport { WidgetResizeHandle } from '../../components/ResizeIndicator';\nimport { Widget } from '../../components/WidgetHelpers';\nimport { WidgetRoot } from '../../components/WidgetRoot';\nimport { useEnterprise } from '../../ee';\nimport { useAuth } from '../../features/Auth';\nimport { useStrapiApp } from '../../features/StrapiApp';\nimport { useWidgets } from '../../features/Widgets';\nimport { useGetHomepageLayoutQuery } from '../../services/homepage';\nimport {\n getWidgetElement,\n WIDGET_DATA_ATTRIBUTES,\n applyHomepageLayout,\n createDefaultWidgetWidths,\n isLastWidgetInRow,\n canResizeBetweenWidgets,\n getWidgetWidth,\n} from '../../utils/widgetLayout';\n\nimport { AddWidgetModal } from './components/AddWidgetModal';\nimport { FreeTrialEndedModal } from './components/FreeTrialEndedModal';\nimport { FreeTrialWelcomeModal } from './components/FreeTrialWelcomeModal';\n\nimport type { WidgetWithUID } from '../../core/apis/Widgets';\n\n// Styled wrapper for the drag preview\nconst DragPreviewWrapper = styled.div<{ $maxWidth: string }>`\n max-width: ${(props) => props.$maxWidth};\n overflow: hidden;\n opacity: 0.9;\n border: 2px solid ${({ theme }) => theme.colors.primary500};\n border-radius: ${({ theme }) => theme.borderRadius};\n pointer-events: none;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * UnstableHomePageCe\n * -----------------------------------------------------------------------------------------------*/\n\nexport const WidgetComponent = ({\n component,\n columnWidth,\n}: {\n component: () => Promise<React.ComponentType>;\n columnWidth: number;\n}) => {\n const [loadedComponent, setLoadedComponent] = React.useState<React.ComponentType<{\n columnWidth?: number;\n }> | null>(null);\n\n React.useEffect(() => {\n const loadComponent = async () => {\n const resolvedComponent = await component();\n\n setLoadedComponent(() => resolvedComponent);\n };\n\n loadComponent();\n }, [component]);\n\n const Component = loadedComponent;\n\n if (!Component) {\n return <Widget.Loading />;\n }\n\n return <Component {...({ columnWidth } as Record<string, unknown>)} />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HomePageCE\n * -----------------------------------------------------------------------------------------------*/\n\nconst HomePageCE = () => {\n const { formatMessage } = useIntl();\n const user = useAuth('HomePageCE', (state) => state.user);\n const displayName = user?.firstname ?? user?.username ?? user?.email;\n const getAllWidgets = useStrapiApp('UnstableHomepageCe', (state) => state.widgets.getAll);\n const checkUserHasPermissions = useAuth('WidgetRoot', (state) => state.checkUserHasPermissions);\n const { data: homepageLayout, isLoading: _isLoadingLayout } = useGetHomepageLayoutQuery();\n const [filteredWidgets, setFilteredWidgets] = React.useState<WidgetWithUID[]>([]);\n const [allAvailableWidgets, setAllAvailableWidgets] = React.useState<WidgetWithUID[]>([]);\n const [loading, setLoading] = React.useState(true);\n const [isAddWidgetModalOpen, setIsAddWidgetModalOpen] = React.useState(false);\n\n // Use custom hook for widget management\n const {\n findWidget,\n deleteWidget,\n addWidget,\n moveWidget,\n columnWidths,\n setColumnWidths,\n handleWidgetResize,\n saveLayout,\n isDraggingWidget,\n draggedWidgetId,\n handleDragStart,\n handleDragEnd,\n } = useWidgets({\n filteredWidgets,\n setFilteredWidgets,\n });\n\n React.useEffect(() => {\n const checkWidgetsPermissions = async () => {\n const allWidgets = getAllWidgets();\n const authorizedWidgets = await Promise.all(\n allWidgets.map(async (widget) => {\n if (!widget.permissions || widget.permissions.length === 0) return true;\n const matchingPermissions = await checkUserHasPermissions(widget.permissions);\n return matchingPermissions.length >= widget.permissions.length;\n })\n );\n const authorizedWidgetsList = allWidgets.filter((_, i) => authorizedWidgets[i]);\n\n setAllAvailableWidgets(authorizedWidgetsList);\n setLoading(false);\n };\n\n checkWidgetsPermissions();\n }, [checkUserHasPermissions, getAllWidgets]);\n\n React.useEffect(() => {\n if (allAvailableWidgets.length === 0) return;\n\n // If user has customized the homepage layout, apply it\n if (homepageLayout && homepageLayout.widgets) {\n const { filteredWidgets, widths: homepageWidths } = applyHomepageLayout(\n allAvailableWidgets,\n homepageLayout\n );\n\n setFilteredWidgets(filteredWidgets);\n setColumnWidths(homepageWidths);\n } else {\n // Set default layout when no custom layout exists\n setFilteredWidgets(allAvailableWidgets);\n setColumnWidths(createDefaultWidgetWidths(allAvailableWidgets));\n }\n }, [homepageLayout, allAvailableWidgets, setColumnWidths]);\n\n const widgetLayout = React.useMemo(() => {\n return filteredWidgets.map((widget, index) => {\n const rightWidgetId = filteredWidgets[index + 1]?.uid;\n const widgetWidth = getWidgetWidth(columnWidths, widget.uid);\n const rightWidgetWidth = getWidgetWidth(columnWidths, rightWidgetId);\n\n return {\n widget,\n index,\n isLastInRow: isLastWidgetInRow(index, filteredWidgets, columnWidths),\n rightWidgetId,\n widgetWidth,\n rightWidgetWidth,\n canResize:\n rightWidgetId &&\n canResizeBetweenWidgets(widget.uid, rightWidgetId, columnWidths, filteredWidgets),\n };\n });\n }, [filteredWidgets, columnWidths]);\n\n return (\n <Layouts.Root>\n <Main>\n <Page.Title>\n {formatMessage({ id: 'HomePage.head.title', defaultMessage: 'Homepage' })}\n </Page.Title>\n <Layouts.Header\n title={formatMessage(\n { id: 'HomePage.header.title', defaultMessage: 'Hello {name}' },\n { name: displayName }\n )}\n subtitle={formatMessage({\n id: 'HomePage.header.subtitle',\n defaultMessage: 'Welcome to your administration panel',\n })}\n primaryAction={\n <Button\n variant=\"tertiary\"\n size=\"S\"\n startIcon={<Plus />}\n onClick={() => setIsAddWidgetModalOpen(true)}\n >\n {formatMessage({\n id: 'HomePage.addWidget.button',\n defaultMessage: 'Add Widget',\n })}\n </Button>\n }\n />\n <FreeTrialWelcomeModal />\n <FreeTrialEndedModal />\n <AddWidgetModal\n isOpen={isAddWidgetModalOpen}\n onClose={() => setIsAddWidgetModalOpen(false)}\n onAddWidget={addWidget}\n currentWidgets={filteredWidgets}\n availableWidgets={allAvailableWidgets}\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={8} paddingBottom={10}>\n <GuidedTourHomepageOverview />\n {loading ? (\n <Box position=\"absolute\" top={0} left={0} right={0} bottom={0}>\n <Page.Loading />\n </Box>\n ) : (\n <Box position=\"relative\" {...{ [WIDGET_DATA_ATTRIBUTES.GRID_CONTAINER]: true }}>\n <Grid.Root gap={5}>\n {widgetLayout.map(\n ({\n widget,\n isLastInRow,\n rightWidgetId,\n widgetWidth,\n rightWidgetWidth,\n canResize,\n }) => (\n <React.Fragment key={widget.uid}>\n <Grid.Item col={widgetWidth} s={12}>\n <WidgetRoot\n uid={widget.uid}\n title={widget.title}\n icon={widget.icon}\n link={widget.link}\n findWidget={findWidget}\n deleteWidget={deleteWidget}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n component={widget.component}\n >\n <WidgetComponent\n component={widget.component}\n columnWidth={widgetWidth}\n />\n </WidgetRoot>\n </Grid.Item>\n\n {!isLastInRow && canResize && rightWidgetId && (\n <WidgetResizeHandle\n key={`resize-${widget.uid}`}\n leftWidgetId={widget.uid}\n rightWidgetId={rightWidgetId}\n leftWidgetWidth={widgetWidth}\n rightWidgetWidth={rightWidgetWidth}\n onResize={handleWidgetResize}\n saveLayout={saveLayout}\n filteredWidgets={filteredWidgets}\n />\n )}\n </React.Fragment>\n )\n )}\n </Grid.Root>\n\n {isDraggingWidget && (\n <GapDropZoneManager\n filteredWidgets={filteredWidgets}\n columnWidths={columnWidths}\n draggedWidgetId={draggedWidgetId}\n moveWidget={moveWidget}\n />\n )}\n </Box>\n )}\n </Flex>\n </Layouts.Content>\n\n {/* Add the DragLayer to handle custom drag previews */}\n <DragLayer\n renderItem={({ type, item }) => {\n if (!isWidgetDragItem(item)) {\n return null;\n }\n\n const widgetElement = getWidgetElement(item.id);\n const maxWidth = `${widgetElement?.clientWidth}px`;\n\n return (\n <DragPreviewWrapper $maxWidth={maxWidth}>\n <WidgetRoot\n uid={item.id as WidgetWithUID['uid']}\n title={item.title || { id: `${item.id}`, defaultMessage: item.id }}\n icon={item.icon}\n link={item.link}\n >\n <WidgetComponent component={item.component} columnWidth={4} />\n </WidgetRoot>\n </DragPreviewWrapper>\n );\n }}\n />\n </Main>\n </Layouts.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HomePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst HomePage = () => {\n const Page = useEnterprise(\n HomePageCE,\n // eslint-disable-next-line import/no-cycle\n async () => (await import('../../../../ee/admin/src/pages/HomePage')).HomePageEE\n );\n\n // block rendering until the EE component is fully loaded\n if (!Page) {\n return null;\n }\n\n return <Page />;\n};\n\nexport { HomePage, HomePageCE };\n"],"names":["DragPreviewWrapper","styled","div","props","$maxWidth","theme","colors","primary500","borderRadius","WidgetComponent","component","columnWidth","loadedComponent","setLoadedComponent","React","useState","useEffect","loadComponent","resolvedComponent","Component","_jsx","Widget","Loading","HomePageCE","formatMessage","useIntl","user","useAuth","state","displayName","firstname","username","email","getAllWidgets","useStrapiApp","widgets","getAll","checkUserHasPermissions","data","homepageLayout","isLoading","_isLoadingLayout","useGetHomepageLayoutQuery","filteredWidgets","setFilteredWidgets","allAvailableWidgets","setAllAvailableWidgets","loading","setLoading","isAddWidgetModalOpen","setIsAddWidgetModalOpen","findWidget","deleteWidget","addWidget","moveWidget","columnWidths","setColumnWidths","handleWidgetResize","saveLayout","isDraggingWidget","draggedWidgetId","handleDragStart","handleDragEnd","useWidgets","checkWidgetsPermissions","allWidgets","authorizedWidgets","Promise","all","map","widget","permissions","length","matchingPermissions","authorizedWidgetsList","filter","_","i","widths","homepageWidths","applyHomepageLayout","createDefaultWidgetWidths","widgetLayout","useMemo","index","rightWidgetId","uid","widgetWidth","getWidgetWidth","rightWidgetWidth","isLastInRow","isLastWidgetInRow","canResize","canResizeBetweenWidgets","Layouts","Root","_jsxs","Main","Page","Title","id","defaultMessage","Header","title","name","subtitle","primaryAction","Button","variant","size","startIcon","Plus","onClick","FreeTrialWelcomeModal","FreeTrialEndedModal","AddWidgetModal","isOpen","onClose","onAddWidget","currentWidgets","availableWidgets","Content","Flex","direction","alignItems","gap","paddingBottom","GuidedTourHomepageOverview","Box","position","top","left","right","bottom","WIDGET_DATA_ATTRIBUTES","GRID_CONTAINER","Grid","Fragment","Item","col","s","WidgetRoot","icon","link","onDragStart","onDragEnd","WidgetResizeHandle","leftWidgetId","leftWidgetWidth","onResize","GapDropZoneManager","DragLayer","renderItem","type","item","isWidgetDragItem","widgetElement","getWidgetElement","maxWidth","clientWidth","HomePage","useEnterprise","HomePageEE"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenName.js","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/TokenName.tsx"],"sourcesContent":["import { Field, TextInput, TextInputProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenNameProps extends Pick<TextInputProps, 'onChange' | 'value'> {\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n}\n\nexport const TokenName = ({ error, value, onChange, canEditInputs }: TokenNameProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Field.Root\n name=\"name\"\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'Settings.tokens.form.name',\n defaultMessage: 'Name',\n })}\n </Field.Label>\n <TextInput onChange={onChange} value={value} disabled={!canEditInputs} />\n <Field.Error />\n </Field.Root>\n );\n};\n"],"names":["TokenName","error","value","onChange","canEditInputs","formatMessage","useIntl","_jsxs","Field","Root","name","isErrorMessageMessageDescriptor","id","defaultMessage","undefined","required","_jsx","Label","TextInput","disabled","Error"],"mappings":";;;;;;;AAUO,MAAMA,SAAY,GAAA,CAAC,EAAEC,KAAK,EAAEC,KAAK,EAAEC,QAAQ,EAAEC,aAAa,EAAkB,GAAA;IACjF,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAE1B,qBACEC,eAAA,CAACC,mBAAMC,IAAI,EAAA;QACTC,IAAK,EAAA,MAAA;AACLT,QAAAA,KAAAA,EACEA,KACII,GAAAA,aAAAA,CACEM,qCAAgCV,CAAAA,KAAAA,CAAAA,GAASA,KAAQ,GAAA;YAAEW,EAAIX,EAAAA,KAAAA;YAAOY,cAAgBZ,EAAAA;SAEhFa,CAAAA,GAAAA,SAAAA;QAENC,QAAQ,EAAA,IAAA;;AAER,0BAAAC,cAAA,CAACR,mBAAMS,KAAK,EAAA;0BACTZ,aAAc,CAAA;oBACbO,EAAI,EAAA,2BAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA;;0BAEFG,cAACE,CAAAA,sBAAAA,EAAAA;
|
|
1
|
+
{"version":3,"file":"TokenName.js","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/TokenName.tsx"],"sourcesContent":["import { Field, TextInput, TextInputProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenNameProps extends Pick<TextInputProps, 'onChange' | 'value'> {\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n}\n\nexport const TokenName = ({ error, value, onChange, canEditInputs }: TokenNameProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Field.Root\n name=\"name\"\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'Settings.tokens.form.name',\n defaultMessage: 'Name',\n })}\n </Field.Label>\n <TextInput type=\"text\" onChange={onChange} value={value} disabled={!canEditInputs} />\n <Field.Error />\n </Field.Root>\n );\n};\n"],"names":["TokenName","error","value","onChange","canEditInputs","formatMessage","useIntl","_jsxs","Field","Root","name","isErrorMessageMessageDescriptor","id","defaultMessage","undefined","required","_jsx","Label","TextInput","type","disabled","Error"],"mappings":";;;;;;;AAUO,MAAMA,SAAY,GAAA,CAAC,EAAEC,KAAK,EAAEC,KAAK,EAAEC,QAAQ,EAAEC,aAAa,EAAkB,GAAA;IACjF,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAE1B,qBACEC,eAAA,CAACC,mBAAMC,IAAI,EAAA;QACTC,IAAK,EAAA,MAAA;AACLT,QAAAA,KAAAA,EACEA,KACII,GAAAA,aAAAA,CACEM,qCAAgCV,CAAAA,KAAAA,CAAAA,GAASA,KAAQ,GAAA;YAAEW,EAAIX,EAAAA,KAAAA;YAAOY,cAAgBZ,EAAAA;SAEhFa,CAAAA,GAAAA,SAAAA;QAENC,QAAQ,EAAA,IAAA;;AAER,0BAAAC,cAAA,CAACR,mBAAMS,KAAK,EAAA;0BACTZ,aAAc,CAAA;oBACbO,EAAI,EAAA,2BAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA;;0BAEFG,cAACE,CAAAA,sBAAAA,EAAAA;gBAAUC,IAAK,EAAA,MAAA;gBAAOhB,QAAUA,EAAAA,QAAAA;gBAAUD,KAAOA,EAAAA,KAAAA;AAAOkB,gBAAAA,QAAAA,EAAU,CAAChB;;AACpE,0BAAAY,cAAA,CAACR,mBAAMa,KAAK,EAAA,EAAA;;;AAGlB;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenName.mjs","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/TokenName.tsx"],"sourcesContent":["import { Field, TextInput, TextInputProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenNameProps extends Pick<TextInputProps, 'onChange' | 'value'> {\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n}\n\nexport const TokenName = ({ error, value, onChange, canEditInputs }: TokenNameProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Field.Root\n name=\"name\"\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'Settings.tokens.form.name',\n defaultMessage: 'Name',\n })}\n </Field.Label>\n <TextInput onChange={onChange} value={value} disabled={!canEditInputs} />\n <Field.Error />\n </Field.Root>\n );\n};\n"],"names":["TokenName","error","value","onChange","canEditInputs","formatMessage","useIntl","_jsxs","Field","Root","name","isErrorMessageMessageDescriptor","id","defaultMessage","undefined","required","_jsx","Label","TextInput","disabled","Error"],"mappings":";;;;;AAUO,MAAMA,SAAY,GAAA,CAAC,EAAEC,KAAK,EAAEC,KAAK,EAAEC,QAAQ,EAAEC,aAAa,EAAkB,GAAA;IACjF,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAE1B,qBACEC,IAAA,CAACC,MAAMC,IAAI,EAAA;QACTC,IAAK,EAAA,MAAA;AACLT,QAAAA,KAAAA,EACEA,KACII,GAAAA,aAAAA,CACEM,+BAAgCV,CAAAA,KAAAA,CAAAA,GAASA,KAAQ,GAAA;YAAEW,EAAIX,EAAAA,KAAAA;YAAOY,cAAgBZ,EAAAA;SAEhFa,CAAAA,GAAAA,SAAAA;QAENC,QAAQ,EAAA,IAAA;;AAER,0BAAAC,GAAA,CAACR,MAAMS,KAAK,EAAA;0BACTZ,aAAc,CAAA;oBACbO,EAAI,EAAA,2BAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA;;0BAEFG,GAACE,CAAAA,SAAAA,EAAAA;
|
|
1
|
+
{"version":3,"file":"TokenName.mjs","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/TokenName.tsx"],"sourcesContent":["import { Field, TextInput, TextInputProps } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\ninterface TokenNameProps extends Pick<TextInputProps, 'onChange' | 'value'> {\n error?: string | MessageDescriptor;\n canEditInputs: boolean;\n}\n\nexport const TokenName = ({ error, value, onChange, canEditInputs }: TokenNameProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Field.Root\n name=\"name\"\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error) ? error : { id: error, defaultMessage: error }\n )\n : undefined\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'Settings.tokens.form.name',\n defaultMessage: 'Name',\n })}\n </Field.Label>\n <TextInput type=\"text\" onChange={onChange} value={value} disabled={!canEditInputs} />\n <Field.Error />\n </Field.Root>\n );\n};\n"],"names":["TokenName","error","value","onChange","canEditInputs","formatMessage","useIntl","_jsxs","Field","Root","name","isErrorMessageMessageDescriptor","id","defaultMessage","undefined","required","_jsx","Label","TextInput","type","disabled","Error"],"mappings":";;;;;AAUO,MAAMA,SAAY,GAAA,CAAC,EAAEC,KAAK,EAAEC,KAAK,EAAEC,QAAQ,EAAEC,aAAa,EAAkB,GAAA;IACjF,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAE1B,qBACEC,IAAA,CAACC,MAAMC,IAAI,EAAA;QACTC,IAAK,EAAA,MAAA;AACLT,QAAAA,KAAAA,EACEA,KACII,GAAAA,aAAAA,CACEM,+BAAgCV,CAAAA,KAAAA,CAAAA,GAASA,KAAQ,GAAA;YAAEW,EAAIX,EAAAA,KAAAA;YAAOY,cAAgBZ,EAAAA;SAEhFa,CAAAA,GAAAA,SAAAA;QAENC,QAAQ,EAAA,IAAA;;AAER,0BAAAC,GAAA,CAACR,MAAMS,KAAK,EAAA;0BACTZ,aAAc,CAAA;oBACbO,EAAI,EAAA,2BAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA;;0BAEFG,GAACE,CAAAA,SAAAA,EAAAA;gBAAUC,IAAK,EAAA,MAAA;gBAAOhB,QAAUA,EAAAA,QAAAA;gBAAUD,KAAOA,EAAAA,KAAAA;AAAOkB,gBAAAA,QAAAA,EAAU,CAAChB;;AACpE,0BAAAY,GAAA,CAACR,MAAMa,KAAK,EAAA,EAAA;;;AAGlB;;;;"}
|
package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogoInput.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\nimport {\n Box,\n Button,\n ButtonProps,\n Card,\n CardAsset,\n CardBadge,\n CardBody,\n CardContent,\n CardHeader,\n CardSubtitle,\n CardTitle,\n CarouselActions,\n CarouselInput,\n CarouselInputProps,\n CarouselSlide,\n Field,\n Flex,\n IconButton,\n Modal,\n Tabs,\n TextInput,\n TextInputProps,\n Typography,\n} from '@strapi/design-system';\nimport { PlusCircle, Plus, ArrowClockwise } from '@strapi/icons';\nimport axios, { AxiosError } from 'axios';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { ConfigurationContextValue } from '../../../../../features/Configuration';\nimport { ACCEPTED_FORMAT, DIMENSION, SIZE } from '../utils/constants';\nimport { ImageAsset, ParsingFileError, parseFileMetadatas } from '../utils/files';\n\n/* -------------------------------------------------------------------------------------------------\n * LogoInputContext\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LogoInputContextValue {\n localImage: ImageAsset | undefined;\n goToStep: (step: Step) => void;\n onClose: () => void;\n setLocalImage: (asset: ImageAsset | undefined) => void;\n}\n\nconst [LogoInputContextProvider, useLogoInputContext] =\n createContext<LogoInputContextValue>('LogoInput');\n\n/* -------------------------------------------------------------------------------------------------\n * LogoInput\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LogoInputProps\n extends Pick<PendingLogoDialogProps, 'onChangeLogo'>,\n Pick<CarouselInputProps, 'label' | 'hint'> {\n canUpdate: boolean;\n customLogo?: ConfigurationContextValue['logos']['auth']['custom'];\n defaultLogo: string;\n}\n\ntype Step = 'pending' | 'upload' | undefined;\n\nconst LogoInput = ({\n canUpdate,\n customLogo,\n defaultLogo,\n hint,\n label,\n onChangeLogo,\n}: LogoInputProps) => {\n const [localImage, setLocalImage] = React.useState<ImageAsset | undefined>();\n const [currentStep, setCurrentStep] = React.useState<Step>();\n const { formatMessage } = useIntl();\n\n const handleClose = () => {\n setLocalImage(undefined);\n setCurrentStep(undefined);\n };\n\n return (\n <Modal.Root\n open={!!currentStep}\n onOpenChange={(state) => {\n if (state === false) {\n handleClose();\n }\n }}\n >\n <LogoInputContextProvider\n setLocalImage={setLocalImage}\n localImage={localImage}\n goToStep={setCurrentStep}\n onClose={handleClose}\n >\n <CarouselInput\n label={label}\n selectedSlide={0}\n hint={hint}\n // Carousel is used here for a single media,\n // we don't need previous and next labels but these props are required\n previousLabel=\"\"\n nextLabel=\"\"\n onNext={() => {}}\n onPrevious={() => {}}\n secondaryLabel={customLogo?.name || 'logo.png'}\n actions={\n <CarouselActions>\n <Modal.Trigger>\n <IconButton\n disabled={!canUpdate}\n onClick={() => setCurrentStep('upload')}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.change-action',\n defaultMessage: 'Change logo',\n })}\n >\n <Plus />\n </IconButton>\n </Modal.Trigger>\n {customLogo?.url && (\n <IconButton\n disabled={!canUpdate}\n onClick={() => onChangeLogo(null)}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.reset-action',\n defaultMessage: 'Reset logo',\n })}\n >\n <ArrowClockwise />\n </IconButton>\n )}\n </CarouselActions>\n }\n >\n <CarouselSlide\n label={formatMessage({\n id: 'Settings.application.customization.carousel-slide.label',\n defaultMessage: 'Logo slide',\n })}\n >\n <Box\n maxHeight=\"40%\"\n maxWidth=\"40%\"\n tag=\"img\"\n src={customLogo?.url || defaultLogo}\n alt={formatMessage({\n id: 'Settings.application.customization.carousel.title',\n defaultMessage: 'Logo',\n })}\n />\n </CarouselSlide>\n </CarouselInput>\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>\n {formatMessage(\n currentStep === 'upload'\n ? {\n id: 'Settings.application.customization.modal.upload',\n defaultMessage: 'Upload logo',\n }\n : {\n id: 'Settings.application.customization.modal.pending',\n defaultMessage: 'Pending logo',\n }\n )}\n </Modal.Title>\n </Modal.Header>\n {currentStep === 'upload' ? (\n <AddLogoDialog />\n ) : (\n <PendingLogoDialog onChangeLogo={onChangeLogo} />\n )}\n </Modal.Content>\n </LogoInputContextProvider>\n </Modal.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AddLogoDialog\n * -----------------------------------------------------------------------------------------------*/\n\nconst AddLogoDialog = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Tabs.Root variant=\"simple\" defaultValue=\"computer\">\n <Box paddingLeft={8} paddingRight={8}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'Settings.application.customization.modal.tab.label',\n defaultMessage: 'How do you want to upload your assets?',\n })}\n >\n <Tabs.Trigger value=\"computer\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-computer',\n defaultMessage: 'From computer',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"url\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-url',\n defaultMessage: 'From url',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n </Box>\n <Tabs.Content value=\"computer\">\n <ComputerForm />\n </Tabs.Content>\n <Tabs.Content value=\"url\">\n <URLForm />\n </Tabs.Content>\n </Tabs.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * URLForm\n * -----------------------------------------------------------------------------------------------*/\n\nconst URLForm = () => {\n const { formatMessage } = useIntl();\n const [logoUrl, setLogoUrl] = React.useState('');\n const [error, setError] = React.useState<string>();\n const { setLocalImage, goToStep, onClose } = useLogoInputContext('URLForm');\n\n const handleChange: TextInputProps['onChange'] = (e) => {\n setLogoUrl(e.target.value);\n };\n\n const handleSubmit: React.FormEventHandler<HTMLFormElement> = async (event) => {\n event.preventDefault();\n\n const data = new FormData(event.target as HTMLFormElement);\n\n const url = data.get('logo-url');\n\n if (!url) {\n return;\n }\n\n try {\n const res = await axios.get(url.toString(), { responseType: 'blob', timeout: 8000 });\n\n const file = new File([res.data], res.config.url ?? '', {\n type: res.headers['content-type'],\n });\n\n const asset = await parseFileMetadatas(file);\n\n setLocalImage(asset);\n goToStep('pending');\n } catch (err) {\n if (err instanceof AxiosError) {\n setError(\n formatMessage({\n id: 'Settings.application.customization.modal.upload.error-network',\n defaultMessage: 'Network error',\n })\n );\n } else if (err instanceof ParsingFileError) {\n setError(formatMessage(err.displayMessage, { size: SIZE, dimension: DIMENSION }));\n } else {\n throw err;\n }\n }\n };\n\n return (\n <form onSubmit={handleSubmit}>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Field.Root error={error} name=\"logo-url\">\n <Field.Label>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-url.input-label',\n defaultMessage: 'URL',\n })}\n </Field.Label>\n <TextInput onChange={handleChange} value={logoUrl} />\n <Field.Error />\n </Field.Root>\n </Box>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Button type=\"submit\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.next',\n defaultMessage: 'Next',\n })}\n </Button>\n </Modal.Footer>\n </form>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ComputerForm\n * -----------------------------------------------------------------------------------------------*/\n\nconst ComputerForm = () => {\n const { formatMessage } = useIntl();\n const [dragOver, setDragOver] = React.useState(false);\n const [fileError, setFileError] = React.useState<string>();\n const inputRef = React.useRef<HTMLInputElement>(null!);\n const id = React.useId();\n\n const { setLocalImage, goToStep, onClose } = useLogoInputContext('ComputerForm');\n\n const handleDragEnter = () => {\n setDragOver(true);\n };\n const handleDragLeave = () => {\n setDragOver(false);\n };\n\n const handleClick: ButtonProps['onClick'] = (e) => {\n e.preventDefault();\n inputRef.current.click();\n };\n\n const handleChange = async () => {\n handleDragLeave();\n\n if (!inputRef.current.files) {\n return;\n }\n\n const [file] = inputRef.current.files;\n\n try {\n const asset = await parseFileMetadatas(file);\n setLocalImage(asset);\n goToStep('pending');\n } catch (err) {\n if (err instanceof ParsingFileError) {\n setFileError(formatMessage(err.displayMessage, { size: SIZE, dimension: DIMENSION }));\n inputRef.current.focus();\n } else {\n throw err;\n }\n }\n };\n\n return (\n <>\n <form>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Field.Root name={id} error={fileError}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Flex\n paddingTop={9}\n paddingBottom={7}\n hasRadius\n justifyContent=\"center\"\n direction=\"column\"\n background={dragOver ? 'primary100' : 'neutral100'}\n borderColor={dragOver ? 'primary500' : fileError ? 'danger600' : 'neutral300'}\n borderStyle=\"dashed\"\n borderWidth=\"1px\"\n position=\"relative\"\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n >\n <PlusCircle fill=\"primary600\" width=\"6rem\" height=\"6rem\" aria-hidden />\n <Box paddingTop={3} paddingBottom={5}>\n <Typography variant=\"delta\" tag=\"label\" htmlFor={id}>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.drag-drop',\n defaultMessage: 'Drag and Drop here or',\n })}\n </Typography>\n </Box>\n <Box position=\"relative\">\n <FileInput\n accept={ACCEPTED_FORMAT.join(', ')}\n type=\"file\"\n name=\"files\"\n tabIndex={-1}\n onChange={handleChange}\n ref={inputRef}\n id={id}\n />\n </Box>\n <Button type=\"button\" onClick={handleClick}>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.cta.browse',\n defaultMessage: 'Browse files',\n })}\n </Button>\n <Box paddingTop={6}>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'Settings.application.customization.modal.upload.file-validation',\n defaultMessage:\n 'Max dimension: {dimension}x{dimension}, Max size: {size}KB',\n },\n { size: SIZE, dimension: DIMENSION }\n )}\n </Typography>\n </Box>\n </Flex>\n <Field.Error />\n </Flex>\n </Field.Root>\n </Box>\n </form>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n\nconst FileInput = styled(Field.Input)`\n opacity: 0;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 1;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * PendingLogoDialog\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PendingLogoDialogProps {\n onChangeLogo: (file: ImageAsset | null) => void;\n}\n\nconst PendingLogoDialog = ({ onChangeLogo }: PendingLogoDialogProps) => {\n const { formatMessage } = useIntl();\n const { localImage, setLocalImage, goToStep, onClose } = useLogoInputContext('PendingLogoDialog');\n\n const handleGoBack = () => {\n setLocalImage(undefined);\n goToStep('upload');\n };\n\n const handleUpload = () => {\n if (localImage) {\n onChangeLogo(localImage);\n }\n onClose();\n };\n\n return (\n <>\n <Modal.Body>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Flex justifyContent=\"space-between\" paddingBottom={6}>\n <Flex direction=\"column\" alignItems=\"flex-start\">\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.title',\n defaultMessage: 'Logo ready to upload',\n })}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral500\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.subtitle',\n defaultMessage: 'Manage the chosen logo before uploading it',\n })}\n </Typography>\n </Flex>\n <Button onClick={handleGoBack} variant=\"secondary\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.choose-another',\n defaultMessage: 'Choose another logo',\n })}\n </Button>\n </Flex>\n <Box maxWidth={`18rem`}>\n {localImage?.url ? <ImageCardAsset asset={localImage} /> : null}\n </Box>\n </Box>\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({\n id: 'Settings.application.customization.modal.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Modal.Close>\n <Button onClick={handleUpload}>\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.upload',\n defaultMessage: 'Upload logo',\n })}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ImageCardAsset\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ImageCardAssetProps {\n asset: ImageAsset;\n}\n\nconst ImageCardAsset = ({ asset }: ImageCardAssetProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Card>\n <CardHeader>\n <CardAsset size=\"S\" src={asset.url} />\n </CardHeader>\n <CardBody>\n <CardContent>\n <CardTitle>{asset.name}</CardTitle>\n <CardSubtitle>\n {`${asset.ext?.toUpperCase()} - ${asset.width}✕${asset.height}`}\n </CardSubtitle>\n </CardContent>\n <CardBadge>\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.card-badge',\n defaultMessage: 'image',\n })}\n </CardBadge>\n </CardBody>\n </Card>\n );\n};\n\nexport { LogoInput };\nexport type { LogoInputProps };\n"],"names":["LogoInputContextProvider","useLogoInputContext","createContext","LogoInput","canUpdate","customLogo","defaultLogo","hint","label","onChangeLogo","localImage","setLocalImage","React","useState","currentStep","setCurrentStep","formatMessage","useIntl","handleClose","undefined","_jsx","Modal","Root","open","onOpenChange","state","_jsxs","goToStep","onClose","CarouselInput","selectedSlide","previousLabel","nextLabel","onNext","onPrevious","secondaryLabel","name","actions","CarouselActions","Trigger","IconButton","disabled","onClick","id","defaultMessage","Plus","url","ArrowClockwise","CarouselSlide","Box","maxHeight","maxWidth","tag","src","alt","Content","Header","Title","AddLogoDialog","PendingLogoDialog","Tabs","variant","defaultValue","paddingLeft","paddingRight","List","aria-label","value","ComputerForm","URLForm","logoUrl","setLogoUrl","error","setError","handleChange","e","target","handleSubmit","event","preventDefault","data","FormData","get","res","axios","toString","responseType","timeout","file","File","config","type","headers","asset","parseFileMetadatas","err","AxiosError","ParsingFileError","displayMessage","size","SIZE","dimension","DIMENSION","form","onSubmit","paddingTop","paddingBottom","Field","Label","TextInput","onChange","Error","Footer","Button","dragOver","setDragOver","fileError","setFileError","inputRef","useRef","useId","handleDragEnter","handleDragLeave","handleClick","current","click","files","focus","_Fragment","Flex","direction","alignItems","gap","hasRadius","justifyContent","background","borderColor","borderStyle","borderWidth","position","onDragEnter","onDragLeave","PlusCircle","fill","width","height","aria-hidden","Typography","htmlFor","FileInput","accept","ACCEPTED_FORMAT","join","tabIndex","ref","textColor","styled","Input","handleGoBack","handleUpload","Body","fontWeight","ImageCardAsset","Close","Card","CardHeader","CardAsset","CardBody","CardContent","CardTitle","CardSubtitle","ext","toUpperCase","CardBadge"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LogoInput.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\nimport {\n Box,\n Button,\n ButtonProps,\n Card,\n CardAsset,\n CardBadge,\n CardBody,\n CardContent,\n CardHeader,\n CardSubtitle,\n CardTitle,\n CarouselActions,\n CarouselInput,\n CarouselInputProps,\n CarouselSlide,\n Field,\n Flex,\n IconButton,\n Modal,\n Tabs,\n TextInput,\n TextInputProps,\n Typography,\n} from '@strapi/design-system';\nimport { PlusCircle, Plus, ArrowClockwise } from '@strapi/icons';\nimport axios, { AxiosError } from 'axios';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { ConfigurationContextValue } from '../../../../../features/Configuration';\nimport { ACCEPTED_FORMAT, DIMENSION, SIZE } from '../utils/constants';\nimport { ImageAsset, ParsingFileError, parseFileMetadatas } from '../utils/files';\n\n/* -------------------------------------------------------------------------------------------------\n * LogoInputContext\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LogoInputContextValue {\n localImage: ImageAsset | undefined;\n goToStep: (step: Step) => void;\n onClose: () => void;\n setLocalImage: (asset: ImageAsset | undefined) => void;\n}\n\nconst [LogoInputContextProvider, useLogoInputContext] =\n createContext<LogoInputContextValue>('LogoInput');\n\n/* -------------------------------------------------------------------------------------------------\n * LogoInput\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LogoInputProps\n extends Pick<PendingLogoDialogProps, 'onChangeLogo'>,\n Pick<CarouselInputProps, 'label' | 'hint'> {\n canUpdate: boolean;\n customLogo?: ConfigurationContextValue['logos']['auth']['custom'];\n defaultLogo: string;\n}\n\ntype Step = 'pending' | 'upload' | undefined;\n\nconst LogoInput = ({\n canUpdate,\n customLogo,\n defaultLogo,\n hint,\n label,\n onChangeLogo,\n}: LogoInputProps) => {\n const [localImage, setLocalImage] = React.useState<ImageAsset | undefined>();\n const [currentStep, setCurrentStep] = React.useState<Step>();\n const { formatMessage } = useIntl();\n\n const handleClose = () => {\n setLocalImage(undefined);\n setCurrentStep(undefined);\n };\n\n return (\n <Modal.Root\n open={!!currentStep}\n onOpenChange={(state) => {\n if (state === false) {\n handleClose();\n }\n }}\n >\n <LogoInputContextProvider\n setLocalImage={setLocalImage}\n localImage={localImage}\n goToStep={setCurrentStep}\n onClose={handleClose}\n >\n <CarouselInput\n label={label}\n selectedSlide={0}\n hint={hint}\n // Carousel is used here for a single media,\n // we don't need previous and next labels but these props are required\n previousLabel=\"\"\n nextLabel=\"\"\n onNext={() => {}}\n onPrevious={() => {}}\n secondaryLabel={customLogo?.name || 'logo.png'}\n actions={\n <CarouselActions>\n <Modal.Trigger>\n <IconButton\n disabled={!canUpdate}\n onClick={() => setCurrentStep('upload')}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.change-action',\n defaultMessage: 'Change logo',\n })}\n >\n <Plus />\n </IconButton>\n </Modal.Trigger>\n {customLogo?.url && (\n <IconButton\n disabled={!canUpdate}\n onClick={() => onChangeLogo(null)}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.reset-action',\n defaultMessage: 'Reset logo',\n })}\n >\n <ArrowClockwise />\n </IconButton>\n )}\n </CarouselActions>\n }\n >\n <CarouselSlide\n label={formatMessage({\n id: 'Settings.application.customization.carousel-slide.label',\n defaultMessage: 'Logo slide',\n })}\n >\n <Box\n maxHeight=\"40%\"\n maxWidth=\"40%\"\n tag=\"img\"\n src={customLogo?.url || defaultLogo}\n alt={formatMessage({\n id: 'Settings.application.customization.carousel.title',\n defaultMessage: 'Logo',\n })}\n />\n </CarouselSlide>\n </CarouselInput>\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>\n {formatMessage(\n currentStep === 'upload'\n ? {\n id: 'Settings.application.customization.modal.upload',\n defaultMessage: 'Upload logo',\n }\n : {\n id: 'Settings.application.customization.modal.pending',\n defaultMessage: 'Pending logo',\n }\n )}\n </Modal.Title>\n </Modal.Header>\n {currentStep === 'upload' ? (\n <AddLogoDialog />\n ) : (\n <PendingLogoDialog onChangeLogo={onChangeLogo} />\n )}\n </Modal.Content>\n </LogoInputContextProvider>\n </Modal.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AddLogoDialog\n * -----------------------------------------------------------------------------------------------*/\n\nconst AddLogoDialog = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Tabs.Root variant=\"simple\" defaultValue=\"computer\">\n <Box paddingLeft={8} paddingRight={8}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'Settings.application.customization.modal.tab.label',\n defaultMessage: 'How do you want to upload your assets?',\n })}\n >\n <Tabs.Trigger value=\"computer\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-computer',\n defaultMessage: 'From computer',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"url\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-url',\n defaultMessage: 'From url',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n </Box>\n <Tabs.Content value=\"computer\">\n <ComputerForm />\n </Tabs.Content>\n <Tabs.Content value=\"url\">\n <URLForm />\n </Tabs.Content>\n </Tabs.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * URLForm\n * -----------------------------------------------------------------------------------------------*/\n\nconst URLForm = () => {\n const { formatMessage } = useIntl();\n const [logoUrl, setLogoUrl] = React.useState('');\n const [error, setError] = React.useState<string>();\n const { setLocalImage, goToStep, onClose } = useLogoInputContext('URLForm');\n\n const handleChange: TextInputProps['onChange'] = (e) => {\n setLogoUrl(e.target.value);\n };\n\n const handleSubmit: React.FormEventHandler<HTMLFormElement> = async (event) => {\n event.preventDefault();\n\n const data = new FormData(event.target as HTMLFormElement);\n\n const url = data.get('logo-url');\n\n if (!url) {\n return;\n }\n\n try {\n const res = await axios.get(url.toString(), { responseType: 'blob', timeout: 8000 });\n\n const file = new File([res.data], res.config.url ?? '', {\n type: res.headers['content-type'],\n });\n\n const asset = await parseFileMetadatas(file);\n\n setLocalImage(asset);\n goToStep('pending');\n } catch (err) {\n if (err instanceof AxiosError) {\n setError(\n formatMessage({\n id: 'Settings.application.customization.modal.upload.error-network',\n defaultMessage: 'Network error',\n })\n );\n } else if (err instanceof ParsingFileError) {\n setError(formatMessage(err.displayMessage, { size: SIZE, dimension: DIMENSION }));\n } else {\n throw err;\n }\n }\n };\n\n return (\n <form onSubmit={handleSubmit}>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Field.Root error={error} name=\"logo-url\">\n <Field.Label>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-url.input-label',\n defaultMessage: 'URL',\n })}\n </Field.Label>\n <TextInput type=\"url\" onChange={handleChange} value={logoUrl} />\n <Field.Error />\n </Field.Root>\n </Box>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Button type=\"submit\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.next',\n defaultMessage: 'Next',\n })}\n </Button>\n </Modal.Footer>\n </form>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ComputerForm\n * -----------------------------------------------------------------------------------------------*/\n\nconst ComputerForm = () => {\n const { formatMessage } = useIntl();\n const [dragOver, setDragOver] = React.useState(false);\n const [fileError, setFileError] = React.useState<string>();\n const inputRef = React.useRef<HTMLInputElement>(null!);\n const id = React.useId();\n\n const { setLocalImage, goToStep, onClose } = useLogoInputContext('ComputerForm');\n\n const handleDragEnter = () => {\n setDragOver(true);\n };\n const handleDragLeave = () => {\n setDragOver(false);\n };\n\n const handleClick: ButtonProps['onClick'] = (e) => {\n e.preventDefault();\n inputRef.current.click();\n };\n\n const handleChange = async () => {\n handleDragLeave();\n\n if (!inputRef.current.files) {\n return;\n }\n\n const [file] = inputRef.current.files;\n\n try {\n const asset = await parseFileMetadatas(file);\n setLocalImage(asset);\n goToStep('pending');\n } catch (err) {\n if (err instanceof ParsingFileError) {\n setFileError(formatMessage(err.displayMessage, { size: SIZE, dimension: DIMENSION }));\n inputRef.current.focus();\n } else {\n throw err;\n }\n }\n };\n\n return (\n <>\n <form>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Field.Root name={id} error={fileError}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Flex\n paddingTop={9}\n paddingBottom={7}\n hasRadius\n justifyContent=\"center\"\n direction=\"column\"\n background={dragOver ? 'primary100' : 'neutral100'}\n borderColor={dragOver ? 'primary500' : fileError ? 'danger600' : 'neutral300'}\n borderStyle=\"dashed\"\n borderWidth=\"1px\"\n position=\"relative\"\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n >\n <PlusCircle fill=\"primary600\" width=\"6rem\" height=\"6rem\" aria-hidden />\n <Box paddingTop={3} paddingBottom={5}>\n <Typography variant=\"delta\" tag=\"label\" htmlFor={id}>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.drag-drop',\n defaultMessage: 'Drag and Drop here or',\n })}\n </Typography>\n </Box>\n <Box position=\"relative\">\n <FileInput\n accept={ACCEPTED_FORMAT.join(', ')}\n type=\"file\"\n name=\"files\"\n tabIndex={-1}\n onChange={handleChange}\n ref={inputRef}\n id={id}\n />\n </Box>\n <Button type=\"button\" onClick={handleClick}>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.cta.browse',\n defaultMessage: 'Browse files',\n })}\n </Button>\n <Box paddingTop={6}>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'Settings.application.customization.modal.upload.file-validation',\n defaultMessage:\n 'Max dimension: {dimension}x{dimension}, Max size: {size}KB',\n },\n { size: SIZE, dimension: DIMENSION }\n )}\n </Typography>\n </Box>\n </Flex>\n <Field.Error />\n </Flex>\n </Field.Root>\n </Box>\n </form>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n\nconst FileInput = styled(Field.Input)`\n opacity: 0;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 1;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * PendingLogoDialog\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PendingLogoDialogProps {\n onChangeLogo: (file: ImageAsset | null) => void;\n}\n\nconst PendingLogoDialog = ({ onChangeLogo }: PendingLogoDialogProps) => {\n const { formatMessage } = useIntl();\n const { localImage, setLocalImage, goToStep, onClose } = useLogoInputContext('PendingLogoDialog');\n\n const handleGoBack = () => {\n setLocalImage(undefined);\n goToStep('upload');\n };\n\n const handleUpload = () => {\n if (localImage) {\n onChangeLogo(localImage);\n }\n onClose();\n };\n\n return (\n <>\n <Modal.Body>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Flex justifyContent=\"space-between\" paddingBottom={6}>\n <Flex direction=\"column\" alignItems=\"flex-start\">\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.title',\n defaultMessage: 'Logo ready to upload',\n })}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral500\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.subtitle',\n defaultMessage: 'Manage the chosen logo before uploading it',\n })}\n </Typography>\n </Flex>\n <Button onClick={handleGoBack} variant=\"secondary\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.choose-another',\n defaultMessage: 'Choose another logo',\n })}\n </Button>\n </Flex>\n <Box maxWidth={`18rem`}>\n {localImage?.url ? <ImageCardAsset asset={localImage} /> : null}\n </Box>\n </Box>\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({\n id: 'Settings.application.customization.modal.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Modal.Close>\n <Button onClick={handleUpload}>\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.upload',\n defaultMessage: 'Upload logo',\n })}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ImageCardAsset\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ImageCardAssetProps {\n asset: ImageAsset;\n}\n\nconst ImageCardAsset = ({ asset }: ImageCardAssetProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Card>\n <CardHeader>\n <CardAsset size=\"S\" src={asset.url} />\n </CardHeader>\n <CardBody>\n <CardContent>\n <CardTitle>{asset.name}</CardTitle>\n <CardSubtitle>\n {`${asset.ext?.toUpperCase()} - ${asset.width}✕${asset.height}`}\n </CardSubtitle>\n </CardContent>\n <CardBadge>\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.card-badge',\n defaultMessage: 'image',\n })}\n </CardBadge>\n </CardBody>\n </Card>\n );\n};\n\nexport { LogoInput };\nexport type { LogoInputProps };\n"],"names":["LogoInputContextProvider","useLogoInputContext","createContext","LogoInput","canUpdate","customLogo","defaultLogo","hint","label","onChangeLogo","localImage","setLocalImage","React","useState","currentStep","setCurrentStep","formatMessage","useIntl","handleClose","undefined","_jsx","Modal","Root","open","onOpenChange","state","_jsxs","goToStep","onClose","CarouselInput","selectedSlide","previousLabel","nextLabel","onNext","onPrevious","secondaryLabel","name","actions","CarouselActions","Trigger","IconButton","disabled","onClick","id","defaultMessage","Plus","url","ArrowClockwise","CarouselSlide","Box","maxHeight","maxWidth","tag","src","alt","Content","Header","Title","AddLogoDialog","PendingLogoDialog","Tabs","variant","defaultValue","paddingLeft","paddingRight","List","aria-label","value","ComputerForm","URLForm","logoUrl","setLogoUrl","error","setError","handleChange","e","target","handleSubmit","event","preventDefault","data","FormData","get","res","axios","toString","responseType","timeout","file","File","config","type","headers","asset","parseFileMetadatas","err","AxiosError","ParsingFileError","displayMessage","size","SIZE","dimension","DIMENSION","form","onSubmit","paddingTop","paddingBottom","Field","Label","TextInput","onChange","Error","Footer","Button","dragOver","setDragOver","fileError","setFileError","inputRef","useRef","useId","handleDragEnter","handleDragLeave","handleClick","current","click","files","focus","_Fragment","Flex","direction","alignItems","gap","hasRadius","justifyContent","background","borderColor","borderStyle","borderWidth","position","onDragEnter","onDragLeave","PlusCircle","fill","width","height","aria-hidden","Typography","htmlFor","FileInput","accept","ACCEPTED_FORMAT","join","tabIndex","ref","textColor","styled","Input","handleGoBack","handleUpload","Body","fontWeight","ImageCardAsset","Close","Card","CardHeader","CardAsset","CardBody","CardContent","CardTitle","CardSubtitle","ext","toUpperCase","CardBadge"],"mappings":"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"}
|
package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogoInput.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\nimport {\n Box,\n Button,\n ButtonProps,\n Card,\n CardAsset,\n CardBadge,\n CardBody,\n CardContent,\n CardHeader,\n CardSubtitle,\n CardTitle,\n CarouselActions,\n CarouselInput,\n CarouselInputProps,\n CarouselSlide,\n Field,\n Flex,\n IconButton,\n Modal,\n Tabs,\n TextInput,\n TextInputProps,\n Typography,\n} from '@strapi/design-system';\nimport { PlusCircle, Plus, ArrowClockwise } from '@strapi/icons';\nimport axios, { AxiosError } from 'axios';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { ConfigurationContextValue } from '../../../../../features/Configuration';\nimport { ACCEPTED_FORMAT, DIMENSION, SIZE } from '../utils/constants';\nimport { ImageAsset, ParsingFileError, parseFileMetadatas } from '../utils/files';\n\n/* -------------------------------------------------------------------------------------------------\n * LogoInputContext\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LogoInputContextValue {\n localImage: ImageAsset | undefined;\n goToStep: (step: Step) => void;\n onClose: () => void;\n setLocalImage: (asset: ImageAsset | undefined) => void;\n}\n\nconst [LogoInputContextProvider, useLogoInputContext] =\n createContext<LogoInputContextValue>('LogoInput');\n\n/* -------------------------------------------------------------------------------------------------\n * LogoInput\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LogoInputProps\n extends Pick<PendingLogoDialogProps, 'onChangeLogo'>,\n Pick<CarouselInputProps, 'label' | 'hint'> {\n canUpdate: boolean;\n customLogo?: ConfigurationContextValue['logos']['auth']['custom'];\n defaultLogo: string;\n}\n\ntype Step = 'pending' | 'upload' | undefined;\n\nconst LogoInput = ({\n canUpdate,\n customLogo,\n defaultLogo,\n hint,\n label,\n onChangeLogo,\n}: LogoInputProps) => {\n const [localImage, setLocalImage] = React.useState<ImageAsset | undefined>();\n const [currentStep, setCurrentStep] = React.useState<Step>();\n const { formatMessage } = useIntl();\n\n const handleClose = () => {\n setLocalImage(undefined);\n setCurrentStep(undefined);\n };\n\n return (\n <Modal.Root\n open={!!currentStep}\n onOpenChange={(state) => {\n if (state === false) {\n handleClose();\n }\n }}\n >\n <LogoInputContextProvider\n setLocalImage={setLocalImage}\n localImage={localImage}\n goToStep={setCurrentStep}\n onClose={handleClose}\n >\n <CarouselInput\n label={label}\n selectedSlide={0}\n hint={hint}\n // Carousel is used here for a single media,\n // we don't need previous and next labels but these props are required\n previousLabel=\"\"\n nextLabel=\"\"\n onNext={() => {}}\n onPrevious={() => {}}\n secondaryLabel={customLogo?.name || 'logo.png'}\n actions={\n <CarouselActions>\n <Modal.Trigger>\n <IconButton\n disabled={!canUpdate}\n onClick={() => setCurrentStep('upload')}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.change-action',\n defaultMessage: 'Change logo',\n })}\n >\n <Plus />\n </IconButton>\n </Modal.Trigger>\n {customLogo?.url && (\n <IconButton\n disabled={!canUpdate}\n onClick={() => onChangeLogo(null)}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.reset-action',\n defaultMessage: 'Reset logo',\n })}\n >\n <ArrowClockwise />\n </IconButton>\n )}\n </CarouselActions>\n }\n >\n <CarouselSlide\n label={formatMessage({\n id: 'Settings.application.customization.carousel-slide.label',\n defaultMessage: 'Logo slide',\n })}\n >\n <Box\n maxHeight=\"40%\"\n maxWidth=\"40%\"\n tag=\"img\"\n src={customLogo?.url || defaultLogo}\n alt={formatMessage({\n id: 'Settings.application.customization.carousel.title',\n defaultMessage: 'Logo',\n })}\n />\n </CarouselSlide>\n </CarouselInput>\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>\n {formatMessage(\n currentStep === 'upload'\n ? {\n id: 'Settings.application.customization.modal.upload',\n defaultMessage: 'Upload logo',\n }\n : {\n id: 'Settings.application.customization.modal.pending',\n defaultMessage: 'Pending logo',\n }\n )}\n </Modal.Title>\n </Modal.Header>\n {currentStep === 'upload' ? (\n <AddLogoDialog />\n ) : (\n <PendingLogoDialog onChangeLogo={onChangeLogo} />\n )}\n </Modal.Content>\n </LogoInputContextProvider>\n </Modal.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AddLogoDialog\n * -----------------------------------------------------------------------------------------------*/\n\nconst AddLogoDialog = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Tabs.Root variant=\"simple\" defaultValue=\"computer\">\n <Box paddingLeft={8} paddingRight={8}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'Settings.application.customization.modal.tab.label',\n defaultMessage: 'How do you want to upload your assets?',\n })}\n >\n <Tabs.Trigger value=\"computer\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-computer',\n defaultMessage: 'From computer',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"url\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-url',\n defaultMessage: 'From url',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n </Box>\n <Tabs.Content value=\"computer\">\n <ComputerForm />\n </Tabs.Content>\n <Tabs.Content value=\"url\">\n <URLForm />\n </Tabs.Content>\n </Tabs.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * URLForm\n * -----------------------------------------------------------------------------------------------*/\n\nconst URLForm = () => {\n const { formatMessage } = useIntl();\n const [logoUrl, setLogoUrl] = React.useState('');\n const [error, setError] = React.useState<string>();\n const { setLocalImage, goToStep, onClose } = useLogoInputContext('URLForm');\n\n const handleChange: TextInputProps['onChange'] = (e) => {\n setLogoUrl(e.target.value);\n };\n\n const handleSubmit: React.FormEventHandler<HTMLFormElement> = async (event) => {\n event.preventDefault();\n\n const data = new FormData(event.target as HTMLFormElement);\n\n const url = data.get('logo-url');\n\n if (!url) {\n return;\n }\n\n try {\n const res = await axios.get(url.toString(), { responseType: 'blob', timeout: 8000 });\n\n const file = new File([res.data], res.config.url ?? '', {\n type: res.headers['content-type'],\n });\n\n const asset = await parseFileMetadatas(file);\n\n setLocalImage(asset);\n goToStep('pending');\n } catch (err) {\n if (err instanceof AxiosError) {\n setError(\n formatMessage({\n id: 'Settings.application.customization.modal.upload.error-network',\n defaultMessage: 'Network error',\n })\n );\n } else if (err instanceof ParsingFileError) {\n setError(formatMessage(err.displayMessage, { size: SIZE, dimension: DIMENSION }));\n } else {\n throw err;\n }\n }\n };\n\n return (\n <form onSubmit={handleSubmit}>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Field.Root error={error} name=\"logo-url\">\n <Field.Label>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-url.input-label',\n defaultMessage: 'URL',\n })}\n </Field.Label>\n <TextInput onChange={handleChange} value={logoUrl} />\n <Field.Error />\n </Field.Root>\n </Box>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Button type=\"submit\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.next',\n defaultMessage: 'Next',\n })}\n </Button>\n </Modal.Footer>\n </form>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ComputerForm\n * -----------------------------------------------------------------------------------------------*/\n\nconst ComputerForm = () => {\n const { formatMessage } = useIntl();\n const [dragOver, setDragOver] = React.useState(false);\n const [fileError, setFileError] = React.useState<string>();\n const inputRef = React.useRef<HTMLInputElement>(null!);\n const id = React.useId();\n\n const { setLocalImage, goToStep, onClose } = useLogoInputContext('ComputerForm');\n\n const handleDragEnter = () => {\n setDragOver(true);\n };\n const handleDragLeave = () => {\n setDragOver(false);\n };\n\n const handleClick: ButtonProps['onClick'] = (e) => {\n e.preventDefault();\n inputRef.current.click();\n };\n\n const handleChange = async () => {\n handleDragLeave();\n\n if (!inputRef.current.files) {\n return;\n }\n\n const [file] = inputRef.current.files;\n\n try {\n const asset = await parseFileMetadatas(file);\n setLocalImage(asset);\n goToStep('pending');\n } catch (err) {\n if (err instanceof ParsingFileError) {\n setFileError(formatMessage(err.displayMessage, { size: SIZE, dimension: DIMENSION }));\n inputRef.current.focus();\n } else {\n throw err;\n }\n }\n };\n\n return (\n <>\n <form>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Field.Root name={id} error={fileError}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Flex\n paddingTop={9}\n paddingBottom={7}\n hasRadius\n justifyContent=\"center\"\n direction=\"column\"\n background={dragOver ? 'primary100' : 'neutral100'}\n borderColor={dragOver ? 'primary500' : fileError ? 'danger600' : 'neutral300'}\n borderStyle=\"dashed\"\n borderWidth=\"1px\"\n position=\"relative\"\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n >\n <PlusCircle fill=\"primary600\" width=\"6rem\" height=\"6rem\" aria-hidden />\n <Box paddingTop={3} paddingBottom={5}>\n <Typography variant=\"delta\" tag=\"label\" htmlFor={id}>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.drag-drop',\n defaultMessage: 'Drag and Drop here or',\n })}\n </Typography>\n </Box>\n <Box position=\"relative\">\n <FileInput\n accept={ACCEPTED_FORMAT.join(', ')}\n type=\"file\"\n name=\"files\"\n tabIndex={-1}\n onChange={handleChange}\n ref={inputRef}\n id={id}\n />\n </Box>\n <Button type=\"button\" onClick={handleClick}>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.cta.browse',\n defaultMessage: 'Browse files',\n })}\n </Button>\n <Box paddingTop={6}>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'Settings.application.customization.modal.upload.file-validation',\n defaultMessage:\n 'Max dimension: {dimension}x{dimension}, Max size: {size}KB',\n },\n { size: SIZE, dimension: DIMENSION }\n )}\n </Typography>\n </Box>\n </Flex>\n <Field.Error />\n </Flex>\n </Field.Root>\n </Box>\n </form>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n\nconst FileInput = styled(Field.Input)`\n opacity: 0;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 1;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * PendingLogoDialog\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PendingLogoDialogProps {\n onChangeLogo: (file: ImageAsset | null) => void;\n}\n\nconst PendingLogoDialog = ({ onChangeLogo }: PendingLogoDialogProps) => {\n const { formatMessage } = useIntl();\n const { localImage, setLocalImage, goToStep, onClose } = useLogoInputContext('PendingLogoDialog');\n\n const handleGoBack = () => {\n setLocalImage(undefined);\n goToStep('upload');\n };\n\n const handleUpload = () => {\n if (localImage) {\n onChangeLogo(localImage);\n }\n onClose();\n };\n\n return (\n <>\n <Modal.Body>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Flex justifyContent=\"space-between\" paddingBottom={6}>\n <Flex direction=\"column\" alignItems=\"flex-start\">\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.title',\n defaultMessage: 'Logo ready to upload',\n })}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral500\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.subtitle',\n defaultMessage: 'Manage the chosen logo before uploading it',\n })}\n </Typography>\n </Flex>\n <Button onClick={handleGoBack} variant=\"secondary\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.choose-another',\n defaultMessage: 'Choose another logo',\n })}\n </Button>\n </Flex>\n <Box maxWidth={`18rem`}>\n {localImage?.url ? <ImageCardAsset asset={localImage} /> : null}\n </Box>\n </Box>\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({\n id: 'Settings.application.customization.modal.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Modal.Close>\n <Button onClick={handleUpload}>\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.upload',\n defaultMessage: 'Upload logo',\n })}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ImageCardAsset\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ImageCardAssetProps {\n asset: ImageAsset;\n}\n\nconst ImageCardAsset = ({ asset }: ImageCardAssetProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Card>\n <CardHeader>\n <CardAsset size=\"S\" src={asset.url} />\n </CardHeader>\n <CardBody>\n <CardContent>\n <CardTitle>{asset.name}</CardTitle>\n <CardSubtitle>\n {`${asset.ext?.toUpperCase()} - ${asset.width}✕${asset.height}`}\n </CardSubtitle>\n </CardContent>\n <CardBadge>\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.card-badge',\n defaultMessage: 'image',\n })}\n </CardBadge>\n </CardBody>\n </Card>\n );\n};\n\nexport { LogoInput };\nexport type { LogoInputProps };\n"],"names":["LogoInputContextProvider","useLogoInputContext","createContext","LogoInput","canUpdate","customLogo","defaultLogo","hint","label","onChangeLogo","localImage","setLocalImage","React","useState","currentStep","setCurrentStep","formatMessage","useIntl","handleClose","undefined","_jsx","Modal","Root","open","onOpenChange","state","_jsxs","goToStep","onClose","CarouselInput","selectedSlide","previousLabel","nextLabel","onNext","onPrevious","secondaryLabel","name","actions","CarouselActions","Trigger","IconButton","disabled","onClick","id","defaultMessage","Plus","url","ArrowClockwise","CarouselSlide","Box","maxHeight","maxWidth","tag","src","alt","Content","Header","Title","AddLogoDialog","PendingLogoDialog","Tabs","variant","defaultValue","paddingLeft","paddingRight","List","aria-label","value","ComputerForm","URLForm","logoUrl","setLogoUrl","error","setError","handleChange","e","target","handleSubmit","event","preventDefault","data","FormData","get","res","axios","toString","responseType","timeout","file","File","config","type","headers","asset","parseFileMetadatas","err","AxiosError","ParsingFileError","displayMessage","size","SIZE","dimension","DIMENSION","form","onSubmit","paddingTop","paddingBottom","Field","Label","TextInput","onChange","Error","Footer","Button","dragOver","setDragOver","fileError","setFileError","inputRef","useRef","useId","handleDragEnter","handleDragLeave","handleClick","current","click","files","focus","_Fragment","Flex","direction","alignItems","gap","hasRadius","justifyContent","background","borderColor","borderStyle","borderWidth","position","onDragEnter","onDragLeave","PlusCircle","fill","width","height","aria-hidden","Typography","htmlFor","FileInput","accept","ACCEPTED_FORMAT","join","tabIndex","ref","textColor","styled","Input","handleGoBack","handleUpload","Body","fontWeight","ImageCardAsset","Close","Card","CardHeader","CardAsset","CardBody","CardContent","CardTitle","CardSubtitle","ext","toUpperCase","CardBadge"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LogoInput.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\nimport {\n Box,\n Button,\n ButtonProps,\n Card,\n CardAsset,\n CardBadge,\n CardBody,\n CardContent,\n CardHeader,\n CardSubtitle,\n CardTitle,\n CarouselActions,\n CarouselInput,\n CarouselInputProps,\n CarouselSlide,\n Field,\n Flex,\n IconButton,\n Modal,\n Tabs,\n TextInput,\n TextInputProps,\n Typography,\n} from '@strapi/design-system';\nimport { PlusCircle, Plus, ArrowClockwise } from '@strapi/icons';\nimport axios, { AxiosError } from 'axios';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { ConfigurationContextValue } from '../../../../../features/Configuration';\nimport { ACCEPTED_FORMAT, DIMENSION, SIZE } from '../utils/constants';\nimport { ImageAsset, ParsingFileError, parseFileMetadatas } from '../utils/files';\n\n/* -------------------------------------------------------------------------------------------------\n * LogoInputContext\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LogoInputContextValue {\n localImage: ImageAsset | undefined;\n goToStep: (step: Step) => void;\n onClose: () => void;\n setLocalImage: (asset: ImageAsset | undefined) => void;\n}\n\nconst [LogoInputContextProvider, useLogoInputContext] =\n createContext<LogoInputContextValue>('LogoInput');\n\n/* -------------------------------------------------------------------------------------------------\n * LogoInput\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LogoInputProps\n extends Pick<PendingLogoDialogProps, 'onChangeLogo'>,\n Pick<CarouselInputProps, 'label' | 'hint'> {\n canUpdate: boolean;\n customLogo?: ConfigurationContextValue['logos']['auth']['custom'];\n defaultLogo: string;\n}\n\ntype Step = 'pending' | 'upload' | undefined;\n\nconst LogoInput = ({\n canUpdate,\n customLogo,\n defaultLogo,\n hint,\n label,\n onChangeLogo,\n}: LogoInputProps) => {\n const [localImage, setLocalImage] = React.useState<ImageAsset | undefined>();\n const [currentStep, setCurrentStep] = React.useState<Step>();\n const { formatMessage } = useIntl();\n\n const handleClose = () => {\n setLocalImage(undefined);\n setCurrentStep(undefined);\n };\n\n return (\n <Modal.Root\n open={!!currentStep}\n onOpenChange={(state) => {\n if (state === false) {\n handleClose();\n }\n }}\n >\n <LogoInputContextProvider\n setLocalImage={setLocalImage}\n localImage={localImage}\n goToStep={setCurrentStep}\n onClose={handleClose}\n >\n <CarouselInput\n label={label}\n selectedSlide={0}\n hint={hint}\n // Carousel is used here for a single media,\n // we don't need previous and next labels but these props are required\n previousLabel=\"\"\n nextLabel=\"\"\n onNext={() => {}}\n onPrevious={() => {}}\n secondaryLabel={customLogo?.name || 'logo.png'}\n actions={\n <CarouselActions>\n <Modal.Trigger>\n <IconButton\n disabled={!canUpdate}\n onClick={() => setCurrentStep('upload')}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.change-action',\n defaultMessage: 'Change logo',\n })}\n >\n <Plus />\n </IconButton>\n </Modal.Trigger>\n {customLogo?.url && (\n <IconButton\n disabled={!canUpdate}\n onClick={() => onChangeLogo(null)}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.reset-action',\n defaultMessage: 'Reset logo',\n })}\n >\n <ArrowClockwise />\n </IconButton>\n )}\n </CarouselActions>\n }\n >\n <CarouselSlide\n label={formatMessage({\n id: 'Settings.application.customization.carousel-slide.label',\n defaultMessage: 'Logo slide',\n })}\n >\n <Box\n maxHeight=\"40%\"\n maxWidth=\"40%\"\n tag=\"img\"\n src={customLogo?.url || defaultLogo}\n alt={formatMessage({\n id: 'Settings.application.customization.carousel.title',\n defaultMessage: 'Logo',\n })}\n />\n </CarouselSlide>\n </CarouselInput>\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>\n {formatMessage(\n currentStep === 'upload'\n ? {\n id: 'Settings.application.customization.modal.upload',\n defaultMessage: 'Upload logo',\n }\n : {\n id: 'Settings.application.customization.modal.pending',\n defaultMessage: 'Pending logo',\n }\n )}\n </Modal.Title>\n </Modal.Header>\n {currentStep === 'upload' ? (\n <AddLogoDialog />\n ) : (\n <PendingLogoDialog onChangeLogo={onChangeLogo} />\n )}\n </Modal.Content>\n </LogoInputContextProvider>\n </Modal.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AddLogoDialog\n * -----------------------------------------------------------------------------------------------*/\n\nconst AddLogoDialog = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Tabs.Root variant=\"simple\" defaultValue=\"computer\">\n <Box paddingLeft={8} paddingRight={8}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'Settings.application.customization.modal.tab.label',\n defaultMessage: 'How do you want to upload your assets?',\n })}\n >\n <Tabs.Trigger value=\"computer\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-computer',\n defaultMessage: 'From computer',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"url\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-url',\n defaultMessage: 'From url',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n </Box>\n <Tabs.Content value=\"computer\">\n <ComputerForm />\n </Tabs.Content>\n <Tabs.Content value=\"url\">\n <URLForm />\n </Tabs.Content>\n </Tabs.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * URLForm\n * -----------------------------------------------------------------------------------------------*/\n\nconst URLForm = () => {\n const { formatMessage } = useIntl();\n const [logoUrl, setLogoUrl] = React.useState('');\n const [error, setError] = React.useState<string>();\n const { setLocalImage, goToStep, onClose } = useLogoInputContext('URLForm');\n\n const handleChange: TextInputProps['onChange'] = (e) => {\n setLogoUrl(e.target.value);\n };\n\n const handleSubmit: React.FormEventHandler<HTMLFormElement> = async (event) => {\n event.preventDefault();\n\n const data = new FormData(event.target as HTMLFormElement);\n\n const url = data.get('logo-url');\n\n if (!url) {\n return;\n }\n\n try {\n const res = await axios.get(url.toString(), { responseType: 'blob', timeout: 8000 });\n\n const file = new File([res.data], res.config.url ?? '', {\n type: res.headers['content-type'],\n });\n\n const asset = await parseFileMetadatas(file);\n\n setLocalImage(asset);\n goToStep('pending');\n } catch (err) {\n if (err instanceof AxiosError) {\n setError(\n formatMessage({\n id: 'Settings.application.customization.modal.upload.error-network',\n defaultMessage: 'Network error',\n })\n );\n } else if (err instanceof ParsingFileError) {\n setError(formatMessage(err.displayMessage, { size: SIZE, dimension: DIMENSION }));\n } else {\n throw err;\n }\n }\n };\n\n return (\n <form onSubmit={handleSubmit}>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Field.Root error={error} name=\"logo-url\">\n <Field.Label>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-url.input-label',\n defaultMessage: 'URL',\n })}\n </Field.Label>\n <TextInput type=\"url\" onChange={handleChange} value={logoUrl} />\n <Field.Error />\n </Field.Root>\n </Box>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Button type=\"submit\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.next',\n defaultMessage: 'Next',\n })}\n </Button>\n </Modal.Footer>\n </form>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ComputerForm\n * -----------------------------------------------------------------------------------------------*/\n\nconst ComputerForm = () => {\n const { formatMessage } = useIntl();\n const [dragOver, setDragOver] = React.useState(false);\n const [fileError, setFileError] = React.useState<string>();\n const inputRef = React.useRef<HTMLInputElement>(null!);\n const id = React.useId();\n\n const { setLocalImage, goToStep, onClose } = useLogoInputContext('ComputerForm');\n\n const handleDragEnter = () => {\n setDragOver(true);\n };\n const handleDragLeave = () => {\n setDragOver(false);\n };\n\n const handleClick: ButtonProps['onClick'] = (e) => {\n e.preventDefault();\n inputRef.current.click();\n };\n\n const handleChange = async () => {\n handleDragLeave();\n\n if (!inputRef.current.files) {\n return;\n }\n\n const [file] = inputRef.current.files;\n\n try {\n const asset = await parseFileMetadatas(file);\n setLocalImage(asset);\n goToStep('pending');\n } catch (err) {\n if (err instanceof ParsingFileError) {\n setFileError(formatMessage(err.displayMessage, { size: SIZE, dimension: DIMENSION }));\n inputRef.current.focus();\n } else {\n throw err;\n }\n }\n };\n\n return (\n <>\n <form>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Field.Root name={id} error={fileError}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Flex\n paddingTop={9}\n paddingBottom={7}\n hasRadius\n justifyContent=\"center\"\n direction=\"column\"\n background={dragOver ? 'primary100' : 'neutral100'}\n borderColor={dragOver ? 'primary500' : fileError ? 'danger600' : 'neutral300'}\n borderStyle=\"dashed\"\n borderWidth=\"1px\"\n position=\"relative\"\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n >\n <PlusCircle fill=\"primary600\" width=\"6rem\" height=\"6rem\" aria-hidden />\n <Box paddingTop={3} paddingBottom={5}>\n <Typography variant=\"delta\" tag=\"label\" htmlFor={id}>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.drag-drop',\n defaultMessage: 'Drag and Drop here or',\n })}\n </Typography>\n </Box>\n <Box position=\"relative\">\n <FileInput\n accept={ACCEPTED_FORMAT.join(', ')}\n type=\"file\"\n name=\"files\"\n tabIndex={-1}\n onChange={handleChange}\n ref={inputRef}\n id={id}\n />\n </Box>\n <Button type=\"button\" onClick={handleClick}>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.cta.browse',\n defaultMessage: 'Browse files',\n })}\n </Button>\n <Box paddingTop={6}>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'Settings.application.customization.modal.upload.file-validation',\n defaultMessage:\n 'Max dimension: {dimension}x{dimension}, Max size: {size}KB',\n },\n { size: SIZE, dimension: DIMENSION }\n )}\n </Typography>\n </Box>\n </Flex>\n <Field.Error />\n </Flex>\n </Field.Root>\n </Box>\n </form>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n\nconst FileInput = styled(Field.Input)`\n opacity: 0;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 1;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * PendingLogoDialog\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PendingLogoDialogProps {\n onChangeLogo: (file: ImageAsset | null) => void;\n}\n\nconst PendingLogoDialog = ({ onChangeLogo }: PendingLogoDialogProps) => {\n const { formatMessage } = useIntl();\n const { localImage, setLocalImage, goToStep, onClose } = useLogoInputContext('PendingLogoDialog');\n\n const handleGoBack = () => {\n setLocalImage(undefined);\n goToStep('upload');\n };\n\n const handleUpload = () => {\n if (localImage) {\n onChangeLogo(localImage);\n }\n onClose();\n };\n\n return (\n <>\n <Modal.Body>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Flex justifyContent=\"space-between\" paddingBottom={6}>\n <Flex direction=\"column\" alignItems=\"flex-start\">\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.title',\n defaultMessage: 'Logo ready to upload',\n })}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral500\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.subtitle',\n defaultMessage: 'Manage the chosen logo before uploading it',\n })}\n </Typography>\n </Flex>\n <Button onClick={handleGoBack} variant=\"secondary\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.choose-another',\n defaultMessage: 'Choose another logo',\n })}\n </Button>\n </Flex>\n <Box maxWidth={`18rem`}>\n {localImage?.url ? <ImageCardAsset asset={localImage} /> : null}\n </Box>\n </Box>\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({\n id: 'Settings.application.customization.modal.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Modal.Close>\n <Button onClick={handleUpload}>\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.upload',\n defaultMessage: 'Upload logo',\n })}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ImageCardAsset\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ImageCardAssetProps {\n asset: ImageAsset;\n}\n\nconst ImageCardAsset = ({ asset }: ImageCardAssetProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Card>\n <CardHeader>\n <CardAsset size=\"S\" src={asset.url} />\n </CardHeader>\n <CardBody>\n <CardContent>\n <CardTitle>{asset.name}</CardTitle>\n <CardSubtitle>\n {`${asset.ext?.toUpperCase()} - ${asset.width}✕${asset.height}`}\n </CardSubtitle>\n </CardContent>\n <CardBadge>\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.card-badge',\n defaultMessage: 'image',\n })}\n </CardBadge>\n </CardBody>\n </Card>\n );\n};\n\nexport { LogoInput };\nexport type { LogoInputProps };\n"],"names":["LogoInputContextProvider","useLogoInputContext","createContext","LogoInput","canUpdate","customLogo","defaultLogo","hint","label","onChangeLogo","localImage","setLocalImage","React","useState","currentStep","setCurrentStep","formatMessage","useIntl","handleClose","undefined","_jsx","Modal","Root","open","onOpenChange","state","_jsxs","goToStep","onClose","CarouselInput","selectedSlide","previousLabel","nextLabel","onNext","onPrevious","secondaryLabel","name","actions","CarouselActions","Trigger","IconButton","disabled","onClick","id","defaultMessage","Plus","url","ArrowClockwise","CarouselSlide","Box","maxHeight","maxWidth","tag","src","alt","Content","Header","Title","AddLogoDialog","PendingLogoDialog","Tabs","variant","defaultValue","paddingLeft","paddingRight","List","aria-label","value","ComputerForm","URLForm","logoUrl","setLogoUrl","error","setError","handleChange","e","target","handleSubmit","event","preventDefault","data","FormData","get","res","axios","toString","responseType","timeout","file","File","config","type","headers","asset","parseFileMetadatas","err","AxiosError","ParsingFileError","displayMessage","size","SIZE","dimension","DIMENSION","form","onSubmit","paddingTop","paddingBottom","Field","Label","TextInput","onChange","Error","Footer","Button","dragOver","setDragOver","fileError","setFileError","inputRef","useRef","useId","handleDragEnter","handleDragLeave","handleClick","current","click","files","focus","_Fragment","Flex","direction","alignItems","gap","hasRadius","justifyContent","background","borderColor","borderStyle","borderWidth","position","onDragEnter","onDragLeave","PlusCircle","fill","width","height","aria-hidden","Typography","htmlFor","FileInput","accept","ACCEPTED_FORMAT","join","tabIndex","ref","textColor","styled","Input","handleGoBack","handleUpload","Body","fontWeight","ImageCardAsset","Close","Card","CardHeader","CardAsset","CardBody","CardContent","CardTitle","CardSubtitle","ext","toUpperCase","CardBadge"],"mappings":"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"}
|