@strapi/admin 5.58.0 → 5.59.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/StrapiApp.js.map +1 -1
- package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
- package/dist/admin/admin/src/components/ConfirmDialog.js +10 -9
- package/dist/admin/admin/src/components/ConfirmDialog.js.map +1 -1
- package/dist/admin/admin/src/components/ConfirmDialog.mjs +10 -9
- package/dist/admin/admin/src/components/ConfirmDialog.mjs.map +1 -1
- package/dist/admin/admin/src/components/Filters.js +57 -12
- package/dist/admin/admin/src/components/Filters.js.map +1 -1
- package/dist/admin/admin/src/components/Filters.mjs +57 -12
- package/dist/admin/admin/src/components/Filters.mjs.map +1 -1
- package/dist/admin/admin/src/components/Form.js +3 -1
- package/dist/admin/admin/src/components/Form.js.map +1 -1
- package/dist/admin/admin/src/components/Form.mjs +3 -1
- package/dist/admin/admin/src/components/Form.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.js +2 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs +2 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs.map +1 -1
- package/dist/admin/admin/src/components/LeftMenu.js +5 -1
- package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
- package/dist/admin/admin/src/components/LeftMenu.mjs +5 -1
- package/dist/admin/admin/src/components/LeftMenu.mjs.map +1 -1
- package/dist/admin/admin/src/components/PageHelpers.js +2 -1
- package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
- package/dist/admin/admin/src/components/PageHelpers.mjs +2 -1
- package/dist/admin/admin/src/components/PageHelpers.mjs.map +1 -1
- package/dist/admin/admin/src/components/Pagination.js +7 -6
- package/dist/admin/admin/src/components/Pagination.js.map +1 -1
- package/dist/admin/admin/src/components/Pagination.mjs +7 -6
- package/dist/admin/admin/src/components/Pagination.mjs.map +1 -1
- package/dist/admin/admin/src/components/RelativeTime.js +2 -1
- package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
- package/dist/admin/admin/src/components/RelativeTime.mjs +2 -1
- package/dist/admin/admin/src/components/RelativeTime.mjs.map +1 -1
- package/dist/admin/admin/src/components/SubNav.js +6 -12
- package/dist/admin/admin/src/components/SubNav.js.map +1 -1
- package/dist/admin/admin/src/components/SubNav.mjs +7 -13
- package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
- package/dist/admin/admin/src/components/Table.js +3 -1
- package/dist/admin/admin/src/components/Table.js.map +1 -1
- package/dist/admin/admin/src/components/Table.mjs +3 -1
- package/dist/admin/admin/src/components/Table.mjs.map +1 -1
- package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
- package/dist/admin/admin/src/components/UpsellBanner.mjs.map +1 -1
- package/dist/admin/admin/src/components/WidgetRoot.js.map +1 -1
- package/dist/admin/admin/src/components/WidgetRoot.mjs.map +1 -1
- package/dist/admin/admin/src/constants.js.map +1 -1
- package/dist/admin/admin/src/constants.mjs.map +1 -1
- package/dist/admin/admin/src/core/apis/Plugin.js.map +1 -1
- package/dist/admin/admin/src/core/apis/Plugin.mjs.map +1 -1
- package/dist/admin/admin/src/features/Auth.js +2 -1
- package/dist/admin/admin/src/features/Auth.js.map +1 -1
- package/dist/admin/admin/src/features/Auth.mjs +2 -1
- package/dist/admin/admin/src/features/Auth.mjs.map +1 -1
- package/dist/admin/admin/src/features/StrapiApp.js.map +1 -1
- package/dist/admin/admin/src/features/StrapiApp.mjs.map +1 -1
- package/dist/admin/admin/src/features/Tracking.js.map +1 -1
- package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs.map +1 -1
- package/dist/admin/admin/src/pages/ProfilePage.js +2 -2
- package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
- package/dist/admin/admin/src/pages/ProfilePage.mjs +2 -2
- package/dist/admin/admin/src/pages/ProfilePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.js +4 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.mjs +4 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js +3 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs +3 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenTypeSelect.js +2 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenTypeSelect.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenTypeSelect.mjs +2 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenTypeSelect.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js +6 -5
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.mjs +6 -5
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js +2 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.mjs +2 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.js +4 -4
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.mjs +4 -4
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +1 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +1 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
- 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.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +9 -4
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs +9 -4
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js +15 -9
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.mjs +15 -9
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +5 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs +5 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js +2 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.mjs +2 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js +2 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs +2 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js +2 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.mjs +2 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js +3 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs +3 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js +4 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.mjs +4 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js +18 -3
- 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 +18 -3
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.mjs.map +1 -1
- package/dist/admin/admin/src/router.js.map +1 -1
- package/dist/admin/admin/src/router.mjs.map +1 -1
- package/dist/admin/admin/src/services/users.js.map +1 -1
- package/dist/admin/admin/src/services/users.mjs.map +1 -1
- package/dist/admin/admin/src/translations/eu.json.js +1 -1
- package/dist/admin/admin/src/translations/eu.json.mjs +1 -1
- package/dist/admin/admin/src/utils/cookies.js +7 -6
- package/dist/admin/admin/src/utils/cookies.js.map +1 -1
- package/dist/admin/admin/src/utils/cookies.mjs +7 -6
- package/dist/admin/admin/src/utils/cookies.mjs.map +1 -1
- package/dist/admin/admin/tests/utils.js +2 -1
- package/dist/admin/admin/tests/utils.js.map +1 -1
- package/dist/admin/admin/tests/utils.mjs +2 -1
- package/dist/admin/admin/tests/utils.mjs.map +1 -1
- package/dist/admin/shared/utils/auth-cookie-path.js +13 -10
- package/dist/admin/shared/utils/auth-cookie-path.js.map +1 -1
- package/dist/admin/shared/utils/auth-cookie-path.mjs +13 -10
- package/dist/admin/shared/utils/auth-cookie-path.mjs.map +1 -1
- package/dist/admin/shared/utils/get-project-type.js +3 -3
- package/dist/admin/shared/utils/get-project-type.js.map +1 -1
- package/dist/admin/shared/utils/get-project-type.mjs +3 -3
- package/dist/admin/shared/utils/get-project-type.mjs.map +1 -1
- package/dist/admin/src/components/Filters.d.ts +1 -1
- package/dist/admin/src/components/Form.d.ts +1 -1
- package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.d.ts +1 -1
- package/dist/admin/src/utils/cookies.d.ts +7 -6
- package/dist/ee/server/src/services/seat-enforcement.d.ts.map +1 -1
- package/dist/ee/server/src/validation/role.d.ts.map +1 -1
- package/dist/server/ee/server/src/audit-logs/utils/csv.js +3 -3
- package/dist/server/ee/server/src/audit-logs/utils/csv.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/utils/csv.mjs +3 -3
- package/dist/server/ee/server/src/audit-logs/utils/csv.mjs.map +1 -1
- package/dist/server/ee/server/src/services/seat-enforcement.js.map +1 -1
- package/dist/server/ee/server/src/services/seat-enforcement.mjs.map +1 -1
- package/dist/server/ee/server/src/validation/role.js +4 -2
- package/dist/server/ee/server/src/validation/role.js.map +1 -1
- package/dist/server/ee/server/src/validation/role.mjs +4 -2
- package/dist/server/ee/server/src/validation/role.mjs.map +1 -1
- package/dist/server/server/src/ai/services/ai.js.map +1 -1
- package/dist/server/server/src/ai/services/ai.mjs.map +1 -1
- package/dist/server/server/src/controllers/admin.js +11 -12
- package/dist/server/server/src/controllers/admin.js.map +1 -1
- package/dist/server/server/src/controllers/admin.mjs +11 -12
- package/dist/server/server/src/controllers/admin.mjs.map +1 -1
- package/dist/server/server/src/domain/permission/index.js.map +1 -1
- package/dist/server/server/src/domain/permission/index.mjs.map +1 -1
- package/dist/server/server/src/services/api-token.js +4 -8
- package/dist/server/server/src/services/api-token.js.map +1 -1
- package/dist/server/server/src/services/api-token.mjs +4 -8
- package/dist/server/server/src/services/api-token.mjs.map +1 -1
- package/dist/server/server/src/services/constants.js +4 -0
- package/dist/server/server/src/services/constants.js.map +1 -1
- package/dist/server/server/src/services/constants.mjs +4 -0
- package/dist/server/server/src/services/constants.mjs.map +1 -1
- package/dist/server/server/src/services/permission/rename-fields.js.map +1 -1
- package/dist/server/server/src/services/permission/rename-fields.mjs.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/handlers.js.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/handlers.mjs.map +1 -1
- package/dist/server/server/src/services/role.js +8 -5
- package/dist/server/server/src/services/role.js.map +1 -1
- package/dist/server/server/src/services/role.mjs +8 -5
- package/dist/server/server/src/services/role.mjs.map +1 -1
- package/dist/server/server/src/validation/admin-tokens.js +4 -4
- package/dist/server/server/src/validation/admin-tokens.js.map +1 -1
- package/dist/server/server/src/validation/admin-tokens.mjs +4 -4
- package/dist/server/server/src/validation/admin-tokens.mjs.map +1 -1
- package/dist/server/server/src/validation/api-tokens.js +4 -4
- package/dist/server/server/src/validation/api-tokens.js.map +1 -1
- package/dist/server/server/src/validation/api-tokens.mjs +4 -4
- package/dist/server/server/src/validation/api-tokens.mjs.map +1 -1
- package/dist/server/server/src/validation/role.js +6 -4
- package/dist/server/server/src/validation/role.js.map +1 -1
- package/dist/server/server/src/validation/role.mjs +6 -4
- package/dist/server/server/src/validation/role.mjs.map +1 -1
- package/dist/server/server/src/validation/transfer/token.js +4 -4
- package/dist/server/server/src/validation/transfer/token.js.map +1 -1
- package/dist/server/server/src/validation/transfer/token.mjs +4 -4
- package/dist/server/server/src/validation/transfer/token.mjs.map +1 -1
- package/dist/server/shared/utils/auth-cookie-path.js +13 -10
- package/dist/server/shared/utils/auth-cookie-path.js.map +1 -1
- package/dist/server/shared/utils/auth-cookie-path.mjs +13 -10
- package/dist/server/shared/utils/auth-cookie-path.mjs.map +1 -1
- package/dist/server/shared/utils/get-project-type.js +3 -3
- package/dist/server/shared/utils/get-project-type.js.map +1 -1
- package/dist/server/shared/utils/get-project-type.mjs +3 -3
- package/dist/server/shared/utils/get-project-type.mjs.map +1 -1
- package/dist/server/shared/utils/session-auth.js +70 -3
- package/dist/server/shared/utils/session-auth.js.map +1 -1
- package/dist/server/shared/utils/session-auth.mjs +70 -4
- package/dist/server/shared/utils/session-auth.mjs.map +1 -1
- package/dist/server/src/ai/services/ai.d.ts.map +1 -1
- package/dist/server/src/controllers/admin.d.ts.map +1 -1
- package/dist/server/src/domain/permission/index.d.ts.map +1 -1
- package/dist/server/src/services/constants.d.ts +2 -0
- package/dist/server/src/services/constants.d.ts.map +1 -1
- package/dist/server/src/services/permission/rename-fields.d.ts.map +1 -1
- package/dist/server/src/services/permission/sections-builder/handlers.d.ts.map +1 -1
- package/dist/server/src/services/role.d.ts.map +1 -1
- package/dist/server/src/validation/role.d.ts.map +1 -1
- package/dist/shared/contracts/transfer.d.ts.map +1 -1
- package/dist/shared/utils/auth-cookie-path.d.ts +13 -10
- package/dist/shared/utils/auth-cookie-path.d.ts.map +1 -1
- package/dist/shared/utils/session-auth.d.ts +16 -0
- package/dist/shared/utils/session-auth.d.ts.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubNav.js","sources":["../../../../../admin/src/components/SubNav.tsx"],"sourcesContent":["import { useEffect, useId, useRef, useState, useMemo } from 'react';\n\nimport {\n Badge,\n Box,\n Flex,\n IconButton,\n Menu,\n ScrollArea,\n SubNav as DSSubNav,\n Typography,\n} from '@strapi/design-system';\nimport { ChevronDown, Plus } from '@strapi/icons';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport {\n HEIGHT_TOP_NAVIGATION,\n HEIGHT_TOP_NAVIGATION_MEDIUM,\n WIDTH_SIDE_NAVIGATION,\n} from '../constants/theme';\n\nimport { tours } from './GuidedTour/Tours';\nimport { SubNavFolder } from './SubNavFolder';\n\nconst MainSubNav = styled(DSSubNav)<{ $isFullPage?: boolean }>`\n width: 100%;\n height: 100%;\n overflow: ${({ $isFullPage }) => ($isFullPage ? 'visible' : 'hidden')};\n background-color: ${({ theme }) => theme.colors.neutral0};\n display: flex;\n flex-direction: column;\n border-right: 0;\n box-shadow: none;\n position: relative;\n\n ${({ theme }) => theme.breakpoints.medium} {\n width: ${WIDTH_SIDE_NAVIGATION};\n position: sticky;\n top: 0;\n overflow: hidden;\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n overscroll-behavior: contain;\n }\n`;\n\nconst Main = ({\n children,\n isFullPage,\n ...props\n}: {\n children: React.ReactNode;\n isFullPage?: boolean;\n}) => (\n <MainSubNav $isFullPage={isFullPage} {...props}>\n {children}\n </MainSubNav>\n);\n\nconst StyledLink = styled(NavLink)<{ $depth?: number }>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n text-decoration: none;\n height: 32px;\n\n color: ${({ theme }) => theme.colors.neutral800};\n\n & > div {\n padding-left: ${({ theme, $depth = 0 }) =>\n `calc(${$depth} * ${theme.spaces[6]} + ${theme.spaces[3]})`};\n }\n\n &.active > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.primary100};\n color: ${theme.colors.primary700};\n font-weight: 500;\n `;\n }}\n }\n\n &:hover.active > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.primary100};\n `;\n }}\n }\n\n &:hover > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.neutral100};\n `;\n }}\n }\n\n &:focus-visible {\n outline-offset: -2px;\n }\n`;\n\nconst LinkBullet = styled.span`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: 0 0 16px;\n\n &::before {\n content: '';\n width: 4px;\n height: 4px;\n border-radius: 50%;\n background-color: currentColor;\n }\n`;\n\nconst Link = (\n props: Omit<React.ComponentProps<typeof StyledLink>, 'label' | '$depth'> & {\n endAction?: React.ReactNode;\n handleClick?: () => void;\n label: React.ReactNode;\n depth?: number;\n bulleted?: boolean;\n }\n) => {\n const { label, endAction, handleClick, depth, bulleted = false, ...rest } = props;\n\n return (\n <StyledLink {...rest} $depth={depth} onClick={handleClick}>\n <Box\n width={'100%'}\n paddingRight={3}\n paddingTop={{ initial: 1, large: 0 }}\n paddingBottom={{ initial: 1, large: 0 }}\n borderRadius={1}\n >\n <Flex justifyContent=\"space-between\" width=\"100%\" gap={{ initial: 2, large: 1 }}>\n <Flex gap={2} flex=\"1\" minWidth=\"0\" alignItems=\"center\">\n {bulleted && <LinkBullet aria-hidden />}\n <Typography\n tag=\"div\"\n lineHeight=\"32px\"\n overflow=\"hidden\"\n style={{ textOverflow: 'ellipsis', whiteSpace: 'nowrap', flex: 1, minWidth: 0 }}\n >\n {label}\n </Typography>\n </Flex>\n <Flex gap={2}>{endAction}</Flex>\n </Flex>\n </Box>\n </StyledLink>\n );\n};\n\nconst StyledHeader = styled(Flex)`\n flex: 0 0 ${HEIGHT_TOP_NAVIGATION};\n height: ${HEIGHT_TOP_NAVIGATION};\n\n ${({ theme }) => theme.breakpoints.medium} {\n flex: 0 0 ${HEIGHT_TOP_NAVIGATION_MEDIUM};\n height: ${HEIGHT_TOP_NAVIGATION_MEDIUM};\n }\n`;\n\nconst Header = ({ label }: { label: string }) => {\n return (\n <StyledHeader justifyContent=\"space-between\" paddingLeft={5} paddingRight={5}>\n <Typography variant=\"beta\" tag=\"h2\">\n {label}\n </Typography>\n </StyledHeader>\n );\n};\n\nconst Sections = ({\n children,\n ...props\n}: {\n children: React.ReactNode[];\n [key: string]: unknown;\n}) => {\n return (\n <Box\n paddingTop={{ initial: 5, large: 4 }}\n paddingBottom={{ initial: 5, large: 4 }}\n paddingLeft={{ initial: 3, large: 0 }}\n paddingRight={{ initial: 3, large: 0 }}\n maxWidth={{ initial: '100%', medium: WIDTH_SIDE_NAVIGATION }}\n >\n <Flex tag=\"ul\" gap={6} direction=\"column\" alignItems=\"stretch\" {...props}>\n {children.map((child, index) => {\n return <li key={index}>{child}</li>;\n })}\n </Flex>\n </Box>\n );\n};\n\n/**\n * TODO:\n * This would be better in the content-type-builder package directly but currently\n * the SubNav API does not expose a way to wrap the link, instead it wraps the link and the list\n */\nconst GuidedTourTooltip = ({\n sectionId,\n children,\n}: {\n sectionId?: string;\n children: React.ReactNode;\n}) => {\n switch (sectionId) {\n case 'models':\n return (\n <tours.contentTypeBuilder.CollectionTypes>\n <tours.contentTypeBuilder.YourTurn>{children}</tours.contentTypeBuilder.YourTurn>\n </tours.contentTypeBuilder.CollectionTypes>\n );\n case 'singleTypes':\n return (\n <tours.contentTypeBuilder.SingleTypes>{children}</tours.contentTypeBuilder.SingleTypes>\n );\n case 'components':\n return <tours.contentTypeBuilder.Components>{children}</tours.contentTypeBuilder.Components>;\n default:\n return children;\n }\n};\n\ntype SectionMenuItem = {\n startIcon?: React.ReactNode;\n onSelect: () => void;\n label: string;\n};\n\ntype SectionLink = {\n label: string;\n onClick?: () => void;\n menu?: SectionMenuItem[];\n /**\n * This suppresses the default behavior, where input focus returns to the \"+\" trigger when the popover closes.\n * This allows popover actions to change the focused element without it being immediately undone.\n */\n suppressFocusCaptureOnMenuClose?: boolean;\n};\n\nconst Section = ({\n label,\n children,\n link,\n sectionId,\n badgeLabel,\n}: {\n label: string;\n children: React.ReactNode[];\n link?: SectionLink;\n sectionId?: string;\n badgeLabel?: string;\n}) => {\n const listId = useId();\n\n // Used to track the selection of an item within the popover menu (as opposed to a menu dismissal via escape, click outside, etc.)\n const popoverMenuItemClicked = useRef(false);\n\n const linkButton = useMemo(() => {\n if (!link) return;\n\n if (!link.menu) {\n return (\n <GuidedTourTooltip sectionId={sectionId}>\n <IconButton\n onClick={link.onClick}\n label={link.label}\n variant=\"ghost\"\n withTooltip\n size=\"XS\"\n >\n <Plus />\n </IconButton>\n </GuidedTourTooltip>\n );\n }\n\n const onCloseMenuAutoFocus = (event: Event): void => {\n // If the result of a popover menu close deliberately shifts focus, the default Radix behavior (immediately restore focus on the popover's trigger element when the popover closes) would compete.\n if (link.suppressFocusCaptureOnMenuClose && popoverMenuItemClicked.current) {\n event.preventDefault();\n }\n\n popoverMenuItemClicked.current = false;\n };\n\n return (\n <GuidedTourTooltip sectionId={sectionId}>\n <Menu.Root>\n <Menu.Trigger\n label={link.label}\n tag={IconButton}\n icon={<Plus />}\n variant=\"ghost\"\n endIcon={null}\n size=\"XS\"\n />\n <Menu.Content onCloseAutoFocus={onCloseMenuAutoFocus} zIndex={2}>\n {link.menu.map((item) => {\n const onSelectMenuItem = () => {\n popoverMenuItemClicked.current = true;\n item.onSelect();\n };\n\n return (\n <Menu.Item onSelect={onSelectMenuItem} startIcon={item.startIcon} key={item.label}>\n {item.label}\n </Menu.Item>\n );\n })}\n </Menu.Content>\n </Menu.Root>\n </GuidedTourTooltip>\n );\n }, [link, sectionId]);\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Box\n paddingLeft={{\n initial: 3,\n large: 5,\n }}\n paddingRight={{\n initial: 3,\n large: 5,\n }}\n >\n <Flex position=\"relative\" justifyContent=\"space-between\" gap={2}>\n <Flex gap={2} alignItems=\"center\" minWidth={0}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {label}\n </Typography>\n {badgeLabel && (\n <Badge backgroundColor=\"neutral150\" textColor=\"neutral600\">\n {badgeLabel}\n </Badge>\n )}\n </Flex>\n <Flex gap={1}>{linkButton}</Flex>\n </Flex>\n </Box>\n <Flex\n tag=\"ol\"\n id={listId}\n direction=\"column\"\n gap={{ initial: 2, large: '2px' }}\n alignItems={'stretch'}\n marginLeft={{\n initial: 0,\n large: 2,\n }}\n marginRight={{\n initial: 0,\n large: 2,\n }}\n >\n {children.map((child, index) => {\n return <li key={index}>{child}</li>;\n })}\n </Flex>\n </Flex>\n );\n};\n\nconst SubSectionHeader = styled.button`\n cursor: pointer;\n width: 100%;\n border: none;\n padding: 0;\n background: transparent;\n display: flex;\n align-items: center;\n border-radius: ${({ theme }) => theme.borderRadius};\n padding-left: ${({ theme }) => theme.spaces[3]};\n padding-right: ${({ theme }) => theme.spaces[3]};\n padding-top: ${({ theme }) => theme.spaces[2]};\n padding-bottom: ${({ theme }) => theme.spaces[2]};\n\n &:hover {\n background-color: ${({ theme }) => theme.colors.neutral100};\n }\n`;\n\nconst SubSectionLinkWrapper = styled.li`\n ${StyledLink} > div {\n padding-left: 36px;\n }\n`;\n\nconst SubSection = ({ label, children }: { label: string; children: React.ReactNode[] }) => {\n const [isOpen, setOpenLinks] = useState(true);\n const [contentHeight, setContentHeight] = useState(0);\n const listId = useId();\n const contentRef = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (contentRef.current) {\n setContentHeight(contentRef.current.scrollHeight);\n }\n }, [children]);\n\n const handleClick = () => {\n setOpenLinks((prev) => !prev);\n };\n\n return (\n <Box>\n <Flex justifyContent=\"space-between\">\n <SubSectionHeader onClick={handleClick} aria-expanded={isOpen} aria-controls={listId}>\n <ChevronDown\n aria-hidden\n fill=\"neutral500\"\n style={{\n transform: `rotate(${isOpen ? '0deg' : '-90deg'})`,\n transition: 'transform 0.5s',\n }}\n />\n <Box paddingLeft={2}>\n <Typography tag=\"span\" fontWeight=\"semiBold\" textColor=\"neutral800\">\n {label}\n </Typography>\n </Box>\n </SubSectionHeader>\n </Flex>\n <Flex\n ref={contentRef}\n tag=\"ul\"\n id={listId}\n direction=\"column\"\n gap=\"2px\"\n alignItems={'stretch'}\n style={{\n maxHeight: isOpen ? `${contentHeight}px` : 0,\n overflow: 'hidden',\n transition: 'max-height 0.5s cubic-bezier(0, 1, 0, 1)',\n }}\n >\n {children.map((child, index) => {\n return <SubSectionLinkWrapper key={index}>{child}</SubSectionLinkWrapper>;\n })}\n </Flex>\n </Box>\n );\n};\n\nconst PageWrapper = styled(Box)`\n width: 100%;\n\n ${MainSubNav} {\n background-color: transparent;\n border-right: none;\n }\n\n ${({ theme }) => theme.breakpoints.medium} {\n overflow: hidden;\n\n ${MainSubNav} {\n top: 0;\n }\n }\n`;\n\nconst Content = ({ children }: { children: React.ReactNode }) => {\n return <ScrollArea>{children}</ScrollArea>;\n};\n\nexport const SubNav = {\n Main,\n Content,\n Header,\n Link,\n Sections,\n Section,\n SubSection,\n Folder: SubNavFolder,\n PageWrapper,\n};\n"],"names":["MainSubNav","styled","DSSubNav","$isFullPage","theme","colors","neutral0","breakpoints","medium","WIDTH_SIDE_NAVIGATION","neutral150","Main","children","isFullPage","props","_jsx","StyledLink","NavLink","neutral800","$depth","spaces","primary100","primary700","neutral100","LinkBullet","span","Link","label","endAction","handleClick","depth","bulleted","rest","onClick","Box","width","paddingRight","paddingTop","initial","large","paddingBottom","borderRadius","_jsxs","Flex","justifyContent","gap","flex","minWidth","alignItems","aria-hidden","Typography","tag","lineHeight","overflow","style","textOverflow","whiteSpace","StyledHeader","HEIGHT_TOP_NAVIGATION","HEIGHT_TOP_NAVIGATION_MEDIUM","Header","paddingLeft","variant","Sections","maxWidth","direction","map","child","index","li","GuidedTourTooltip","sectionId","tours","contentTypeBuilder","CollectionTypes","YourTurn","SingleTypes","Components","Section","link","badgeLabel","listId","useId","popoverMenuItemClicked","useRef","linkButton","useMemo","menu","IconButton","withTooltip","size","Plus","onCloseMenuAutoFocus","event","suppressFocusCaptureOnMenuClose","current","preventDefault","Menu","Root","Trigger","icon","endIcon","Content","onCloseAutoFocus","zIndex","item","onSelectMenuItem","onSelect","Item","startIcon","position","textColor","Badge","backgroundColor","id","marginLeft","marginRight","SubSectionHeader","button","SubSectionLinkWrapper","SubSection","isOpen","setOpenLinks","useState","contentHeight","setContentHeight","contentRef","useEffect","scrollHeight","prev","aria-expanded","aria-controls","ChevronDown","fill","transform","transition","fontWeight","ref","maxHeight","PageWrapper","ScrollArea","SubNav","Folder","SubNavFolder"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SubNav.js","sources":["../../../../../admin/src/components/SubNav.tsx"],"sourcesContent":["import { Children, useEffect, useId, useMemo, useRef, useState } from 'react';\n\nimport {\n Badge,\n Box,\n Flex,\n IconButton,\n Menu,\n ScrollArea,\n SubNav as DSSubNav,\n Typography,\n} from '@strapi/design-system';\nimport { ChevronDown, Plus } from '@strapi/icons';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport {\n HEIGHT_TOP_NAVIGATION,\n HEIGHT_TOP_NAVIGATION_MEDIUM,\n WIDTH_SIDE_NAVIGATION,\n} from '../constants/theme';\n\nimport { tours } from './GuidedTour/Tours';\nimport { SubNavFolder } from './SubNavFolder';\n\nconst MainSubNav = styled(DSSubNav)<{ $isFullPage?: boolean }>`\n width: 100%;\n height: 100%;\n overflow: ${({ $isFullPage }) => ($isFullPage ? 'visible' : 'hidden')};\n background-color: ${({ theme }) => theme.colors.neutral0};\n display: flex;\n flex-direction: column;\n border-right: 0;\n box-shadow: none;\n position: relative;\n\n ${({ theme }) => theme.breakpoints.medium} {\n width: ${WIDTH_SIDE_NAVIGATION};\n position: sticky;\n top: 0;\n overflow: hidden;\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n overscroll-behavior: contain;\n }\n`;\n\nconst Main = ({\n children,\n isFullPage,\n ...props\n}: {\n children: React.ReactNode;\n isFullPage?: boolean;\n}) => (\n <MainSubNav $isFullPage={isFullPage} {...props}>\n {children}\n </MainSubNav>\n);\n\nconst StyledLink = styled(NavLink)<{ $depth?: number }>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n text-decoration: none;\n height: 32px;\n\n color: ${({ theme }) => theme.colors.neutral800};\n\n & > div {\n padding-left: ${({ theme, $depth = 0 }) =>\n `calc(${$depth} * ${theme.spaces[6]} + ${theme.spaces[3]})`};\n }\n\n &.active > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.primary100};\n color: ${theme.colors.primary700};\n font-weight: 500;\n `;\n }}\n }\n\n &:hover.active > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.primary100};\n `;\n }}\n }\n\n &:hover > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.neutral100};\n `;\n }}\n }\n\n &:focus-visible {\n outline-offset: -2px;\n }\n`;\n\nconst LinkBullet = styled.span`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: 0 0 16px;\n\n &::before {\n content: '';\n width: 4px;\n height: 4px;\n border-radius: 50%;\n background-color: currentColor;\n }\n`;\n\nconst Link = (\n props: Omit<React.ComponentProps<typeof StyledLink>, 'label' | '$depth'> & {\n endAction?: React.ReactNode;\n handleClick?: () => void;\n label: React.ReactNode;\n depth?: number;\n bulleted?: boolean;\n }\n) => {\n const { label, endAction, handleClick, depth, bulleted = false, ...rest } = props;\n\n return (\n <StyledLink {...rest} $depth={depth} onClick={handleClick}>\n <Box\n width={'100%'}\n paddingRight={3}\n paddingTop={{ initial: 1, large: 0 }}\n paddingBottom={{ initial: 1, large: 0 }}\n borderRadius={1}\n >\n <Flex justifyContent=\"space-between\" width=\"100%\" gap={{ initial: 2, large: 1 }}>\n <Flex gap={2} flex=\"1\" minWidth=\"0\" alignItems=\"center\">\n {bulleted && <LinkBullet aria-hidden />}\n <Typography\n tag=\"div\"\n lineHeight=\"32px\"\n overflow=\"hidden\"\n style={{ textOverflow: 'ellipsis', whiteSpace: 'nowrap', flex: 1, minWidth: 0 }}\n >\n {label}\n </Typography>\n </Flex>\n <Flex gap={2}>{endAction}</Flex>\n </Flex>\n </Box>\n </StyledLink>\n );\n};\n\nconst StyledHeader = styled(Flex)`\n flex: 0 0 ${HEIGHT_TOP_NAVIGATION};\n height: ${HEIGHT_TOP_NAVIGATION};\n\n ${({ theme }) => theme.breakpoints.medium} {\n flex: 0 0 ${HEIGHT_TOP_NAVIGATION_MEDIUM};\n height: ${HEIGHT_TOP_NAVIGATION_MEDIUM};\n }\n`;\n\nconst Header = ({ label }: { label: string }) => {\n return (\n <StyledHeader justifyContent=\"space-between\" paddingLeft={5} paddingRight={5}>\n <Typography variant=\"beta\" tag=\"h2\">\n {label}\n </Typography>\n </StyledHeader>\n );\n};\n\nconst Sections = ({\n children,\n ...props\n}: {\n children: React.ReactNode[];\n [key: string]: unknown;\n}) => {\n return (\n <Box\n paddingTop={{ initial: 5, large: 4 }}\n paddingBottom={{ initial: 5, large: 4 }}\n paddingLeft={{ initial: 3, large: 0 }}\n paddingRight={{ initial: 3, large: 0 }}\n maxWidth={{ initial: '100%', medium: WIDTH_SIDE_NAVIGATION }}\n >\n <Flex tag=\"ul\" gap={6} direction=\"column\" alignItems=\"stretch\" {...props}>\n {Children.map(children, (child) => (\n <li>{child}</li>\n ))}\n </Flex>\n </Box>\n );\n};\n\n/**\n * TODO:\n * This would be better in the content-type-builder package directly but currently\n * the SubNav API does not expose a way to wrap the link, instead it wraps the link and the list\n */\nconst GuidedTourTooltip = ({\n sectionId,\n children,\n}: {\n sectionId?: string;\n children: React.ReactNode;\n}) => {\n switch (sectionId) {\n case 'models':\n return (\n <tours.contentTypeBuilder.CollectionTypes>\n <tours.contentTypeBuilder.YourTurn>{children}</tours.contentTypeBuilder.YourTurn>\n </tours.contentTypeBuilder.CollectionTypes>\n );\n case 'singleTypes':\n return (\n <tours.contentTypeBuilder.SingleTypes>{children}</tours.contentTypeBuilder.SingleTypes>\n );\n case 'components':\n return <tours.contentTypeBuilder.Components>{children}</tours.contentTypeBuilder.Components>;\n default:\n return children;\n }\n};\n\ntype SectionMenuItem = {\n startIcon?: React.ReactNode;\n onSelect: () => void;\n label: string;\n};\n\ntype SectionLink = {\n label: string;\n onClick?: () => void;\n menu?: SectionMenuItem[];\n /**\n * This suppresses the default behavior, where input focus returns to the \"+\" trigger when the popover closes.\n * This allows popover actions to change the focused element without it being immediately undone.\n */\n suppressFocusCaptureOnMenuClose?: boolean;\n};\n\nconst Section = ({\n label,\n children,\n link,\n sectionId,\n badgeLabel,\n}: {\n label: string;\n children: React.ReactNode[];\n link?: SectionLink;\n sectionId?: string;\n badgeLabel?: string;\n}) => {\n const listId = useId();\n\n // Used to track the selection of an item within the popover menu (as opposed to a menu dismissal via escape, click outside, etc.)\n const popoverMenuItemClicked = useRef(false);\n\n const linkButton = useMemo(() => {\n if (!link) return;\n\n if (!link.menu) {\n return (\n <GuidedTourTooltip sectionId={sectionId}>\n <IconButton\n onClick={link.onClick}\n label={link.label}\n variant=\"ghost\"\n withTooltip\n size=\"XS\"\n >\n <Plus />\n </IconButton>\n </GuidedTourTooltip>\n );\n }\n\n const onCloseMenuAutoFocus = (event: Event): void => {\n // If the result of a popover menu close deliberately shifts focus, the default Radix behavior (immediately restore focus on the popover's trigger element when the popover closes) would compete.\n if (link.suppressFocusCaptureOnMenuClose && popoverMenuItemClicked.current) {\n event.preventDefault();\n }\n\n popoverMenuItemClicked.current = false;\n };\n\n return (\n <GuidedTourTooltip sectionId={sectionId}>\n <Menu.Root>\n <Menu.Trigger\n label={link.label}\n tag={IconButton}\n icon={<Plus />}\n variant=\"ghost\"\n endIcon={null}\n size=\"XS\"\n />\n <Menu.Content onCloseAutoFocus={onCloseMenuAutoFocus} zIndex={2}>\n {link.menu.map((item) => {\n const onSelectMenuItem = () => {\n popoverMenuItemClicked.current = true;\n item.onSelect();\n };\n\n return (\n <Menu.Item onSelect={onSelectMenuItem} startIcon={item.startIcon} key={item.label}>\n {item.label}\n </Menu.Item>\n );\n })}\n </Menu.Content>\n </Menu.Root>\n </GuidedTourTooltip>\n );\n }, [link, sectionId]);\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Box\n paddingLeft={{\n initial: 3,\n large: 5,\n }}\n paddingRight={{\n initial: 3,\n large: 5,\n }}\n >\n <Flex position=\"relative\" justifyContent=\"space-between\" gap={2}>\n <Flex gap={2} alignItems=\"center\" minWidth={0}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {label}\n </Typography>\n {badgeLabel && (\n <Badge backgroundColor=\"neutral150\" textColor=\"neutral600\">\n {badgeLabel}\n </Badge>\n )}\n </Flex>\n <Flex gap={1}>{linkButton}</Flex>\n </Flex>\n </Box>\n <Flex\n tag=\"ol\"\n id={listId}\n direction=\"column\"\n gap={{ initial: 2, large: '2px' }}\n alignItems={'stretch'}\n marginLeft={{\n initial: 0,\n large: 2,\n }}\n marginRight={{\n initial: 0,\n large: 2,\n }}\n >\n {Children.map(children, (child) => (\n <li>{child}</li>\n ))}\n </Flex>\n </Flex>\n );\n};\n\nconst SubSectionHeader = styled.button`\n cursor: pointer;\n width: 100%;\n border: none;\n padding: 0;\n background: transparent;\n display: flex;\n align-items: center;\n border-radius: ${({ theme }) => theme.borderRadius};\n padding-left: ${({ theme }) => theme.spaces[3]};\n padding-right: ${({ theme }) => theme.spaces[3]};\n padding-top: ${({ theme }) => theme.spaces[2]};\n padding-bottom: ${({ theme }) => theme.spaces[2]};\n\n &:hover {\n background-color: ${({ theme }) => theme.colors.neutral100};\n }\n`;\n\nconst SubSectionLinkWrapper = styled.li`\n ${StyledLink} > div {\n padding-left: 36px;\n }\n`;\n\nconst SubSection = ({ label, children }: { label: string; children: React.ReactNode[] }) => {\n const [isOpen, setOpenLinks] = useState(true);\n const [contentHeight, setContentHeight] = useState(0);\n const listId = useId();\n const contentRef = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (contentRef.current) {\n setContentHeight(contentRef.current.scrollHeight);\n }\n }, [children]);\n\n const handleClick = () => {\n setOpenLinks((prev) => !prev);\n };\n\n return (\n <Box>\n <Flex justifyContent=\"space-between\">\n <SubSectionHeader onClick={handleClick} aria-expanded={isOpen} aria-controls={listId}>\n <ChevronDown\n aria-hidden\n fill=\"neutral500\"\n style={{\n transform: `rotate(${isOpen ? '0deg' : '-90deg'})`,\n transition: 'transform 0.5s',\n }}\n />\n <Box paddingLeft={2}>\n <Typography tag=\"span\" fontWeight=\"semiBold\" textColor=\"neutral800\">\n {label}\n </Typography>\n </Box>\n </SubSectionHeader>\n </Flex>\n <Flex\n ref={contentRef}\n tag=\"ul\"\n id={listId}\n direction=\"column\"\n gap=\"2px\"\n alignItems={'stretch'}\n style={{\n maxHeight: isOpen ? `${contentHeight}px` : 0,\n overflow: 'hidden',\n transition: 'max-height 0.5s cubic-bezier(0, 1, 0, 1)',\n }}\n >\n {Children.map(children, (child) => (\n <SubSectionLinkWrapper>{child}</SubSectionLinkWrapper>\n ))}\n </Flex>\n </Box>\n );\n};\n\nconst PageWrapper = styled(Box)`\n width: 100%;\n\n ${MainSubNav} {\n background-color: transparent;\n border-right: none;\n }\n\n ${({ theme }) => theme.breakpoints.medium} {\n overflow: hidden;\n\n ${MainSubNav} {\n top: 0;\n }\n }\n`;\n\nconst Content = ({ children }: { children: React.ReactNode }) => {\n return <ScrollArea>{children}</ScrollArea>;\n};\n\nexport const SubNav = {\n Main,\n Content,\n Header,\n Link,\n Sections,\n Section,\n SubSection,\n Folder: SubNavFolder,\n PageWrapper,\n};\n"],"names":["MainSubNav","styled","DSSubNav","$isFullPage","theme","colors","neutral0","breakpoints","medium","WIDTH_SIDE_NAVIGATION","neutral150","Main","children","isFullPage","props","_jsx","StyledLink","NavLink","neutral800","$depth","spaces","primary100","primary700","neutral100","LinkBullet","span","Link","label","endAction","handleClick","depth","bulleted","rest","onClick","Box","width","paddingRight","paddingTop","initial","large","paddingBottom","borderRadius","_jsxs","Flex","justifyContent","gap","flex","minWidth","alignItems","aria-hidden","Typography","tag","lineHeight","overflow","style","textOverflow","whiteSpace","StyledHeader","HEIGHT_TOP_NAVIGATION","HEIGHT_TOP_NAVIGATION_MEDIUM","Header","paddingLeft","variant","Sections","maxWidth","direction","Children","map","child","li","GuidedTourTooltip","sectionId","tours","contentTypeBuilder","CollectionTypes","YourTurn","SingleTypes","Components","Section","link","badgeLabel","listId","useId","popoverMenuItemClicked","useRef","linkButton","useMemo","menu","IconButton","withTooltip","size","Plus","onCloseMenuAutoFocus","event","suppressFocusCaptureOnMenuClose","current","preventDefault","Menu","Root","Trigger","icon","endIcon","Content","onCloseAutoFocus","zIndex","item","onSelectMenuItem","onSelect","Item","startIcon","position","textColor","Badge","backgroundColor","id","marginLeft","marginRight","SubSectionHeader","button","SubSectionLinkWrapper","SubSection","isOpen","setOpenLinks","useState","contentHeight","setContentHeight","contentRef","useEffect","scrollHeight","prev","aria-expanded","aria-controls","ChevronDown","fill","transform","transition","fontWeight","ref","maxHeight","PageWrapper","ScrollArea","SubNav","Folder","SubNavFolder"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { useState, useId, useRef, useEffect, useMemo } from 'react';
|
|
2
|
+
import { useState, useId, useRef, useEffect, Children, useMemo } from 'react';
|
|
3
3
|
import { SubNav as SubNav$1, Flex, Box, Typography, IconButton, Menu, Badge, ScrollArea } from '@strapi/design-system';
|
|
4
4
|
import { ChevronDown, Plus } from '@strapi/icons';
|
|
5
5
|
import { NavLink } from 'react-router-dom';
|
|
@@ -197,11 +197,9 @@ const Sections = ({ children, ...props })=>{
|
|
|
197
197
|
direction: "column",
|
|
198
198
|
alignItems: "stretch",
|
|
199
199
|
...props,
|
|
200
|
-
children:
|
|
201
|
-
return /*#__PURE__*/ jsx("li", {
|
|
200
|
+
children: Children.map(children, (child)=>/*#__PURE__*/ jsx("li", {
|
|
202
201
|
children: child
|
|
203
|
-
}
|
|
204
|
-
})
|
|
202
|
+
}))
|
|
205
203
|
})
|
|
206
204
|
});
|
|
207
205
|
};
|
|
@@ -349,11 +347,9 @@ const Section = ({ label, children, link, sectionId, badgeLabel })=>{
|
|
|
349
347
|
initial: 0,
|
|
350
348
|
large: 2
|
|
351
349
|
},
|
|
352
|
-
children:
|
|
353
|
-
return /*#__PURE__*/ jsx("li", {
|
|
350
|
+
children: Children.map(children, (child)=>/*#__PURE__*/ jsx("li", {
|
|
354
351
|
children: child
|
|
355
|
-
}
|
|
356
|
-
})
|
|
352
|
+
}))
|
|
357
353
|
})
|
|
358
354
|
]
|
|
359
355
|
});
|
|
@@ -437,11 +433,9 @@ const SubSection = ({ label, children })=>{
|
|
|
437
433
|
overflow: 'hidden',
|
|
438
434
|
transition: 'max-height 0.5s cubic-bezier(0, 1, 0, 1)'
|
|
439
435
|
},
|
|
440
|
-
children:
|
|
441
|
-
return /*#__PURE__*/ jsx(SubSectionLinkWrapper, {
|
|
436
|
+
children: Children.map(children, (child)=>/*#__PURE__*/ jsx(SubSectionLinkWrapper, {
|
|
442
437
|
children: child
|
|
443
|
-
}
|
|
444
|
-
})
|
|
438
|
+
}))
|
|
445
439
|
})
|
|
446
440
|
]
|
|
447
441
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubNav.mjs","sources":["../../../../../admin/src/components/SubNav.tsx"],"sourcesContent":["import { useEffect, useId, useRef, useState, useMemo } from 'react';\n\nimport {\n Badge,\n Box,\n Flex,\n IconButton,\n Menu,\n ScrollArea,\n SubNav as DSSubNav,\n Typography,\n} from '@strapi/design-system';\nimport { ChevronDown, Plus } from '@strapi/icons';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport {\n HEIGHT_TOP_NAVIGATION,\n HEIGHT_TOP_NAVIGATION_MEDIUM,\n WIDTH_SIDE_NAVIGATION,\n} from '../constants/theme';\n\nimport { tours } from './GuidedTour/Tours';\nimport { SubNavFolder } from './SubNavFolder';\n\nconst MainSubNav = styled(DSSubNav)<{ $isFullPage?: boolean }>`\n width: 100%;\n height: 100%;\n overflow: ${({ $isFullPage }) => ($isFullPage ? 'visible' : 'hidden')};\n background-color: ${({ theme }) => theme.colors.neutral0};\n display: flex;\n flex-direction: column;\n border-right: 0;\n box-shadow: none;\n position: relative;\n\n ${({ theme }) => theme.breakpoints.medium} {\n width: ${WIDTH_SIDE_NAVIGATION};\n position: sticky;\n top: 0;\n overflow: hidden;\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n overscroll-behavior: contain;\n }\n`;\n\nconst Main = ({\n children,\n isFullPage,\n ...props\n}: {\n children: React.ReactNode;\n isFullPage?: boolean;\n}) => (\n <MainSubNav $isFullPage={isFullPage} {...props}>\n {children}\n </MainSubNav>\n);\n\nconst StyledLink = styled(NavLink)<{ $depth?: number }>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n text-decoration: none;\n height: 32px;\n\n color: ${({ theme }) => theme.colors.neutral800};\n\n & > div {\n padding-left: ${({ theme, $depth = 0 }) =>\n `calc(${$depth} * ${theme.spaces[6]} + ${theme.spaces[3]})`};\n }\n\n &.active > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.primary100};\n color: ${theme.colors.primary700};\n font-weight: 500;\n `;\n }}\n }\n\n &:hover.active > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.primary100};\n `;\n }}\n }\n\n &:hover > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.neutral100};\n `;\n }}\n }\n\n &:focus-visible {\n outline-offset: -2px;\n }\n`;\n\nconst LinkBullet = styled.span`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: 0 0 16px;\n\n &::before {\n content: '';\n width: 4px;\n height: 4px;\n border-radius: 50%;\n background-color: currentColor;\n }\n`;\n\nconst Link = (\n props: Omit<React.ComponentProps<typeof StyledLink>, 'label' | '$depth'> & {\n endAction?: React.ReactNode;\n handleClick?: () => void;\n label: React.ReactNode;\n depth?: number;\n bulleted?: boolean;\n }\n) => {\n const { label, endAction, handleClick, depth, bulleted = false, ...rest } = props;\n\n return (\n <StyledLink {...rest} $depth={depth} onClick={handleClick}>\n <Box\n width={'100%'}\n paddingRight={3}\n paddingTop={{ initial: 1, large: 0 }}\n paddingBottom={{ initial: 1, large: 0 }}\n borderRadius={1}\n >\n <Flex justifyContent=\"space-between\" width=\"100%\" gap={{ initial: 2, large: 1 }}>\n <Flex gap={2} flex=\"1\" minWidth=\"0\" alignItems=\"center\">\n {bulleted && <LinkBullet aria-hidden />}\n <Typography\n tag=\"div\"\n lineHeight=\"32px\"\n overflow=\"hidden\"\n style={{ textOverflow: 'ellipsis', whiteSpace: 'nowrap', flex: 1, minWidth: 0 }}\n >\n {label}\n </Typography>\n </Flex>\n <Flex gap={2}>{endAction}</Flex>\n </Flex>\n </Box>\n </StyledLink>\n );\n};\n\nconst StyledHeader = styled(Flex)`\n flex: 0 0 ${HEIGHT_TOP_NAVIGATION};\n height: ${HEIGHT_TOP_NAVIGATION};\n\n ${({ theme }) => theme.breakpoints.medium} {\n flex: 0 0 ${HEIGHT_TOP_NAVIGATION_MEDIUM};\n height: ${HEIGHT_TOP_NAVIGATION_MEDIUM};\n }\n`;\n\nconst Header = ({ label }: { label: string }) => {\n return (\n <StyledHeader justifyContent=\"space-between\" paddingLeft={5} paddingRight={5}>\n <Typography variant=\"beta\" tag=\"h2\">\n {label}\n </Typography>\n </StyledHeader>\n );\n};\n\nconst Sections = ({\n children,\n ...props\n}: {\n children: React.ReactNode[];\n [key: string]: unknown;\n}) => {\n return (\n <Box\n paddingTop={{ initial: 5, large: 4 }}\n paddingBottom={{ initial: 5, large: 4 }}\n paddingLeft={{ initial: 3, large: 0 }}\n paddingRight={{ initial: 3, large: 0 }}\n maxWidth={{ initial: '100%', medium: WIDTH_SIDE_NAVIGATION }}\n >\n <Flex tag=\"ul\" gap={6} direction=\"column\" alignItems=\"stretch\" {...props}>\n {children.map((child, index) => {\n return <li key={index}>{child}</li>;\n })}\n </Flex>\n </Box>\n );\n};\n\n/**\n * TODO:\n * This would be better in the content-type-builder package directly but currently\n * the SubNav API does not expose a way to wrap the link, instead it wraps the link and the list\n */\nconst GuidedTourTooltip = ({\n sectionId,\n children,\n}: {\n sectionId?: string;\n children: React.ReactNode;\n}) => {\n switch (sectionId) {\n case 'models':\n return (\n <tours.contentTypeBuilder.CollectionTypes>\n <tours.contentTypeBuilder.YourTurn>{children}</tours.contentTypeBuilder.YourTurn>\n </tours.contentTypeBuilder.CollectionTypes>\n );\n case 'singleTypes':\n return (\n <tours.contentTypeBuilder.SingleTypes>{children}</tours.contentTypeBuilder.SingleTypes>\n );\n case 'components':\n return <tours.contentTypeBuilder.Components>{children}</tours.contentTypeBuilder.Components>;\n default:\n return children;\n }\n};\n\ntype SectionMenuItem = {\n startIcon?: React.ReactNode;\n onSelect: () => void;\n label: string;\n};\n\ntype SectionLink = {\n label: string;\n onClick?: () => void;\n menu?: SectionMenuItem[];\n /**\n * This suppresses the default behavior, where input focus returns to the \"+\" trigger when the popover closes.\n * This allows popover actions to change the focused element without it being immediately undone.\n */\n suppressFocusCaptureOnMenuClose?: boolean;\n};\n\nconst Section = ({\n label,\n children,\n link,\n sectionId,\n badgeLabel,\n}: {\n label: string;\n children: React.ReactNode[];\n link?: SectionLink;\n sectionId?: string;\n badgeLabel?: string;\n}) => {\n const listId = useId();\n\n // Used to track the selection of an item within the popover menu (as opposed to a menu dismissal via escape, click outside, etc.)\n const popoverMenuItemClicked = useRef(false);\n\n const linkButton = useMemo(() => {\n if (!link) return;\n\n if (!link.menu) {\n return (\n <GuidedTourTooltip sectionId={sectionId}>\n <IconButton\n onClick={link.onClick}\n label={link.label}\n variant=\"ghost\"\n withTooltip\n size=\"XS\"\n >\n <Plus />\n </IconButton>\n </GuidedTourTooltip>\n );\n }\n\n const onCloseMenuAutoFocus = (event: Event): void => {\n // If the result of a popover menu close deliberately shifts focus, the default Radix behavior (immediately restore focus on the popover's trigger element when the popover closes) would compete.\n if (link.suppressFocusCaptureOnMenuClose && popoverMenuItemClicked.current) {\n event.preventDefault();\n }\n\n popoverMenuItemClicked.current = false;\n };\n\n return (\n <GuidedTourTooltip sectionId={sectionId}>\n <Menu.Root>\n <Menu.Trigger\n label={link.label}\n tag={IconButton}\n icon={<Plus />}\n variant=\"ghost\"\n endIcon={null}\n size=\"XS\"\n />\n <Menu.Content onCloseAutoFocus={onCloseMenuAutoFocus} zIndex={2}>\n {link.menu.map((item) => {\n const onSelectMenuItem = () => {\n popoverMenuItemClicked.current = true;\n item.onSelect();\n };\n\n return (\n <Menu.Item onSelect={onSelectMenuItem} startIcon={item.startIcon} key={item.label}>\n {item.label}\n </Menu.Item>\n );\n })}\n </Menu.Content>\n </Menu.Root>\n </GuidedTourTooltip>\n );\n }, [link, sectionId]);\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Box\n paddingLeft={{\n initial: 3,\n large: 5,\n }}\n paddingRight={{\n initial: 3,\n large: 5,\n }}\n >\n <Flex position=\"relative\" justifyContent=\"space-between\" gap={2}>\n <Flex gap={2} alignItems=\"center\" minWidth={0}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {label}\n </Typography>\n {badgeLabel && (\n <Badge backgroundColor=\"neutral150\" textColor=\"neutral600\">\n {badgeLabel}\n </Badge>\n )}\n </Flex>\n <Flex gap={1}>{linkButton}</Flex>\n </Flex>\n </Box>\n <Flex\n tag=\"ol\"\n id={listId}\n direction=\"column\"\n gap={{ initial: 2, large: '2px' }}\n alignItems={'stretch'}\n marginLeft={{\n initial: 0,\n large: 2,\n }}\n marginRight={{\n initial: 0,\n large: 2,\n }}\n >\n {children.map((child, index) => {\n return <li key={index}>{child}</li>;\n })}\n </Flex>\n </Flex>\n );\n};\n\nconst SubSectionHeader = styled.button`\n cursor: pointer;\n width: 100%;\n border: none;\n padding: 0;\n background: transparent;\n display: flex;\n align-items: center;\n border-radius: ${({ theme }) => theme.borderRadius};\n padding-left: ${({ theme }) => theme.spaces[3]};\n padding-right: ${({ theme }) => theme.spaces[3]};\n padding-top: ${({ theme }) => theme.spaces[2]};\n padding-bottom: ${({ theme }) => theme.spaces[2]};\n\n &:hover {\n background-color: ${({ theme }) => theme.colors.neutral100};\n }\n`;\n\nconst SubSectionLinkWrapper = styled.li`\n ${StyledLink} > div {\n padding-left: 36px;\n }\n`;\n\nconst SubSection = ({ label, children }: { label: string; children: React.ReactNode[] }) => {\n const [isOpen, setOpenLinks] = useState(true);\n const [contentHeight, setContentHeight] = useState(0);\n const listId = useId();\n const contentRef = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (contentRef.current) {\n setContentHeight(contentRef.current.scrollHeight);\n }\n }, [children]);\n\n const handleClick = () => {\n setOpenLinks((prev) => !prev);\n };\n\n return (\n <Box>\n <Flex justifyContent=\"space-between\">\n <SubSectionHeader onClick={handleClick} aria-expanded={isOpen} aria-controls={listId}>\n <ChevronDown\n aria-hidden\n fill=\"neutral500\"\n style={{\n transform: `rotate(${isOpen ? '0deg' : '-90deg'})`,\n transition: 'transform 0.5s',\n }}\n />\n <Box paddingLeft={2}>\n <Typography tag=\"span\" fontWeight=\"semiBold\" textColor=\"neutral800\">\n {label}\n </Typography>\n </Box>\n </SubSectionHeader>\n </Flex>\n <Flex\n ref={contentRef}\n tag=\"ul\"\n id={listId}\n direction=\"column\"\n gap=\"2px\"\n alignItems={'stretch'}\n style={{\n maxHeight: isOpen ? `${contentHeight}px` : 0,\n overflow: 'hidden',\n transition: 'max-height 0.5s cubic-bezier(0, 1, 0, 1)',\n }}\n >\n {children.map((child, index) => {\n return <SubSectionLinkWrapper key={index}>{child}</SubSectionLinkWrapper>;\n })}\n </Flex>\n </Box>\n );\n};\n\nconst PageWrapper = styled(Box)`\n width: 100%;\n\n ${MainSubNav} {\n background-color: transparent;\n border-right: none;\n }\n\n ${({ theme }) => theme.breakpoints.medium} {\n overflow: hidden;\n\n ${MainSubNav} {\n top: 0;\n }\n }\n`;\n\nconst Content = ({ children }: { children: React.ReactNode }) => {\n return <ScrollArea>{children}</ScrollArea>;\n};\n\nexport const SubNav = {\n Main,\n Content,\n Header,\n Link,\n Sections,\n Section,\n SubSection,\n Folder: SubNavFolder,\n PageWrapper,\n};\n"],"names":["MainSubNav","styled","DSSubNav","$isFullPage","theme","colors","neutral0","breakpoints","medium","WIDTH_SIDE_NAVIGATION","neutral150","Main","children","isFullPage","props","_jsx","StyledLink","NavLink","neutral800","$depth","spaces","primary100","primary700","neutral100","LinkBullet","span","Link","label","endAction","handleClick","depth","bulleted","rest","onClick","Box","width","paddingRight","paddingTop","initial","large","paddingBottom","borderRadius","_jsxs","Flex","justifyContent","gap","flex","minWidth","alignItems","aria-hidden","Typography","tag","lineHeight","overflow","style","textOverflow","whiteSpace","StyledHeader","HEIGHT_TOP_NAVIGATION","HEIGHT_TOP_NAVIGATION_MEDIUM","Header","paddingLeft","variant","Sections","maxWidth","direction","map","child","index","li","GuidedTourTooltip","sectionId","tours","contentTypeBuilder","CollectionTypes","YourTurn","SingleTypes","Components","Section","link","badgeLabel","listId","useId","popoverMenuItemClicked","useRef","linkButton","useMemo","menu","IconButton","withTooltip","size","Plus","onCloseMenuAutoFocus","event","suppressFocusCaptureOnMenuClose","current","preventDefault","Menu","Root","Trigger","icon","endIcon","Content","onCloseAutoFocus","zIndex","item","onSelectMenuItem","onSelect","Item","startIcon","position","textColor","Badge","backgroundColor","id","marginLeft","marginRight","SubSectionHeader","button","SubSectionLinkWrapper","SubSection","isOpen","setOpenLinks","useState","contentHeight","setContentHeight","contentRef","useEffect","scrollHeight","prev","aria-expanded","aria-controls","ChevronDown","fill","transform","transition","fontWeight","ref","maxHeight","PageWrapper","ScrollArea","SubNav","Folder","SubNavFolder"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SubNav.mjs","sources":["../../../../../admin/src/components/SubNav.tsx"],"sourcesContent":["import { Children, useEffect, useId, useMemo, useRef, useState } from 'react';\n\nimport {\n Badge,\n Box,\n Flex,\n IconButton,\n Menu,\n ScrollArea,\n SubNav as DSSubNav,\n Typography,\n} from '@strapi/design-system';\nimport { ChevronDown, Plus } from '@strapi/icons';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport {\n HEIGHT_TOP_NAVIGATION,\n HEIGHT_TOP_NAVIGATION_MEDIUM,\n WIDTH_SIDE_NAVIGATION,\n} from '../constants/theme';\n\nimport { tours } from './GuidedTour/Tours';\nimport { SubNavFolder } from './SubNavFolder';\n\nconst MainSubNav = styled(DSSubNav)<{ $isFullPage?: boolean }>`\n width: 100%;\n height: 100%;\n overflow: ${({ $isFullPage }) => ($isFullPage ? 'visible' : 'hidden')};\n background-color: ${({ theme }) => theme.colors.neutral0};\n display: flex;\n flex-direction: column;\n border-right: 0;\n box-shadow: none;\n position: relative;\n\n ${({ theme }) => theme.breakpoints.medium} {\n width: ${WIDTH_SIDE_NAVIGATION};\n position: sticky;\n top: 0;\n overflow: hidden;\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n overscroll-behavior: contain;\n }\n`;\n\nconst Main = ({\n children,\n isFullPage,\n ...props\n}: {\n children: React.ReactNode;\n isFullPage?: boolean;\n}) => (\n <MainSubNav $isFullPage={isFullPage} {...props}>\n {children}\n </MainSubNav>\n);\n\nconst StyledLink = styled(NavLink)<{ $depth?: number }>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n text-decoration: none;\n height: 32px;\n\n color: ${({ theme }) => theme.colors.neutral800};\n\n & > div {\n padding-left: ${({ theme, $depth = 0 }) =>\n `calc(${$depth} * ${theme.spaces[6]} + ${theme.spaces[3]})`};\n }\n\n &.active > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.primary100};\n color: ${theme.colors.primary700};\n font-weight: 500;\n `;\n }}\n }\n\n &:hover.active > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.primary100};\n `;\n }}\n }\n\n &:hover > div {\n ${({ theme }) => {\n return `\n background-color: ${theme.colors.neutral100};\n `;\n }}\n }\n\n &:focus-visible {\n outline-offset: -2px;\n }\n`;\n\nconst LinkBullet = styled.span`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: 0 0 16px;\n\n &::before {\n content: '';\n width: 4px;\n height: 4px;\n border-radius: 50%;\n background-color: currentColor;\n }\n`;\n\nconst Link = (\n props: Omit<React.ComponentProps<typeof StyledLink>, 'label' | '$depth'> & {\n endAction?: React.ReactNode;\n handleClick?: () => void;\n label: React.ReactNode;\n depth?: number;\n bulleted?: boolean;\n }\n) => {\n const { label, endAction, handleClick, depth, bulleted = false, ...rest } = props;\n\n return (\n <StyledLink {...rest} $depth={depth} onClick={handleClick}>\n <Box\n width={'100%'}\n paddingRight={3}\n paddingTop={{ initial: 1, large: 0 }}\n paddingBottom={{ initial: 1, large: 0 }}\n borderRadius={1}\n >\n <Flex justifyContent=\"space-between\" width=\"100%\" gap={{ initial: 2, large: 1 }}>\n <Flex gap={2} flex=\"1\" minWidth=\"0\" alignItems=\"center\">\n {bulleted && <LinkBullet aria-hidden />}\n <Typography\n tag=\"div\"\n lineHeight=\"32px\"\n overflow=\"hidden\"\n style={{ textOverflow: 'ellipsis', whiteSpace: 'nowrap', flex: 1, minWidth: 0 }}\n >\n {label}\n </Typography>\n </Flex>\n <Flex gap={2}>{endAction}</Flex>\n </Flex>\n </Box>\n </StyledLink>\n );\n};\n\nconst StyledHeader = styled(Flex)`\n flex: 0 0 ${HEIGHT_TOP_NAVIGATION};\n height: ${HEIGHT_TOP_NAVIGATION};\n\n ${({ theme }) => theme.breakpoints.medium} {\n flex: 0 0 ${HEIGHT_TOP_NAVIGATION_MEDIUM};\n height: ${HEIGHT_TOP_NAVIGATION_MEDIUM};\n }\n`;\n\nconst Header = ({ label }: { label: string }) => {\n return (\n <StyledHeader justifyContent=\"space-between\" paddingLeft={5} paddingRight={5}>\n <Typography variant=\"beta\" tag=\"h2\">\n {label}\n </Typography>\n </StyledHeader>\n );\n};\n\nconst Sections = ({\n children,\n ...props\n}: {\n children: React.ReactNode[];\n [key: string]: unknown;\n}) => {\n return (\n <Box\n paddingTop={{ initial: 5, large: 4 }}\n paddingBottom={{ initial: 5, large: 4 }}\n paddingLeft={{ initial: 3, large: 0 }}\n paddingRight={{ initial: 3, large: 0 }}\n maxWidth={{ initial: '100%', medium: WIDTH_SIDE_NAVIGATION }}\n >\n <Flex tag=\"ul\" gap={6} direction=\"column\" alignItems=\"stretch\" {...props}>\n {Children.map(children, (child) => (\n <li>{child}</li>\n ))}\n </Flex>\n </Box>\n );\n};\n\n/**\n * TODO:\n * This would be better in the content-type-builder package directly but currently\n * the SubNav API does not expose a way to wrap the link, instead it wraps the link and the list\n */\nconst GuidedTourTooltip = ({\n sectionId,\n children,\n}: {\n sectionId?: string;\n children: React.ReactNode;\n}) => {\n switch (sectionId) {\n case 'models':\n return (\n <tours.contentTypeBuilder.CollectionTypes>\n <tours.contentTypeBuilder.YourTurn>{children}</tours.contentTypeBuilder.YourTurn>\n </tours.contentTypeBuilder.CollectionTypes>\n );\n case 'singleTypes':\n return (\n <tours.contentTypeBuilder.SingleTypes>{children}</tours.contentTypeBuilder.SingleTypes>\n );\n case 'components':\n return <tours.contentTypeBuilder.Components>{children}</tours.contentTypeBuilder.Components>;\n default:\n return children;\n }\n};\n\ntype SectionMenuItem = {\n startIcon?: React.ReactNode;\n onSelect: () => void;\n label: string;\n};\n\ntype SectionLink = {\n label: string;\n onClick?: () => void;\n menu?: SectionMenuItem[];\n /**\n * This suppresses the default behavior, where input focus returns to the \"+\" trigger when the popover closes.\n * This allows popover actions to change the focused element without it being immediately undone.\n */\n suppressFocusCaptureOnMenuClose?: boolean;\n};\n\nconst Section = ({\n label,\n children,\n link,\n sectionId,\n badgeLabel,\n}: {\n label: string;\n children: React.ReactNode[];\n link?: SectionLink;\n sectionId?: string;\n badgeLabel?: string;\n}) => {\n const listId = useId();\n\n // Used to track the selection of an item within the popover menu (as opposed to a menu dismissal via escape, click outside, etc.)\n const popoverMenuItemClicked = useRef(false);\n\n const linkButton = useMemo(() => {\n if (!link) return;\n\n if (!link.menu) {\n return (\n <GuidedTourTooltip sectionId={sectionId}>\n <IconButton\n onClick={link.onClick}\n label={link.label}\n variant=\"ghost\"\n withTooltip\n size=\"XS\"\n >\n <Plus />\n </IconButton>\n </GuidedTourTooltip>\n );\n }\n\n const onCloseMenuAutoFocus = (event: Event): void => {\n // If the result of a popover menu close deliberately shifts focus, the default Radix behavior (immediately restore focus on the popover's trigger element when the popover closes) would compete.\n if (link.suppressFocusCaptureOnMenuClose && popoverMenuItemClicked.current) {\n event.preventDefault();\n }\n\n popoverMenuItemClicked.current = false;\n };\n\n return (\n <GuidedTourTooltip sectionId={sectionId}>\n <Menu.Root>\n <Menu.Trigger\n label={link.label}\n tag={IconButton}\n icon={<Plus />}\n variant=\"ghost\"\n endIcon={null}\n size=\"XS\"\n />\n <Menu.Content onCloseAutoFocus={onCloseMenuAutoFocus} zIndex={2}>\n {link.menu.map((item) => {\n const onSelectMenuItem = () => {\n popoverMenuItemClicked.current = true;\n item.onSelect();\n };\n\n return (\n <Menu.Item onSelect={onSelectMenuItem} startIcon={item.startIcon} key={item.label}>\n {item.label}\n </Menu.Item>\n );\n })}\n </Menu.Content>\n </Menu.Root>\n </GuidedTourTooltip>\n );\n }, [link, sectionId]);\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Box\n paddingLeft={{\n initial: 3,\n large: 5,\n }}\n paddingRight={{\n initial: 3,\n large: 5,\n }}\n >\n <Flex position=\"relative\" justifyContent=\"space-between\" gap={2}>\n <Flex gap={2} alignItems=\"center\" minWidth={0}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {label}\n </Typography>\n {badgeLabel && (\n <Badge backgroundColor=\"neutral150\" textColor=\"neutral600\">\n {badgeLabel}\n </Badge>\n )}\n </Flex>\n <Flex gap={1}>{linkButton}</Flex>\n </Flex>\n </Box>\n <Flex\n tag=\"ol\"\n id={listId}\n direction=\"column\"\n gap={{ initial: 2, large: '2px' }}\n alignItems={'stretch'}\n marginLeft={{\n initial: 0,\n large: 2,\n }}\n marginRight={{\n initial: 0,\n large: 2,\n }}\n >\n {Children.map(children, (child) => (\n <li>{child}</li>\n ))}\n </Flex>\n </Flex>\n );\n};\n\nconst SubSectionHeader = styled.button`\n cursor: pointer;\n width: 100%;\n border: none;\n padding: 0;\n background: transparent;\n display: flex;\n align-items: center;\n border-radius: ${({ theme }) => theme.borderRadius};\n padding-left: ${({ theme }) => theme.spaces[3]};\n padding-right: ${({ theme }) => theme.spaces[3]};\n padding-top: ${({ theme }) => theme.spaces[2]};\n padding-bottom: ${({ theme }) => theme.spaces[2]};\n\n &:hover {\n background-color: ${({ theme }) => theme.colors.neutral100};\n }\n`;\n\nconst SubSectionLinkWrapper = styled.li`\n ${StyledLink} > div {\n padding-left: 36px;\n }\n`;\n\nconst SubSection = ({ label, children }: { label: string; children: React.ReactNode[] }) => {\n const [isOpen, setOpenLinks] = useState(true);\n const [contentHeight, setContentHeight] = useState(0);\n const listId = useId();\n const contentRef = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (contentRef.current) {\n setContentHeight(contentRef.current.scrollHeight);\n }\n }, [children]);\n\n const handleClick = () => {\n setOpenLinks((prev) => !prev);\n };\n\n return (\n <Box>\n <Flex justifyContent=\"space-between\">\n <SubSectionHeader onClick={handleClick} aria-expanded={isOpen} aria-controls={listId}>\n <ChevronDown\n aria-hidden\n fill=\"neutral500\"\n style={{\n transform: `rotate(${isOpen ? '0deg' : '-90deg'})`,\n transition: 'transform 0.5s',\n }}\n />\n <Box paddingLeft={2}>\n <Typography tag=\"span\" fontWeight=\"semiBold\" textColor=\"neutral800\">\n {label}\n </Typography>\n </Box>\n </SubSectionHeader>\n </Flex>\n <Flex\n ref={contentRef}\n tag=\"ul\"\n id={listId}\n direction=\"column\"\n gap=\"2px\"\n alignItems={'stretch'}\n style={{\n maxHeight: isOpen ? `${contentHeight}px` : 0,\n overflow: 'hidden',\n transition: 'max-height 0.5s cubic-bezier(0, 1, 0, 1)',\n }}\n >\n {Children.map(children, (child) => (\n <SubSectionLinkWrapper>{child}</SubSectionLinkWrapper>\n ))}\n </Flex>\n </Box>\n );\n};\n\nconst PageWrapper = styled(Box)`\n width: 100%;\n\n ${MainSubNav} {\n background-color: transparent;\n border-right: none;\n }\n\n ${({ theme }) => theme.breakpoints.medium} {\n overflow: hidden;\n\n ${MainSubNav} {\n top: 0;\n }\n }\n`;\n\nconst Content = ({ children }: { children: React.ReactNode }) => {\n return <ScrollArea>{children}</ScrollArea>;\n};\n\nexport const SubNav = {\n Main,\n Content,\n Header,\n Link,\n Sections,\n Section,\n SubSection,\n Folder: SubNavFolder,\n PageWrapper,\n};\n"],"names":["MainSubNav","styled","DSSubNav","$isFullPage","theme","colors","neutral0","breakpoints","medium","WIDTH_SIDE_NAVIGATION","neutral150","Main","children","isFullPage","props","_jsx","StyledLink","NavLink","neutral800","$depth","spaces","primary100","primary700","neutral100","LinkBullet","span","Link","label","endAction","handleClick","depth","bulleted","rest","onClick","Box","width","paddingRight","paddingTop","initial","large","paddingBottom","borderRadius","_jsxs","Flex","justifyContent","gap","flex","minWidth","alignItems","aria-hidden","Typography","tag","lineHeight","overflow","style","textOverflow","whiteSpace","StyledHeader","HEIGHT_TOP_NAVIGATION","HEIGHT_TOP_NAVIGATION_MEDIUM","Header","paddingLeft","variant","Sections","maxWidth","direction","Children","map","child","li","GuidedTourTooltip","sectionId","tours","contentTypeBuilder","CollectionTypes","YourTurn","SingleTypes","Components","Section","link","badgeLabel","listId","useId","popoverMenuItemClicked","useRef","linkButton","useMemo","menu","IconButton","withTooltip","size","Plus","onCloseMenuAutoFocus","event","suppressFocusCaptureOnMenuClose","current","preventDefault","Menu","Root","Trigger","icon","endIcon","Content","onCloseAutoFocus","zIndex","item","onSelectMenuItem","onSelect","Item","startIcon","position","textColor","Badge","backgroundColor","id","marginLeft","marginRight","SubSectionHeader","button","SubSectionLinkWrapper","SubSection","isOpen","setOpenLinks","useState","contentHeight","setContentHeight","contentRef","useEffect","scrollHeight","prev","aria-expanded","aria-controls","ChevronDown","fill","transform","transition","fontWeight","ref","maxHeight","PageWrapper","ScrollArea","SubNav","Folder","SubNavFolder"],"mappings":"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"}
|
|
@@ -31,9 +31,11 @@ function _interopNamespace(e) {
|
|
|
31
31
|
|
|
32
32
|
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
33
33
|
|
|
34
|
+
const EMPTY_HEADERS = [];
|
|
35
|
+
const EMPTY_ROWS = [];
|
|
34
36
|
const [TableProvider, useTable] = Context.createContext('Table');
|
|
35
37
|
const GenericTableProvider = TableProvider;
|
|
36
|
-
const Root = ({ children, defaultSelectedRows, footer, headers =
|
|
38
|
+
const Root = ({ children, defaultSelectedRows, footer, headers = EMPTY_HEADERS, isLoading = false, onSelectedRowsChange, rows = EMPTY_ROWS, selectedRows: selectedRowsProps })=>{
|
|
37
39
|
const [selectedRows = [], setSelectedRows] = useControllableState.useControllableState({
|
|
38
40
|
prop: selectedRowsProps,
|
|
39
41
|
defaultProp: defaultSelectedRows,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.js","sources":["../../../../../admin/src/components/Table.tsx"],"sourcesContent":["/**\n * TODO: honestly, half of this stuff should come straight from\n * the design-system and then we can just wrap round the bits for\n * the i18n & router interactions.\n *\n * So we'll do that in v2 of the DS.\n */\n\nimport * as React from 'react';\n\nimport {\n Flex,\n Typography,\n Th,\n Tbody,\n Td,\n Tooltip,\n Thead,\n Tr,\n RawTrProps,\n Checkbox,\n Loader,\n Table as DSTable,\n EmptyStateLayout,\n EmptyStateLayoutProps,\n TableProps,\n RawTdProps,\n} from '@strapi/design-system';\nimport { CaretDown } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useControllableState } from '../hooks/useControllableState';\nimport { useQueryParams, withEncodedUserParams } from '../hooks/useQueryParams';\n\nimport { createContext } from './Context';\n\n/* -------------------------------------------------------------------------------------------------\n * Root\n * -----------------------------------------------------------------------------------------------*/\n\ninterface BaseRow {\n id: string | number;\n}\n\ninterface TableHeader<TData = object, THeader = object> {\n /**\n * Typically used by plugins to render a custom cell\n */\n cellFormatter?: (data: TData, header: Omit<THeader, 'cellFormatter'>) => React.ReactNode;\n label: string;\n name: string;\n searchable?: boolean;\n sortable?: boolean;\n}\n\ninterface TableContextValue<TRow extends BaseRow, THeader extends TableHeader<TRow, THeader>>\n extends Pick<TableProps, 'footer'> {\n colCount: number;\n hasHeaderCheckbox: boolean;\n headers: THeader[];\n isLoading: boolean;\n rowCount: number;\n rows: TRow[];\n setHasHeaderCheckbox: (value: boolean) => void;\n selectedRows: TRow[];\n selectRow: (row: TRow | TRow[]) => void;\n}\n\ntype DefaultTableHeader = TableHeader<BaseRow, object>;\ntype DefaultTableContextValue = TableContextValue<BaseRow, DefaultTableHeader>;\n\nconst [TableProvider, useTable] = createContext<DefaultTableContextValue>('Table');\n\nconst GenericTableProvider = TableProvider as <\n TRow extends BaseRow,\n THeader extends TableHeader<TRow, THeader>,\n>(\n props: TableContextValue<TRow, THeader> & { children?: React.ReactNode }\n) => React.ReactElement;\n\ninterface RootProps<TRow extends BaseRow, THeader extends TableHeader<TRow, THeader>>\n extends Partial<\n Pick<\n TableContextValue<TRow, THeader>,\n 'footer' | 'headers' | 'isLoading' | 'rows' | 'selectedRows'\n >\n > {\n children?: React.ReactNode;\n defaultSelectedRows?: TRow[];\n onSelectedRowsChange?: (selectedRows: TRow[]) => void;\n}\n\nconst Root = <TRow extends BaseRow, THeader extends TableHeader<TRow, THeader>>({\n children,\n defaultSelectedRows,\n footer,\n headers = [],\n isLoading = false,\n onSelectedRowsChange,\n rows = [],\n selectedRows: selectedRowsProps,\n}: RootProps<TRow, THeader>) => {\n const [selectedRows = [], setSelectedRows] = useControllableState({\n prop: selectedRowsProps,\n defaultProp: defaultSelectedRows,\n onChange: onSelectedRowsChange,\n });\n const [hasHeaderCheckbox, setHasHeaderCheckbox] = React.useState(false);\n\n const rowCount = rows.length + 1;\n const colCount = hasHeaderCheckbox ? headers.length + 1 : headers.length;\n\n const selectRow: TableContextValue<TRow, THeader>['selectRow'] = (row) => {\n if (Array.isArray(row)) {\n setSelectedRows(row);\n } else {\n setSelectedRows((prev = []) => {\n const currentRowIndex = prev.findIndex((r) => r.id === row.id);\n if (currentRowIndex > -1) {\n return prev.toSpliced(currentRowIndex, 1);\n }\n\n return [...prev, row];\n });\n }\n };\n\n return (\n <GenericTableProvider\n colCount={colCount}\n hasHeaderCheckbox={hasHeaderCheckbox}\n setHasHeaderCheckbox={setHasHeaderCheckbox}\n footer={footer}\n headers={headers}\n isLoading={isLoading}\n rowCount={rowCount}\n rows={rows}\n selectedRows={selectedRows}\n selectRow={selectRow}\n >\n {children}\n </GenericTableProvider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Content\n * -----------------------------------------------------------------------------------------------*/\n\nconst Content = ({ children }: Table.ContentProps) => {\n const rowCount = useTable('Content', (state) => state.rowCount);\n const colCount = useTable('Content', (state) => state.colCount);\n const footer = useTable('Content', (state) => state.footer);\n\n return (\n <DSTable rowCount={rowCount} colCount={colCount} footer={footer}>\n {children}\n </DSTable>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Head\n * -----------------------------------------------------------------------------------------------*/\n\nconst Head = ({ children }: Table.HeadProps) => {\n return (\n <Thead>\n <Tr>{children}</Tr>\n </Thead>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderCell\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @description A header cell in your table, internally will set the query params for sorting to\n * be passed to your data-fetching function.\n */\nconst HeaderCell = <TData, THead>({ name, label, sortable }: TableHeader<TData, THead>) => {\n const [{ query }, setQuery] = useQueryParams<{\n sort?: `${string}:${'ASC' | 'DESC'}`;\n filters?: unknown;\n _q?: unknown;\n }>();\n const sort = query?.sort ?? '';\n const [sortBy, sortOrder] = sort.split(':');\n const { formatMessage } = useIntl();\n const isSorted = sortBy === name;\n\n const sortLabel = formatMessage(\n {\n id: 'components.TableHeader.sort',\n defaultMessage: 'Sort on {label}',\n },\n { label }\n );\n\n const handleClickSort = () => {\n if (sortable) {\n setQuery(\n withEncodedUserParams(query, {\n sort: `${name}:${isSorted && sortOrder === 'ASC' ? 'DESC' : 'ASC'}`,\n }),\n 'push',\n true\n );\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (sortable && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n handleClickSort();\n }\n };\n\n return (\n <SortableTh\n onClick={sortable ? handleClickSort : undefined}\n onKeyDown={sortable ? handleKeyDown : undefined}\n tabIndex={sortable ? 0 : undefined}\n aria-sort={isSorted ? (sortOrder === 'ASC' ? 'ascending' : 'descending') : undefined}\n $sortable={!!sortable}\n >\n <Tooltip label={sortable ? sortLabel : label}>\n <Flex gap={1}>\n <Typography textColor=\"neutral600\" tag=\"span\" variant=\"sigma\">\n {label}\n </Typography>\n {isSorted && sortable && <SortIcon $isUp={sortOrder === 'ASC'} />}\n </Flex>\n </Tooltip>\n </SortableTh>\n );\n};\n\nconst SortableTh = styled(Th)<{ $sortable: boolean }>`\n cursor: ${({ $sortable }) => ($sortable ? 'pointer' : 'default')};\n`;\n\nconst SortIcon = styled(CaretDown)<{\n $isUp: boolean;\n}>`\n transform: ${({ $isUp }) => `rotate(${$isUp ? '180' : '0'}deg)`};\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * ActionBar\n * -----------------------------------------------------------------------------------------------*/\n\nconst ActionBar = ({ children }: Table.ActionBarProps) => {\n const { formatMessage } = useIntl();\n const selectedRows = useTable('ActionBar', (state) => state.selectedRows);\n\n if (selectedRows.length === 0) return null;\n\n return (\n <Flex gap={2}>\n <Typography variant=\"omega\" textColor=\"neutral500\">\n {formatMessage(\n {\n id: 'content-manager.components.TableDelete.label',\n defaultMessage: '{number, plural, one {# row} other {# rows}} selected',\n },\n { number: selectedRows.length }\n )}\n </Typography>\n {children}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderCheckboxCell\n * -----------------------------------------------------------------------------------------------*/\n\nconst HeaderCheckboxCell = () => {\n const rows = useTable('HeaderCheckboxCell', (state) => state.rows);\n const selectedRows = useTable('HeaderCheckboxCell', (state) => state.selectedRows);\n const selectRow = useTable('HeaderCheckboxCell', (state) => state.selectRow);\n const setHasHeaderCheckbox = useTable(\n 'HeaderCheckboxCell',\n (state) => state.setHasHeaderCheckbox\n );\n\n const { formatMessage } = useIntl();\n\n const areAllEntriesSelected = selectedRows.length === rows.length && rows.length > 0;\n const isIndeterminate = !areAllEntriesSelected && selectedRows.length > 0;\n\n React.useEffect(() => {\n setHasHeaderCheckbox(true);\n\n return () => setHasHeaderCheckbox(false);\n }, [setHasHeaderCheckbox]);\n\n const handleSelectAll = () => {\n if (!areAllEntriesSelected) {\n selectRow(rows);\n } else {\n selectRow([]);\n }\n };\n\n return (\n <Th>\n <Checkbox\n aria-label={formatMessage({\n id: 'global.select-all-entries',\n defaultMessage: 'Select all entries',\n })}\n disabled={rows.length === 0}\n checked={isIndeterminate ? 'indeterminate' : areAllEntriesSelected}\n onCheckedChange={handleSelectAll}\n />\n </Th>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Empty\n * -----------------------------------------------------------------------------------------------*/\n\nconst Empty = (props: Table.EmptyProps) => {\n const { formatMessage } = useIntl();\n\n const rows = useTable('Empty', (state) => state.rows);\n const isLoading = useTable('Empty', (state) => state.isLoading);\n const colCount = useTable('Empty', (state) => state.colCount);\n\n /**\n * If we're loading or we have some data, we don't show the empty state.\n */\n if (rows.length > 0 || isLoading) {\n return null;\n }\n\n return (\n <Tbody>\n <Tr>\n <Td colSpan={colCount}>\n <EmptyStateLayout\n content={formatMessage({\n id: 'app.components.EmptyStateLayout.content-document',\n defaultMessage: 'No content found',\n })}\n hasRadius\n icon={<EmptyDocuments width=\"16rem\" />}\n {...props}\n />\n </Td>\n </Tr>\n </Tbody>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * LoadingBody\n * -----------------------------------------------------------------------------------------------*/\n\nconst Loading = ({ children = 'Loading content' }: Table.LoadingProps) => {\n const isLoading = useTable('Loading', (state) => state.isLoading);\n const colCount = useTable('Loading', (state) => state.colCount);\n\n if (!isLoading) {\n return null;\n }\n\n return (\n <Tbody>\n <Tr>\n <Td colSpan={colCount}>\n <Flex justifyContent=\"center\" padding={11} background=\"neutral0\">\n <Loader>{children}</Loader>\n </Flex>\n </Td>\n </Tr>\n </Tbody>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Body\n * -----------------------------------------------------------------------------------------------*/\n\nconst Body = ({ children }: Table.BodyProps) => {\n const isLoading = useTable('Body', (state) => state.isLoading);\n const rows = useTable('Body', (state) => state.rows);\n\n if (isLoading || rows.length === 0) {\n return null;\n }\n\n return <Tbody>{children}</Tbody>;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Row\n * -----------------------------------------------------------------------------------------------*/\nconst Row = (props: Table.RowProps) => {\n return <Tr {...props} />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Cell\n * -----------------------------------------------------------------------------------------------*/\nconst Cell = (props: Table.CellProps) => {\n return <Td {...props} />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Row\n * -----------------------------------------------------------------------------------------------*/\nconst CheckboxCell = ({ id, ...props }: Table.CheckboxCellProps) => {\n const rows = useTable('CheckboxCell', (state) => state.rows);\n const selectedRows = useTable('CheckboxCell', (state) => state.selectedRows);\n const selectRow = useTable('CheckboxCell', (state) => state.selectRow);\n\n const { formatMessage } = useIntl();\n\n const handleSelectRow = () => {\n const row = rows.find((row) => row.id === id);\n\n if (row !== undefined) {\n selectRow(row);\n }\n };\n\n const isChecked = selectedRows.findIndex((row) => row.id === id) > -1;\n\n return (\n <Cell {...props} onClick={(e) => e.stopPropagation()}>\n <Checkbox\n aria-label={formatMessage(\n {\n id: 'app.component.table.select.one-entry',\n defaultMessage: `Select {target}`,\n },\n { target: id }\n )}\n disabled={rows.length === 0}\n checked={isChecked}\n onCheckedChange={handleSelectRow}\n />\n </Cell>\n );\n};\n/* -------------------------------------------------------------------------------------------------\n * Exports\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @alpha we may move this component to the design-system.\n * @public\n * @description A generic table component composition. Internally handles the state of the table\n * such as selected rows, loading state, and more assuming the correct pieces are put togther.\n * @example\n * ```tsx\n * interace Data {\n * id: string;\n * name: string;\n * email: string;\n * }\n *\n * const ListView = () => {\n * const { data, isLoading } = useGetData<Data>();\n *\n * const headers: Table.Header<Data>[] = [\n * {\n * label: 'Name',\n * name: 'name',\n * sortable: true,\n * },\n * {\n * label: 'Email',\n * name: 'email',\n * sortable: true,\n * },\n * ];\n *\n * return (\n * <Table.Root rows={data} headers={headers} isLoading={isLoading}>\n * <Table.Content>\n * <Table.Head>\n * {headers.map((head) => (\n * <Table.HeaderCell key={head.name} {...head} />\n * ))}\n * </Table.Head>\n * <Table.Body>\n * <Table.Loading />\n * <Table.Empty />\n * {data.map((row) => (\n * <Table.Row key={row.id}>\n * <Table.Cell>{row.name}</Table.Cell>\n * <Table.Cell>{row.email}</Table.Cell>\n * </Table.Row>\n * ))}\n * </Table.Body>\n * </Table.Content>\n * </Table.Root>\n * );\n * };\n * ```\n */\nconst Table = {\n Root,\n Content,\n ActionBar,\n Head,\n HeaderCell,\n HeaderCheckboxCell,\n Body,\n CheckboxCell,\n Cell,\n Row,\n Loading,\n Empty,\n};\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace Table {\n export type Props<\n TData extends BaseRow,\n THeader extends TableHeader<TData, THeader> = TableHeader<TData, TableHeader>,\n > = RootProps<TData, THeader>;\n export interface ActionBarProps {\n children?: React.ReactNode;\n }\n\n export interface ContentProps {\n children: React.ReactNode;\n }\n\n export type Header<TData, THeader> = TableHeader<TData, THeader>;\n\n export interface HeadProps {\n children: React.ReactNode;\n }\n\n export interface EmptyProps extends Partial<EmptyStateLayoutProps> {}\n\n export interface LoadingProps {\n children?: React.ReactNode;\n }\n\n export interface BodyProps {\n children: React.ReactNode;\n }\n\n export interface RowProps extends RawTrProps {}\n\n export interface CellProps extends RawTdProps {}\n\n export interface CheckboxCellProps extends Pick<BaseRow, 'id'>, Omit<RawTdProps, 'id'> {}\n}\n\nexport { Table, useTable };\n"],"names":["TableProvider","useTable","createContext","GenericTableProvider","Root","children","defaultSelectedRows","footer","headers","isLoading","onSelectedRowsChange","rows","selectedRows","selectedRowsProps","setSelectedRows","useControllableState","prop","defaultProp","onChange","hasHeaderCheckbox","setHasHeaderCheckbox","React","useState","rowCount","length","colCount","selectRow","row","Array","isArray","prev","currentRowIndex","findIndex","r","id","toSpliced","_jsx","Content","state","DSTable","Head","Thead","Tr","HeaderCell","name","label","sortable","query","setQuery","useQueryParams","sort","sortBy","sortOrder","split","formatMessage","useIntl","isSorted","sortLabel","defaultMessage","handleClickSort","withEncodedUserParams","handleKeyDown","e","key","preventDefault","SortableTh","onClick","undefined","onKeyDown","tabIndex","aria-sort","$sortable","Tooltip","_jsxs","Flex","gap","Typography","textColor","tag","variant","SortIcon","$isUp","styled","Th","CaretDown","ActionBar","number","HeaderCheckboxCell","areAllEntriesSelected","isIndeterminate","useEffect","handleSelectAll","Checkbox","aria-label","disabled","checked","onCheckedChange","Empty","props","Tbody","Td","colSpan","EmptyStateLayout","content","hasRadius","icon","EmptyDocuments","width","Loading","justifyContent","padding","background","Loader","Body","Row","Cell","CheckboxCell","handleSelectRow","find","isChecked","stopPropagation","target","Table"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Table.js","sources":["../../../../../admin/src/components/Table.tsx"],"sourcesContent":["/**\n * TODO: honestly, half of this stuff should come straight from\n * the design-system and then we can just wrap round the bits for\n * the i18n & router interactions.\n *\n * So we'll do that in v2 of the DS.\n */\n\nimport * as React from 'react';\n\nimport {\n Flex,\n Typography,\n Th,\n Tbody,\n Td,\n Tooltip,\n Thead,\n Tr,\n RawTrProps,\n Checkbox,\n Loader,\n Table as DSTable,\n EmptyStateLayout,\n EmptyStateLayoutProps,\n TableProps,\n RawTdProps,\n} from '@strapi/design-system';\nimport { CaretDown } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useControllableState } from '../hooks/useControllableState';\nimport { useQueryParams, withEncodedUserParams } from '../hooks/useQueryParams';\n\nimport { createContext } from './Context';\n\nconst EMPTY_HEADERS: [] = [];\nconst EMPTY_ROWS: [] = [];\n\n/* -------------------------------------------------------------------------------------------------\n * Root\n * -----------------------------------------------------------------------------------------------*/\n\ninterface BaseRow {\n id: string | number;\n}\n\ninterface TableHeader<TData = object, THeader = object> {\n /**\n * Typically used by plugins to render a custom cell\n */\n cellFormatter?: (data: TData, header: Omit<THeader, 'cellFormatter'>) => React.ReactNode;\n label: string;\n name: string;\n searchable?: boolean;\n sortable?: boolean;\n}\n\ninterface TableContextValue<\n TRow extends BaseRow,\n THeader extends TableHeader<TRow, THeader>,\n> extends Pick<TableProps, 'footer'> {\n colCount: number;\n hasHeaderCheckbox: boolean;\n headers: THeader[];\n isLoading: boolean;\n rowCount: number;\n rows: TRow[];\n setHasHeaderCheckbox: (value: boolean) => void;\n selectedRows: TRow[];\n selectRow: (row: TRow | TRow[]) => void;\n}\n\ntype DefaultTableHeader = TableHeader<BaseRow, object>;\ntype DefaultTableContextValue = TableContextValue<BaseRow, DefaultTableHeader>;\n\nconst [TableProvider, useTable] = createContext<DefaultTableContextValue>('Table');\n\nconst GenericTableProvider = TableProvider as <\n TRow extends BaseRow,\n THeader extends TableHeader<TRow, THeader>,\n>(\n props: TableContextValue<TRow, THeader> & { children?: React.ReactNode }\n) => React.ReactElement;\n\ninterface RootProps<\n TRow extends BaseRow,\n THeader extends TableHeader<TRow, THeader>,\n> extends Partial<\n Pick<\n TableContextValue<TRow, THeader>,\n 'footer' | 'headers' | 'isLoading' | 'rows' | 'selectedRows'\n >\n> {\n children?: React.ReactNode;\n defaultSelectedRows?: TRow[];\n onSelectedRowsChange?: (selectedRows: TRow[]) => void;\n}\n\nconst Root = <TRow extends BaseRow, THeader extends TableHeader<TRow, THeader>>({\n children,\n defaultSelectedRows,\n footer,\n headers = EMPTY_HEADERS,\n isLoading = false,\n onSelectedRowsChange,\n rows = EMPTY_ROWS,\n selectedRows: selectedRowsProps,\n}: RootProps<TRow, THeader>) => {\n const [selectedRows = [], setSelectedRows] = useControllableState({\n prop: selectedRowsProps,\n defaultProp: defaultSelectedRows,\n onChange: onSelectedRowsChange,\n });\n const [hasHeaderCheckbox, setHasHeaderCheckbox] = React.useState(false);\n\n const rowCount = rows.length + 1;\n const colCount = hasHeaderCheckbox ? headers.length + 1 : headers.length;\n\n const selectRow: TableContextValue<TRow, THeader>['selectRow'] = (row) => {\n if (Array.isArray(row)) {\n setSelectedRows(row);\n } else {\n setSelectedRows((prev = []) => {\n const currentRowIndex = prev.findIndex((r) => r.id === row.id);\n if (currentRowIndex > -1) {\n return prev.toSpliced(currentRowIndex, 1);\n }\n\n return [...prev, row];\n });\n }\n };\n\n return (\n <GenericTableProvider\n colCount={colCount}\n hasHeaderCheckbox={hasHeaderCheckbox}\n setHasHeaderCheckbox={setHasHeaderCheckbox}\n footer={footer}\n headers={headers}\n isLoading={isLoading}\n rowCount={rowCount}\n rows={rows}\n selectedRows={selectedRows}\n selectRow={selectRow}\n >\n {children}\n </GenericTableProvider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Content\n * -----------------------------------------------------------------------------------------------*/\n\nconst Content = ({ children }: Table.ContentProps) => {\n const rowCount = useTable('Content', (state) => state.rowCount);\n const colCount = useTable('Content', (state) => state.colCount);\n const footer = useTable('Content', (state) => state.footer);\n\n return (\n <DSTable rowCount={rowCount} colCount={colCount} footer={footer}>\n {children}\n </DSTable>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Head\n * -----------------------------------------------------------------------------------------------*/\n\nconst Head = ({ children }: Table.HeadProps) => {\n return (\n <Thead>\n <Tr>{children}</Tr>\n </Thead>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderCell\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @description A header cell in your table, internally will set the query params for sorting to\n * be passed to your data-fetching function.\n */\nconst HeaderCell = <TData, THead>({ name, label, sortable }: TableHeader<TData, THead>) => {\n const [{ query }, setQuery] = useQueryParams<{\n sort?: `${string}:${'ASC' | 'DESC'}`;\n filters?: unknown;\n _q?: unknown;\n }>();\n const sort = query?.sort ?? '';\n const [sortBy, sortOrder] = sort.split(':');\n const { formatMessage } = useIntl();\n const isSorted = sortBy === name;\n\n const sortLabel = formatMessage(\n {\n id: 'components.TableHeader.sort',\n defaultMessage: 'Sort on {label}',\n },\n { label }\n );\n\n const handleClickSort = () => {\n if (sortable) {\n setQuery(\n withEncodedUserParams(query, {\n sort: `${name}:${isSorted && sortOrder === 'ASC' ? 'DESC' : 'ASC'}`,\n }),\n 'push',\n true\n );\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (sortable && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n handleClickSort();\n }\n };\n\n return (\n <SortableTh\n onClick={sortable ? handleClickSort : undefined}\n onKeyDown={sortable ? handleKeyDown : undefined}\n tabIndex={sortable ? 0 : undefined}\n aria-sort={isSorted ? (sortOrder === 'ASC' ? 'ascending' : 'descending') : undefined}\n $sortable={!!sortable}\n >\n <Tooltip label={sortable ? sortLabel : label}>\n <Flex gap={1}>\n <Typography textColor=\"neutral600\" tag=\"span\" variant=\"sigma\">\n {label}\n </Typography>\n {isSorted && sortable && <SortIcon $isUp={sortOrder === 'ASC'} />}\n </Flex>\n </Tooltip>\n </SortableTh>\n );\n};\n\nconst SortableTh = styled(Th)<{ $sortable: boolean }>`\n cursor: ${({ $sortable }) => ($sortable ? 'pointer' : 'default')};\n`;\n\nconst SortIcon = styled(CaretDown)<{\n $isUp: boolean;\n}>`\n transform: ${({ $isUp }) => `rotate(${$isUp ? '180' : '0'}deg)`};\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * ActionBar\n * -----------------------------------------------------------------------------------------------*/\n\nconst ActionBar = ({ children }: Table.ActionBarProps) => {\n const { formatMessage } = useIntl();\n const selectedRows = useTable('ActionBar', (state) => state.selectedRows);\n\n if (selectedRows.length === 0) return null;\n\n return (\n <Flex gap={2}>\n <Typography variant=\"omega\" textColor=\"neutral500\">\n {formatMessage(\n {\n id: 'content-manager.components.TableDelete.label',\n defaultMessage: '{number, plural, one {# row} other {# rows}} selected',\n },\n { number: selectedRows.length }\n )}\n </Typography>\n {children}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderCheckboxCell\n * -----------------------------------------------------------------------------------------------*/\n\nconst HeaderCheckboxCell = () => {\n const rows = useTable('HeaderCheckboxCell', (state) => state.rows);\n const selectedRows = useTable('HeaderCheckboxCell', (state) => state.selectedRows);\n const selectRow = useTable('HeaderCheckboxCell', (state) => state.selectRow);\n const setHasHeaderCheckbox = useTable(\n 'HeaderCheckboxCell',\n (state) => state.setHasHeaderCheckbox\n );\n\n const { formatMessage } = useIntl();\n\n const areAllEntriesSelected = selectedRows.length === rows.length && rows.length > 0;\n const isIndeterminate = !areAllEntriesSelected && selectedRows.length > 0;\n\n React.useEffect(() => {\n setHasHeaderCheckbox(true);\n\n return () => setHasHeaderCheckbox(false);\n }, [setHasHeaderCheckbox]);\n\n const handleSelectAll = () => {\n if (!areAllEntriesSelected) {\n selectRow(rows);\n } else {\n selectRow([]);\n }\n };\n\n return (\n <Th>\n <Checkbox\n aria-label={formatMessage({\n id: 'global.select-all-entries',\n defaultMessage: 'Select all entries',\n })}\n disabled={rows.length === 0}\n checked={isIndeterminate ? 'indeterminate' : areAllEntriesSelected}\n onCheckedChange={handleSelectAll}\n />\n </Th>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Empty\n * -----------------------------------------------------------------------------------------------*/\n\nconst Empty = (props: Table.EmptyProps) => {\n const { formatMessage } = useIntl();\n\n const rows = useTable('Empty', (state) => state.rows);\n const isLoading = useTable('Empty', (state) => state.isLoading);\n const colCount = useTable('Empty', (state) => state.colCount);\n\n /**\n * If we're loading or we have some data, we don't show the empty state.\n */\n if (rows.length > 0 || isLoading) {\n return null;\n }\n\n return (\n <Tbody>\n <Tr>\n <Td colSpan={colCount}>\n <EmptyStateLayout\n content={formatMessage({\n id: 'app.components.EmptyStateLayout.content-document',\n defaultMessage: 'No content found',\n })}\n hasRadius\n icon={<EmptyDocuments width=\"16rem\" />}\n {...props}\n />\n </Td>\n </Tr>\n </Tbody>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * LoadingBody\n * -----------------------------------------------------------------------------------------------*/\n\nconst Loading = ({ children = 'Loading content' }: Table.LoadingProps) => {\n const isLoading = useTable('Loading', (state) => state.isLoading);\n const colCount = useTable('Loading', (state) => state.colCount);\n\n if (!isLoading) {\n return null;\n }\n\n return (\n <Tbody>\n <Tr>\n <Td colSpan={colCount}>\n <Flex justifyContent=\"center\" padding={11} background=\"neutral0\">\n <Loader>{children}</Loader>\n </Flex>\n </Td>\n </Tr>\n </Tbody>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Body\n * -----------------------------------------------------------------------------------------------*/\n\nconst Body = ({ children }: Table.BodyProps) => {\n const isLoading = useTable('Body', (state) => state.isLoading);\n const rows = useTable('Body', (state) => state.rows);\n\n if (isLoading || rows.length === 0) {\n return null;\n }\n\n return <Tbody>{children}</Tbody>;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Row\n * -----------------------------------------------------------------------------------------------*/\nconst Row = (props: Table.RowProps) => {\n return <Tr {...props} />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Cell\n * -----------------------------------------------------------------------------------------------*/\nconst Cell = (props: Table.CellProps) => {\n return <Td {...props} />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Row\n * -----------------------------------------------------------------------------------------------*/\nconst CheckboxCell = ({ id, ...props }: Table.CheckboxCellProps) => {\n const rows = useTable('CheckboxCell', (state) => state.rows);\n const selectedRows = useTable('CheckboxCell', (state) => state.selectedRows);\n const selectRow = useTable('CheckboxCell', (state) => state.selectRow);\n\n const { formatMessage } = useIntl();\n\n const handleSelectRow = () => {\n const row = rows.find((row) => row.id === id);\n\n if (row !== undefined) {\n selectRow(row);\n }\n };\n\n const isChecked = selectedRows.findIndex((row) => row.id === id) > -1;\n\n return (\n <Cell {...props} onClick={(e) => e.stopPropagation()}>\n <Checkbox\n aria-label={formatMessage(\n {\n id: 'app.component.table.select.one-entry',\n defaultMessage: `Select {target}`,\n },\n { target: id }\n )}\n disabled={rows.length === 0}\n checked={isChecked}\n onCheckedChange={handleSelectRow}\n />\n </Cell>\n );\n};\n/* -------------------------------------------------------------------------------------------------\n * Exports\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @alpha we may move this component to the design-system.\n * @public\n * @description A generic table component composition. Internally handles the state of the table\n * such as selected rows, loading state, and more assuming the correct pieces are put togther.\n * @example\n * ```tsx\n * interace Data {\n * id: string;\n * name: string;\n * email: string;\n * }\n *\n * const ListView = () => {\n * const { data, isLoading } = useGetData<Data>();\n *\n * const headers: Table.Header<Data>[] = [\n * {\n * label: 'Name',\n * name: 'name',\n * sortable: true,\n * },\n * {\n * label: 'Email',\n * name: 'email',\n * sortable: true,\n * },\n * ];\n *\n * return (\n * <Table.Root rows={data} headers={headers} isLoading={isLoading}>\n * <Table.Content>\n * <Table.Head>\n * {headers.map((head) => (\n * <Table.HeaderCell key={head.name} {...head} />\n * ))}\n * </Table.Head>\n * <Table.Body>\n * <Table.Loading />\n * <Table.Empty />\n * {data.map((row) => (\n * <Table.Row key={row.id}>\n * <Table.Cell>{row.name}</Table.Cell>\n * <Table.Cell>{row.email}</Table.Cell>\n * </Table.Row>\n * ))}\n * </Table.Body>\n * </Table.Content>\n * </Table.Root>\n * );\n * };\n * ```\n */\nconst Table = {\n Root,\n Content,\n ActionBar,\n Head,\n HeaderCell,\n HeaderCheckboxCell,\n Body,\n CheckboxCell,\n Cell,\n Row,\n Loading,\n Empty,\n};\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace Table {\n export type Props<\n TData extends BaseRow,\n THeader extends TableHeader<TData, THeader> = TableHeader<TData, TableHeader>,\n > = RootProps<TData, THeader>;\n export interface ActionBarProps {\n children?: React.ReactNode;\n }\n\n export interface ContentProps {\n children: React.ReactNode;\n }\n\n export type Header<TData, THeader> = TableHeader<TData, THeader>;\n\n export interface HeadProps {\n children: React.ReactNode;\n }\n\n export interface EmptyProps extends Partial<EmptyStateLayoutProps> {}\n\n export interface LoadingProps {\n children?: React.ReactNode;\n }\n\n export interface BodyProps {\n children: React.ReactNode;\n }\n\n export interface RowProps extends RawTrProps {}\n\n export interface CellProps extends RawTdProps {}\n\n export interface CheckboxCellProps extends Pick<BaseRow, 'id'>, Omit<RawTdProps, 'id'> {}\n}\n\nexport { Table, useTable };\n"],"names":["EMPTY_HEADERS","EMPTY_ROWS","TableProvider","useTable","createContext","GenericTableProvider","Root","children","defaultSelectedRows","footer","headers","isLoading","onSelectedRowsChange","rows","selectedRows","selectedRowsProps","setSelectedRows","useControllableState","prop","defaultProp","onChange","hasHeaderCheckbox","setHasHeaderCheckbox","React","useState","rowCount","length","colCount","selectRow","row","Array","isArray","prev","currentRowIndex","findIndex","r","id","toSpliced","_jsx","Content","state","DSTable","Head","Thead","Tr","HeaderCell","name","label","sortable","query","setQuery","useQueryParams","sort","sortBy","sortOrder","split","formatMessage","useIntl","isSorted","sortLabel","defaultMessage","handleClickSort","withEncodedUserParams","handleKeyDown","e","key","preventDefault","SortableTh","onClick","undefined","onKeyDown","tabIndex","aria-sort","$sortable","Tooltip","_jsxs","Flex","gap","Typography","textColor","tag","variant","SortIcon","$isUp","styled","Th","CaretDown","ActionBar","number","HeaderCheckboxCell","areAllEntriesSelected","isIndeterminate","useEffect","handleSelectAll","Checkbox","aria-label","disabled","checked","onCheckedChange","Empty","props","Tbody","Td","colSpan","EmptyStateLayout","content","hasRadius","icon","EmptyDocuments","width","Loading","justifyContent","padding","background","Loader","Body","Row","Cell","CheckboxCell","handleSelectRow","find","isChecked","stopPropagation","target","Table"],"mappings":"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"}
|
|
@@ -9,9 +9,11 @@ import { useControllableState } from '../hooks/useControllableState.mjs';
|
|
|
9
9
|
import { useQueryParams, withEncodedUserParams } from '../hooks/useQueryParams.mjs';
|
|
10
10
|
import { createContext } from './Context.mjs';
|
|
11
11
|
|
|
12
|
+
const EMPTY_HEADERS = [];
|
|
13
|
+
const EMPTY_ROWS = [];
|
|
12
14
|
const [TableProvider, useTable] = createContext('Table');
|
|
13
15
|
const GenericTableProvider = TableProvider;
|
|
14
|
-
const Root = ({ children, defaultSelectedRows, footer, headers =
|
|
16
|
+
const Root = ({ children, defaultSelectedRows, footer, headers = EMPTY_HEADERS, isLoading = false, onSelectedRowsChange, rows = EMPTY_ROWS, selectedRows: selectedRowsProps })=>{
|
|
15
17
|
const [selectedRows = [], setSelectedRows] = useControllableState({
|
|
16
18
|
prop: selectedRowsProps,
|
|
17
19
|
defaultProp: defaultSelectedRows,
|