@axis-backstage/plugin-vacation-calendar 0.11.2 → 0.11.4
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/CHANGELOG.md +13 -0
- package/dist/alpha.d.ts +2 -2
- package/dist/components/CalendarCard/CalendarCard.esm.js +5 -6
- package/dist/components/CalendarCard/CalendarCard.esm.js.map +1 -1
- package/dist/components/SignInContent/SignInContent.esm.js +9 -17
- package/dist/components/SignInContent/SignInContent.esm.js.map +1 -1
- package/package.json +18 -21
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @axis-backstage/plugin-vacation-calendar
|
|
2
2
|
|
|
3
|
+
## 0.11.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 6a30651: Updated to Backstage 1.54.6
|
|
8
|
+
- 3d6311e: Completed the BUI migration.
|
|
9
|
+
|
|
10
|
+
## 0.11.3
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- b7492ab: Updated to Backstage 1.53.1
|
|
15
|
+
|
|
3
16
|
## 0.11.2
|
|
4
17
|
|
|
5
18
|
### Patch Changes
|
package/dist/alpha.d.ts
CHANGED
|
@@ -39,9 +39,9 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
39
39
|
group?: string | false | undefined;
|
|
40
40
|
icon?: string | undefined;
|
|
41
41
|
};
|
|
42
|
-
output: _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
|
|
42
|
+
output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
|
|
43
43
|
optional: true;
|
|
44
|
-
}> | _backstage_frontend_plugin_api.ExtensionDataRef<
|
|
44
|
+
}> | _backstage_frontend_plugin_api.ExtensionDataRef<(entity: _backstage_catalog_model.Entity) => boolean, "catalog.entity-filter-function", {
|
|
45
45
|
optional: true;
|
|
46
46
|
}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "catalog.entity-filter-expression", {
|
|
47
47
|
optional: true;
|
|
@@ -7,14 +7,13 @@ import dayjs from 'dayjs';
|
|
|
7
7
|
import { useApi } from '@backstage/core-plugin-api';
|
|
8
8
|
import { useEntity, catalogApiRef, EntityRefLink } from '@backstage/plugin-catalog-react';
|
|
9
9
|
import { ErrorPanel, Content, ContentHeader, SupportButton, Progress, Avatar } from '@backstage/core-components';
|
|
10
|
-
import { Box, Flex, Button } from '@backstage/ui';
|
|
10
|
+
import { Box, Text, Flex, Button } from '@backstage/ui';
|
|
11
11
|
import { DateSelector } from '../DateSelector/DateSelector.esm.js';
|
|
12
12
|
import { getGroups, getScheduleItems } from './lib.esm.js';
|
|
13
13
|
import { fetchUserEntities, fetchGroupEntities } from './fetch.esm.js';
|
|
14
14
|
import { useAvailability } from '../../hooks/useAvailibility.esm.js';
|
|
15
15
|
import { useSignIn } from '../../hooks/useSignIn.esm.js';
|
|
16
16
|
import { SignInContent } from '../SignInContent/SignInContent.esm.js';
|
|
17
|
-
import Typography from '@mui/material/Typography';
|
|
18
17
|
|
|
19
18
|
const DEFAULT_NUM_DAYS = 60;
|
|
20
19
|
const DAY_IN_MILLISECONDS = 24 * 60 * 60 * 1e3;
|
|
@@ -71,10 +70,10 @@ const CalendarCard = () => {
|
|
|
71
70
|
}
|
|
72
71
|
return /* @__PURE__ */ jsxs(Content, { children: [
|
|
73
72
|
/* @__PURE__ */ jsx(ContentHeader, { title: "Out of Office Calendar", children: /* @__PURE__ */ jsx(SupportButton, { title: "Backstage Out Of Office Calendar", children: /* @__PURE__ */ jsxs(Box, { children: [
|
|
74
|
-
/* @__PURE__ */ jsx(
|
|
75
|
-
/* @__PURE__ */ jsx(
|
|
76
|
-
/* @__PURE__ */ jsx(
|
|
77
|
-
/* @__PURE__ */ jsxs(
|
|
73
|
+
/* @__PURE__ */ jsx(Text, { variant: "title-medium", children: "How it works" }),
|
|
74
|
+
/* @__PURE__ */ jsx(Text, { children: 'The "Out of Office"-calendar shows Away events. If you want your calendar events to be seen in the "Out of Office"-calendar, be sure to mark your presence as "Away" in outlook.' }),
|
|
75
|
+
/* @__PURE__ */ jsx(Text, { variant: "title-medium", children: "Limitations" }),
|
|
76
|
+
/* @__PURE__ */ jsxs(Text, { children: [
|
|
78
77
|
"Due to limitations in the Microsoft Graph API the maximum range of the dates is ",
|
|
79
78
|
DEFAULT_NUM_DAYS,
|
|
80
79
|
" days."
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarCard.esm.js","sources":["../../../src/components/CalendarCard/CalendarCard.tsx"],"sourcesContent":["import './CalendarCard.css';\nimport { useState } from 'react';\nimport useAsync from 'react-use/lib/useAsync';\nimport Timeline, {\n TimelineHeaders,\n SidebarHeader,\n DateHeader,\n} from 'react-calendar-timeline';\nimport dayjs from 'dayjs';\nimport { UserEntity } from '@backstage/catalog-model';\nimport { useApi } from '@backstage/core-plugin-api';\nimport {\n useEntity,\n catalogApiRef,\n EntityRefLink,\n} from '@backstage/plugin-catalog-react';\nimport {\n Content,\n ContentHeader,\n SupportButton,\n ErrorPanel,\n Progress,\n Avatar,\n} from '@backstage/core-components';\nimport { Box, Button, Flex } from '@backstage/ui';\nimport { DateSelector } from '../DateSelector';\nimport { getGroups, getScheduleItems } from './lib';\nimport { fetchGroupEntities, fetchUserEntities } from './fetch';\nimport { useAvailability } from '../../hooks/useAvailibility';\nimport { useSignIn } from '../../hooks';\nimport { SignInContent } from '../SignInContent';\nimport Typography from '@mui/material/Typography';\n\nconst DEFAULT_NUM_DAYS = 60;\nconst DAY_IN_MILLISECONDS = 24 * 60 * 60 * 1000;\nconst DAY_HEADER_MAX_ZOOM = DEFAULT_NUM_DAYS * DAY_IN_MILLISECONDS;\n\nexport const CalendarCard = () => {\n const { entity } = useEntity();\n const catalogApi = useApi(catalogApiRef);\n\n const [startDate, setStartDate] = useState(dayjs());\n const [endDate, setEndDate] = useState(\n dayjs().endOf('day').add(DEFAULT_NUM_DAYS, 'day'),\n );\n const [headerUnit, setHeaderUnit] = useState<'day' | 'month'>('day');\n\n const { isSignedIn, isInitialized, signIn } = useSignIn();\n\n useAsync(async () => signIn(true), [signIn]);\n\n const isUserEntity =\n entity.kind.toLowerCase() === 'user' && entity.metadata.name;\n const currentUserEmail =\n (isUserEntity && (entity as UserEntity).spec?.profile?.email) || false;\n\n const { value: users } = useAsync(async () => {\n return isUserEntity\n ? fetchUserEntities(catalogApi, entity)\n : fetchGroupEntities(catalogApi, entity);\n }, [catalogApi, entity]);\n\n const {\n availability,\n error,\n isLoading: isAvailabilityLoading,\n isFetching: isAvailabilityFetching,\n hasNextPage,\n fetchNextPage,\n } = useAvailability(users, startDate, endDate, isSignedIn);\n\n const showLoader =\n isAvailabilityLoading || isAvailabilityFetching || !isInitialized;\n\n const [groups, groupIndexMap] = getGroups(\n availability,\n currentUserEmail,\n users,\n );\n const scheduleItems = getScheduleItems(availability, groupIndexMap);\n\n if (users?.length === 0) {\n return (\n <ErrorPanel\n title=\"No users found.\"\n defaultExpanded\n error={Error('No users found for current entity.')}\n />\n );\n }\n if (error instanceof Error) {\n return (\n <ErrorPanel\n title=\"Microsoft Graph Error.\"\n defaultExpanded\n error={error as any}\n />\n );\n }\n\n return (\n <Content>\n <ContentHeader title=\"Out of Office Calendar\">\n <SupportButton title=\"Backstage Out Of Office Calendar\">\n <Box>\n <Typography variant=\"h6\">How it works</Typography>\n <Typography>\n The \"Out of Office\"-calendar shows Away events. If you want your\n calendar events to be seen in the \"Out of Office\"-calendar, be\n sure to mark your presence as \"Away\" in outlook.\n </Typography>\n <Typography variant=\"h6\">Limitations</Typography>\n <Typography>\n Due to limitations in the Microsoft Graph API the maximum range of\n the dates is {DEFAULT_NUM_DAYS} days.\n </Typography>\n </Box>\n </SupportButton>\n </ContentHeader>\n\n <Box>\n <Flex direction=\"row\" gap=\"3\" align=\"end\">\n <Box>\n <DateSelector\n onDateChange={d => {\n if (d) {\n const days = endDate.diff(d, 'day');\n if (days && Math.abs(days) > DEFAULT_NUM_DAYS) {\n setEndDate(d.endOf('day').add(DEFAULT_NUM_DAYS, 'day'));\n }\n setHeaderUnit('day');\n setStartDate(d);\n }\n }}\n initialDate={startDate}\n label=\"Start Date\"\n />\n </Box>\n <Box>\n <DateSelector\n onDateChange={d => {\n if (d) {\n const days = startDate.diff(d, 'day');\n if (days && Math.abs(days) > DEFAULT_NUM_DAYS) {\n setStartDate(\n d.endOf('day').subtract(DEFAULT_NUM_DAYS, 'day'),\n );\n }\n setHeaderUnit('day');\n setEndDate(d);\n }\n }}\n initialDate={endDate}\n label=\"End Date\"\n />\n </Box>\n <Button\n onClick={() => {\n fetchNextPage();\n }}\n isDisabled={showLoader || !hasNextPage}\n variant=\"secondary\"\n >\n Show more Users\n </Button>\n </Flex>\n {showLoader && (\n <Box py=\"2\">\n <Progress variant=\"query\" />\n </Box>\n )}\n {!isSignedIn && isInitialized && (\n <Box\n p=\"1\"\n pb=\"0\"\n minHeight=\"200px\"\n maxHeight=\"602px\"\n style={{ overflow: 'auto' }}\n >\n <SignInContent handleAuthClick={() => signIn(false)} />\n </Box>\n )}\n {!isAvailabilityLoading && isSignedIn && (\n <div\n style={{\n marginTop: 'var(--bui-space-3)',\n minHeight: '200px',\n overflow: 'auto',\n }}\n >\n <Timeline\n key={`${startDate.valueOf()}-${endDate.valueOf()}`}\n groups={groups}\n sidebarWidth={250}\n groupRenderer={({ group }) => {\n const groupContent = (\n <div className=\"custom-group\">\n <Avatar\n displayName={group.entity?.metadata.displayName as string}\n picture={group.entity?.spec.profile?.picture}\n customStyles={{\n width: 30,\n height: 30,\n }}\n />\n <span className=\"title\">{group.title}</span>\n </div>\n );\n\n return group.entity ? (\n <EntityRefLink entityRef={group.entity}>\n {groupContent}\n </EntityRefLink>\n ) : (\n groupContent\n );\n }}\n items={scheduleItems as any}\n itemTouchSendsClick={false}\n defaultTimeStart={startDate.valueOf()}\n defaultTimeEnd={endDate.valueOf()}\n onZoom={({ visibleTimeStart, visibleTimeEnd }) => {\n setHeaderUnit(\n visibleTimeEnd - visibleTimeStart <= DAY_HEADER_MAX_ZOOM\n ? 'day'\n : 'month',\n );\n }}\n >\n <TimelineHeaders>\n <SidebarHeader>\n {({ getRootProps }) => {\n return (\n <div\n {...getRootProps()}\n className=\"timeline-sidebar-header\"\n />\n );\n }}\n </SidebarHeader>\n <DateHeader unit={headerUnit === 'day' ? 'month' : 'year'} />\n <DateHeader unit={headerUnit} />\n </TimelineHeaders>\n </Timeline>\n </div>\n )}\n </Box>\n </Content>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CalendarCard.esm.js","sources":["../../../src/components/CalendarCard/CalendarCard.tsx"],"sourcesContent":["import './CalendarCard.css';\nimport { useState } from 'react';\nimport useAsync from 'react-use/lib/useAsync';\nimport Timeline, {\n TimelineHeaders,\n SidebarHeader,\n DateHeader,\n} from 'react-calendar-timeline';\nimport dayjs from 'dayjs';\nimport { UserEntity } from '@backstage/catalog-model';\nimport { useApi } from '@backstage/core-plugin-api';\nimport {\n useEntity,\n catalogApiRef,\n EntityRefLink,\n} from '@backstage/plugin-catalog-react';\nimport {\n Content,\n ContentHeader,\n SupportButton,\n ErrorPanel,\n Progress,\n Avatar,\n} from '@backstage/core-components';\nimport { Box, Button, Flex, Text } from '@backstage/ui';\nimport { DateSelector } from '../DateSelector';\nimport { getGroups, getScheduleItems } from './lib';\nimport { fetchGroupEntities, fetchUserEntities } from './fetch';\nimport { useAvailability } from '../../hooks/useAvailibility';\nimport { useSignIn } from '../../hooks';\nimport { SignInContent } from '../SignInContent';\n\nconst DEFAULT_NUM_DAYS = 60;\nconst DAY_IN_MILLISECONDS = 24 * 60 * 60 * 1000;\nconst DAY_HEADER_MAX_ZOOM = DEFAULT_NUM_DAYS * DAY_IN_MILLISECONDS;\n\nexport const CalendarCard = () => {\n const { entity } = useEntity();\n const catalogApi = useApi(catalogApiRef);\n\n const [startDate, setStartDate] = useState(dayjs());\n const [endDate, setEndDate] = useState(\n dayjs().endOf('day').add(DEFAULT_NUM_DAYS, 'day'),\n );\n const [headerUnit, setHeaderUnit] = useState<'day' | 'month'>('day');\n\n const { isSignedIn, isInitialized, signIn } = useSignIn();\n\n useAsync(async () => signIn(true), [signIn]);\n\n const isUserEntity =\n entity.kind.toLowerCase() === 'user' && entity.metadata.name;\n const currentUserEmail =\n (isUserEntity && (entity as UserEntity).spec?.profile?.email) || false;\n\n const { value: users } = useAsync(async () => {\n return isUserEntity\n ? fetchUserEntities(catalogApi, entity)\n : fetchGroupEntities(catalogApi, entity);\n }, [catalogApi, entity]);\n\n const {\n availability,\n error,\n isLoading: isAvailabilityLoading,\n isFetching: isAvailabilityFetching,\n hasNextPage,\n fetchNextPage,\n } = useAvailability(users, startDate, endDate, isSignedIn);\n\n const showLoader =\n isAvailabilityLoading || isAvailabilityFetching || !isInitialized;\n\n const [groups, groupIndexMap] = getGroups(\n availability,\n currentUserEmail,\n users,\n );\n const scheduleItems = getScheduleItems(availability, groupIndexMap);\n\n if (users?.length === 0) {\n return (\n <ErrorPanel\n title=\"No users found.\"\n defaultExpanded\n error={Error('No users found for current entity.')}\n />\n );\n }\n if (error instanceof Error) {\n return (\n <ErrorPanel\n title=\"Microsoft Graph Error.\"\n defaultExpanded\n error={error as any}\n />\n );\n }\n\n return (\n <Content>\n <ContentHeader title=\"Out of Office Calendar\">\n <SupportButton title=\"Backstage Out Of Office Calendar\">\n <Box>\n <Text variant=\"title-medium\">How it works</Text>\n <Text>\n The \"Out of Office\"-calendar shows Away events. If you want your\n calendar events to be seen in the \"Out of Office\"-calendar, be\n sure to mark your presence as \"Away\" in outlook.\n </Text>\n <Text variant=\"title-medium\">Limitations</Text>\n <Text>\n Due to limitations in the Microsoft Graph API the maximum range of\n the dates is {DEFAULT_NUM_DAYS} days.\n </Text>\n </Box>\n </SupportButton>\n </ContentHeader>\n\n <Box>\n <Flex direction=\"row\" gap=\"3\" align=\"end\">\n <Box>\n <DateSelector\n onDateChange={d => {\n if (d) {\n const days = endDate.diff(d, 'day');\n if (days && Math.abs(days) > DEFAULT_NUM_DAYS) {\n setEndDate(d.endOf('day').add(DEFAULT_NUM_DAYS, 'day'));\n }\n setHeaderUnit('day');\n setStartDate(d);\n }\n }}\n initialDate={startDate}\n label=\"Start Date\"\n />\n </Box>\n <Box>\n <DateSelector\n onDateChange={d => {\n if (d) {\n const days = startDate.diff(d, 'day');\n if (days && Math.abs(days) > DEFAULT_NUM_DAYS) {\n setStartDate(\n d.endOf('day').subtract(DEFAULT_NUM_DAYS, 'day'),\n );\n }\n setHeaderUnit('day');\n setEndDate(d);\n }\n }}\n initialDate={endDate}\n label=\"End Date\"\n />\n </Box>\n <Button\n onClick={() => {\n fetchNextPage();\n }}\n isDisabled={showLoader || !hasNextPage}\n variant=\"secondary\"\n >\n Show more Users\n </Button>\n </Flex>\n {showLoader && (\n <Box py=\"2\">\n <Progress variant=\"query\" />\n </Box>\n )}\n {!isSignedIn && isInitialized && (\n <Box\n p=\"1\"\n pb=\"0\"\n minHeight=\"200px\"\n maxHeight=\"602px\"\n style={{ overflow: 'auto' }}\n >\n <SignInContent handleAuthClick={() => signIn(false)} />\n </Box>\n )}\n {!isAvailabilityLoading && isSignedIn && (\n <div\n style={{\n marginTop: 'var(--bui-space-3)',\n minHeight: '200px',\n overflow: 'auto',\n }}\n >\n <Timeline\n key={`${startDate.valueOf()}-${endDate.valueOf()}`}\n groups={groups}\n sidebarWidth={250}\n groupRenderer={({ group }) => {\n const groupContent = (\n <div className=\"custom-group\">\n <Avatar\n displayName={group.entity?.metadata.displayName as string}\n picture={group.entity?.spec.profile?.picture}\n customStyles={{\n width: 30,\n height: 30,\n }}\n />\n <span className=\"title\">{group.title}</span>\n </div>\n );\n\n return group.entity ? (\n <EntityRefLink entityRef={group.entity}>\n {groupContent}\n </EntityRefLink>\n ) : (\n groupContent\n );\n }}\n items={scheduleItems as any}\n itemTouchSendsClick={false}\n defaultTimeStart={startDate.valueOf()}\n defaultTimeEnd={endDate.valueOf()}\n onZoom={({ visibleTimeStart, visibleTimeEnd }) => {\n setHeaderUnit(\n visibleTimeEnd - visibleTimeStart <= DAY_HEADER_MAX_ZOOM\n ? 'day'\n : 'month',\n );\n }}\n >\n <TimelineHeaders>\n <SidebarHeader>\n {({ getRootProps }) => {\n return (\n <div\n {...getRootProps()}\n className=\"timeline-sidebar-header\"\n />\n );\n }}\n </SidebarHeader>\n <DateHeader unit={headerUnit === 'day' ? 'month' : 'year'} />\n <DateHeader unit={headerUnit} />\n </TimelineHeaders>\n </Timeline>\n </div>\n )}\n </Box>\n </Content>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import Box from '@
|
|
3
|
-
import Button from '@mui/material/Button';
|
|
2
|
+
import { Box, Button } from '@backstage/ui';
|
|
4
3
|
|
|
5
4
|
const SignInContent = ({ handleAuthClick }) => {
|
|
6
5
|
return /* @__PURE__ */ jsx(Box, { position: "relative", height: "100%", width: "100%", children: /* @__PURE__ */ jsx(
|
|
@@ -9,22 +8,15 @@ const SignInContent = ({ handleAuthClick }) => {
|
|
|
9
8
|
height: "100%",
|
|
10
9
|
width: "80%",
|
|
11
10
|
display: "flex",
|
|
12
|
-
justifyContent: "center",
|
|
13
|
-
alignItems: "center",
|
|
14
11
|
position: "absolute",
|
|
15
|
-
p: 10,
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
onClick: handleAuthClick,
|
|
24
|
-
size: "large",
|
|
25
|
-
children: "Sign in"
|
|
26
|
-
}
|
|
27
|
-
)
|
|
12
|
+
p: "10",
|
|
13
|
+
style: {
|
|
14
|
+
justifyContent: "center",
|
|
15
|
+
alignItems: "center",
|
|
16
|
+
left: 0,
|
|
17
|
+
top: 0
|
|
18
|
+
},
|
|
19
|
+
children: /* @__PURE__ */ jsx(Button, { variant: "primary", onClick: handleAuthClick, size: "medium", children: "Sign in" })
|
|
28
20
|
}
|
|
29
21
|
) });
|
|
30
22
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SignInContent.esm.js","sources":["../../../src/components/SignInContent/SignInContent.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"SignInContent.esm.js","sources":["../../../src/components/SignInContent/SignInContent.tsx"],"sourcesContent":["import { Box, Button } from '@backstage/ui';\n\ntype Props = {\n handleAuthClick: () => void;\n};\n\nexport const SignInContent = ({ handleAuthClick }: Props) => {\n return (\n <Box position=\"relative\" height=\"100%\" width=\"100%\">\n <Box\n height=\"100%\"\n width=\"80%\"\n display=\"flex\"\n position=\"absolute\"\n p=\"10\"\n style={{\n justifyContent: 'center',\n alignItems: 'center',\n left: 0,\n top: 0,\n }}\n >\n <Button variant=\"primary\" onClick={handleAuthClick} size=\"medium\">\n Sign in\n </Button>\n </Box>\n </Box>\n );\n};\n"],"names":[],"mappings":";;;AAMO,MAAM,aAAA,GAAgB,CAAC,EAAE,eAAA,EAAgB,KAAa;AAC3D,EAAA,2BACG,GAAA,EAAA,EAAI,QAAA,EAAS,YAAW,MAAA,EAAO,MAAA,EAAO,OAAM,MAAA,EAC3C,QAAA,kBAAA,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,MAAA,EAAO,MAAA;AAAA,MACP,KAAA,EAAM,KAAA;AAAA,MACN,OAAA,EAAQ,MAAA;AAAA,MACR,QAAA,EAAS,UAAA;AAAA,MACT,CAAA,EAAE,IAAA;AAAA,MACF,KAAA,EAAO;AAAA,QACL,cAAA,EAAgB,QAAA;AAAA,QAChB,UAAA,EAAY,QAAA;AAAA,QACZ,IAAA,EAAM,CAAA;AAAA,QACN,GAAA,EAAK;AAAA,OACP;AAAA,MAEA,QAAA,kBAAA,GAAA,CAAC,UAAO,OAAA,EAAQ,SAAA,EAAU,SAAS,eAAA,EAAiB,IAAA,EAAK,UAAS,QAAA,EAAA,SAAA,EAElE;AAAA;AAAA,GACF,EACF,CAAA;AAEJ;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@axis-backstage/plugin-vacation-calendar",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.4",
|
|
4
4
|
"exports": {
|
|
5
5
|
".": {
|
|
6
6
|
"import": "./dist/index.esm.js",
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
},
|
|
16
16
|
"./package.json": "./package.json"
|
|
17
17
|
},
|
|
18
|
-
"main": "dist/index.esm.js",
|
|
19
|
-
"types": "dist/index.d.ts",
|
|
18
|
+
"main": "./dist/index.esm.js",
|
|
19
|
+
"types": "./dist/index.d.ts",
|
|
20
20
|
"typesVersions": {
|
|
21
21
|
"*": {
|
|
22
22
|
"alpha": [
|
|
@@ -30,10 +30,13 @@
|
|
|
30
30
|
"license": "Apache-2.0",
|
|
31
31
|
"publishConfig": {
|
|
32
32
|
"access": "public",
|
|
33
|
-
"main": "dist/index.esm.js",
|
|
34
|
-
"types": "dist/index.d.ts",
|
|
35
33
|
"directory": "_release/package"
|
|
36
34
|
},
|
|
35
|
+
"repository": {
|
|
36
|
+
"type": "git",
|
|
37
|
+
"url": "https://github.com/AxisCommunications/backstage-plugins",
|
|
38
|
+
"directory": "plugins/vacation-calendar"
|
|
39
|
+
},
|
|
37
40
|
"backstage": {
|
|
38
41
|
"role": "frontend-plugin",
|
|
39
42
|
"pluginId": "vacation-calendar",
|
|
@@ -58,16 +61,15 @@
|
|
|
58
61
|
"postpack": "backstage-cli package postpack"
|
|
59
62
|
},
|
|
60
63
|
"dependencies": {
|
|
61
|
-
"@backstage/catalog-model": "^1.
|
|
62
|
-
"@backstage/core-components": "^0.18.
|
|
63
|
-
"@backstage/core-plugin-api": "^1.12.
|
|
64
|
+
"@backstage/catalog-model": "^1.10.0",
|
|
65
|
+
"@backstage/core-components": "^0.18.13",
|
|
66
|
+
"@backstage/core-plugin-api": "^1.12.9",
|
|
64
67
|
"@backstage/errors": "^1.3.1",
|
|
65
|
-
"@backstage/frontend-plugin-api": "^0.
|
|
66
|
-
"@backstage/plugin-catalog-react": "^3.
|
|
67
|
-
"@backstage/ui": "^0.
|
|
68
|
+
"@backstage/frontend-plugin-api": "^0.18.0",
|
|
69
|
+
"@backstage/plugin-catalog-react": "^3.2.2",
|
|
70
|
+
"@backstage/ui": "^0.17.1",
|
|
68
71
|
"@internationalized/date": "^3.12.2",
|
|
69
72
|
"@microsoft/microsoft-graph-types": "^2.40.0",
|
|
70
|
-
"@mui/material": "^5.15.20",
|
|
71
73
|
"@tanstack/react-query": "^5.101.0",
|
|
72
74
|
"dayjs": "^1.11.10",
|
|
73
75
|
"interactjs": "^1.10.27",
|
|
@@ -81,15 +83,10 @@
|
|
|
81
83
|
"react-router-dom": "^6.3.0"
|
|
82
84
|
},
|
|
83
85
|
"devDependencies": {
|
|
84
|
-
"@backstage/catalog-client": "^1.16.
|
|
85
|
-
"@backstage/cli": "^0.36.
|
|
86
|
-
"@backstage/
|
|
87
|
-
"@
|
|
88
|
-
"@backstage/test-utils": "^1.7.19",
|
|
89
|
-
"@testing-library/dom": "^10.0.0",
|
|
90
|
-
"@testing-library/jest-dom": "^6.0.0",
|
|
91
|
-
"@testing-library/react": "^16.0.0",
|
|
92
|
-
"@testing-library/user-event": "^14.5.2"
|
|
86
|
+
"@backstage/catalog-client": "^1.16.1",
|
|
87
|
+
"@backstage/cli": "^0.36.5",
|
|
88
|
+
"@backstage/dev-utils": "^1.1.26",
|
|
89
|
+
"@testing-library/jest-dom": "^7.0.0"
|
|
93
90
|
},
|
|
94
91
|
"files": [
|
|
95
92
|
"dist"
|