:{' '}
- {format(strings.InstallDurationValueTemplate, latestEntry.installDuration)}
+
+
+
+
+ :
+
+ {formatDate(latestEntry.installedDate)}
-
- {strings.InstallVersionLabel}: {latestEntry.fullInstallVersion}
-
-
-
{strings.InstallCommandLabel}: {latestEntry.installCommand}
+
+
+ :
+
+ {latestEntry.fullInstallVersion}
{latestEntry.installChannel && (
-
-
{strings.InstallChannelLabel}: {latestEntry.installChannel}
+
+
+ :
+
+ {latestEntry.installChannel}
)}
+
-
-
- {strings.SeeAllInstallationsLinkText}
-
-
+
diff --git a/SharePointFramework/PortfolioExtensions/src/components/Footer/InstallVersion/index.tsx b/SharePointFramework/PortfolioExtensions/src/components/Footer/InstallVersion/index.tsx
index 8fe001ca9..692760edf 100644
--- a/SharePointFramework/PortfolioExtensions/src/components/Footer/InstallVersion/index.tsx
+++ b/SharePointFramework/PortfolioExtensions/src/components/Footer/InstallVersion/index.tsx
@@ -1,23 +1,28 @@
-import { ActionButton, TooltipHost } from '@fluentui/react'
import React, { FC, useContext } from 'react'
import { FooterContext } from '../context'
-import styles from './InstallVersion.module.scss'
import { InstallVersionTooltipContent } from './InstallVersionTooltipContent'
+import { Button, Popover, PopoverSurface, PopoverTrigger, Tooltip } from '@fluentui/react-components'
+import { getFluentIcon } from 'pp365-shared-library'
+import strings from 'PortfolioExtensionsStrings'
export const InstallVersion: FC = () => {
const context = useContext(FooterContext)
return (
-
}
- >
-
-
+
+
+
+
+
+
+
+
+
+
)
}
diff --git a/SharePointFramework/PortfolioExtensions/src/components/Footer/PromotedLinks/PromotedLinks.module.scss b/SharePointFramework/PortfolioExtensions/src/components/Footer/PromotedLinks/PromotedLinks.module.scss
deleted file mode 100644
index 66b19f80a..000000000
--- a/SharePointFramework/PortfolioExtensions/src/components/Footer/PromotedLinks/PromotedLinks.module.scss
+++ /dev/null
@@ -1,12 +0,0 @@
-.root {
- font-size: 12px;
-}
-
-.tooltipHost {
- font-size: 12px;
-}
-
-.tooltipContent {
- padding: 10px 15px;
- font-size: 12px;
-}
\ No newline at end of file
diff --git a/SharePointFramework/PortfolioExtensions/src/components/Footer/PromotedLinks/index.tsx b/SharePointFramework/PortfolioExtensions/src/components/Footer/PromotedLinks/index.tsx
index 8ae834171..42aa8f50d 100644
--- a/SharePointFramework/PortfolioExtensions/src/components/Footer/PromotedLinks/index.tsx
+++ b/SharePointFramework/PortfolioExtensions/src/components/Footer/PromotedLinks/index.tsx
@@ -1,29 +1,58 @@
-import { ActionButton, Link, TooltipHost } from '@fluentui/react'
import strings from 'PortfolioExtensionsStrings'
import React, { FC, useContext } from 'react'
import { FooterContext } from '../context'
-import styles from './PromotedLinks.module.scss'
+import {
+ Link,
+ Menu,
+ MenuButton,
+ MenuItem,
+ MenuList,
+ MenuPopover,
+ MenuTrigger,
+ Tooltip
+} from '@fluentui/react-components'
+import { getFluentIcon } from 'pp365-shared-library'
export const PromotedLinks: FC = () => {
const context = useContext(FooterContext)
return (
-
+
- }
- >
-
-
+
+
+
)
}
diff --git a/SharePointFramework/PortfolioExtensions/src/components/Footer/SiteSettings/index.tsx b/SharePointFramework/PortfolioExtensions/src/components/Footer/SiteSettings/index.tsx
new file mode 100644
index 000000000..da6ebc49d
--- /dev/null
+++ b/SharePointFramework/PortfolioExtensions/src/components/Footer/SiteSettings/index.tsx
@@ -0,0 +1,26 @@
+import strings from 'PortfolioExtensionsStrings'
+import React, { FC, useContext } from 'react'
+import { FooterContext } from '../context'
+import { Button, Tooltip } from '@fluentui/react-components'
+import { getFluentIcon } from 'pp365-shared-library'
+
+export const SiteSettings: FC = () => {
+ const context = useContext(FooterContext)
+ const isHidden = context.props.portalUrl !== context.props.pageContext.web.absoluteUrl
+ return (
+
+
+
+
+
+ )
+}
diff --git a/SharePointFramework/PortfolioExtensions/src/components/Footer/SiteSettingsLink/SiteSettingsLink.module.scss b/SharePointFramework/PortfolioExtensions/src/components/Footer/SiteSettingsLink/SiteSettingsLink.module.scss
deleted file mode 100644
index 040309df0..000000000
--- a/SharePointFramework/PortfolioExtensions/src/components/Footer/SiteSettingsLink/SiteSettingsLink.module.scss
+++ /dev/null
@@ -1,5 +0,0 @@
-.root {
- display: inline-block;
- font-size: 12px;
- margin: 0 8px 0 0;
-}
diff --git a/SharePointFramework/PortfolioExtensions/src/components/Footer/SiteSettingsLink/index.tsx b/SharePointFramework/PortfolioExtensions/src/components/Footer/SiteSettingsLink/index.tsx
deleted file mode 100644
index 8cc980b0c..000000000
--- a/SharePointFramework/PortfolioExtensions/src/components/Footer/SiteSettingsLink/index.tsx
+++ /dev/null
@@ -1,19 +0,0 @@
-import { ActionButton } from '@fluentui/react'
-import strings from 'PortfolioExtensionsStrings'
-import React, { FC, useContext } from 'react'
-import { FooterContext } from '../context'
-
-export const SiteSettingsLink: FC = () => {
- const context = useContext(FooterContext)
- const isHidden = context.props.portalUrl !== context.props.pageContext.web.absoluteUrl
- return (
-
- )
-}
diff --git a/SharePointFramework/PortfolioExtensions/src/components/Footer/index.tsx b/SharePointFramework/PortfolioExtensions/src/components/Footer/index.tsx
index 262358cbb..c9482951c 100644
--- a/SharePointFramework/PortfolioExtensions/src/components/Footer/index.tsx
+++ b/SharePointFramework/PortfolioExtensions/src/components/Footer/index.tsx
@@ -1,33 +1,2 @@
-import React, { FC } from 'react'
-import { ConfigurationLink } from './ConfigurationLink'
-import styles from './Footer.module.scss'
-import { InstallVersion } from './InstallVersion'
-import { PromotedLinks } from './PromotedLinks'
-import { FooterContext } from './context'
-import { IFooterProps } from './types'
-import { useFooter } from './useFooter'
-import { SiteSettingsLink } from './SiteSettingsLink'
-import { HelpContent } from './HelpContent'
-
-export const Footer: FC
= (props) => {
- const footer = useFooter(props)
- return (
-
-
-
- )
-}
-
+export * from './Footer'
export * from './types'
diff --git a/SharePointFramework/PortfolioExtensions/src/extensions/footer/manifest.json b/SharePointFramework/PortfolioExtensions/src/extensions/footer/manifest.json
index 8b0b69e81..9acb83a0e 100644
--- a/SharePointFramework/PortfolioExtensions/src/extensions/footer/manifest.json
+++ b/SharePointFramework/PortfolioExtensions/src/extensions/footer/manifest.json
@@ -1,6 +1,6 @@
{
"$schema": "https://developer.microsoft.com/json-schemas/spfx/client-side-extension-manifest.schema.json",
- "id": "84f27cec-ffde-4e00-a4cf-25c69f691054",
+ "id": "65d27710-49a9-4492-a4ec-3ac4f1e798d2",
"alias": "Footer",
"componentType": "Extension",
"extensionType": "ApplicationCustomizer",
diff --git a/SharePointFramework/PortfolioExtensions/src/extensions/footer/types.ts b/SharePointFramework/PortfolioExtensions/src/extensions/footer/types.ts
index 83247da6f..4c420f6ca 100644
--- a/SharePointFramework/PortfolioExtensions/src/extensions/footer/types.ts
+++ b/SharePointFramework/PortfolioExtensions/src/extensions/footer/types.ts
@@ -8,24 +8,9 @@ export interface IFooterApplicationCustomizerProperties {
export class InstallationEntry {
/**
- * Install command
+ * Install date
*/
- public installCommand: string
-
- /**
- * Install start time
- */
- public installStartTime: Date
-
- /**
- * Install end time
- */
- public installEndTime: Date
-
- /**
- * Install duration in minutes
- */
- public installDuration: number
+ public installedDate: Date
/**
* Full install version including git hash (format: `v1.2.3-abcdef`)
@@ -48,11 +33,7 @@ export class InstallationEntry {
* @param entryItem Item from the installation entry
*/
constructor(entryItem: Record) {
- this.installCommand = entryItem.InstallCommand
- this.installStartTime = new Date(entryItem.InstallStartTime)
- this.installEndTime = new Date(entryItem.InstallEndTime)
- const installDurationMs = this.installEndTime.getTime() - this.installStartTime.getTime()
- this.installDuration = Math.round(((installDurationMs % 86400000) % 3600000) / 60000)
+ this.installedDate = new Date(entryItem.InstallEndTime)
this.fullInstallVersion = entryItem.InstallVersion
this.installVersion = Version.tryParse(
this.fullInstallVersion.substring(0, this.fullInstallVersion.lastIndexOf('.'))
diff --git a/SharePointFramework/PortfolioExtensions/src/loc/_/en-us.js b/SharePointFramework/PortfolioExtensions/src/loc/_/en-us.js
index c65295e25..0845a66b5 100644
--- a/SharePointFramework/PortfolioExtensions/src/loc/_/en-us.js
+++ b/SharePointFramework/PortfolioExtensions/src/loc/_/en-us.js
@@ -21,18 +21,14 @@ define([], function () {
IdeaProjectDataTitle: 'Prosjektdata',
InstallationLogListName: 'Installasjonslogg',
InstallChannelLabel: 'Installation channel',
- InstallCommandLabel: 'Installation command',
- InstallDurationLabel: 'Installation duration',
- InstallDurationValueTemplate: '{0} minutes',
- InstallEndTimeLabel: 'Installation end time',
- InstallStartTimeLabel: 'Installation start time',
+ InstalledDateLabel: 'Installation date',
InstallVersionLabel: 'Version',
LastInstallHeaderText: 'Last installation',
LatestGitHubReleaseDownloadButtonText: 'Download the latest release from GitHub',
LatestGitHubReleaseIsNewerText: 'A newer version is available on GitHub',
LatestGitHubReleaseIsOlderText: 'The version installed is newer than the latest release from GitHub',
LatestGitHubReleaseIsSameText: 'The version installed is the latest release from GitHub',
- LatestGitHubReleaseLabel: 'Latest release from GitHub:',
+ LatestGitHubReleaseLabel: 'Latest release from GitHub',
LatestGitHubReleaseLinkTitle: 'See the latest release on GitHub',
LinksListName: 'Lenker',
LinksListText: 'Useful links',
diff --git a/SharePointFramework/PortfolioExtensions/src/loc/myStrings.d.ts b/SharePointFramework/PortfolioExtensions/src/loc/myStrings.d.ts
index 217d74cd1..2b2fcccfa 100644
--- a/SharePointFramework/PortfolioExtensions/src/loc/myStrings.d.ts
+++ b/SharePointFramework/PortfolioExtensions/src/loc/myStrings.d.ts
@@ -7,10 +7,14 @@ declare interface IPortfolioExtensionsStrings {
CloseLabel: string
CommentLabel: string
CommentLabelPlaceholder: string
- ConfigurationLinkText: string
+ ConfigurationDescription: string
+ ConfigurationLabel: string
ConsiderationChoice: string
CreateLabel: string
- HelpContentLinkText: string
+ HelpContentAvailableDescription: string
+ HelpContentAvailableLabel: string
+ HelpContentUnavailableDescription: string
+ HelpContentUnavailableLabel: string
HelpContentListName: string
IdeaAlreadyApproved: string
IdeaConfigurationTitle: string
@@ -22,13 +26,10 @@ declare interface IPortfolioExtensionsStrings {
IdeaProjectDataTitle: string
InstallationLogListName: string
InstallChannelLabel: string
- InstallCommandLabel: string
- InstallDurationLabel: string
- InstallDurationValueTemplate: string
- InstallEndTimeLabel: string
- InstallStartTimeLabel: string
+ InstalledDateLabel: string
InstallVersionLabel: string
LastInstallHeaderText: string
+ LastInstallDescription: string
LatestGitHubReleaseDownloadButtonText: string
LatestGitHubReleaseIsNewerText: any
LatestGitHubReleaseIsOlderText: any
@@ -36,13 +37,15 @@ declare interface IPortfolioExtensionsStrings {
LatestGitHubReleaseLabel: string
LatestGitHubReleaseLinkTitle: string
LinksListName: string
- LinksListText: ReactNode
+ LinksListDescription: string
+ LinksListLabel: string
RejectChoice: string
SeeAllInstallationsLinkText: string
SetRecommendationDefaultDescription: string
SetRecommendationSubtitle: string
SetRecommendationTitle: string
- SiteSettingsLinkText: ReactNode
+ SiteSettingsDescription: string
+ SiteSettingsLabel: string
SubmitLabel: string
}
diff --git a/SharePointFramework/PortfolioExtensions/src/loc/nb-no.js b/SharePointFramework/PortfolioExtensions/src/loc/nb-no.js
index f885a42b4..12b242058 100644
--- a/SharePointFramework/PortfolioExtensions/src/loc/nb-no.js
+++ b/SharePointFramework/PortfolioExtensions/src/loc/nb-no.js
@@ -8,10 +8,14 @@ define([], function () {
CloseLabel: 'Lukk',
CommentLabel: 'Kommentar',
CommentLabelPlaceholder: 'Kommentar til valg...',
- ConfigurationLinkText: 'Konfigurasjon av Prosjektportalen',
+ ConfigurationDescription: 'Gå til konfigurasjonssiden for Prosjektportalen',
+ ConfigurationLabel: 'Konfigurasjon av Prosjektportalen',
ConsiderationChoice: 'Under vurdering',
CreateLabel: 'Opprett',
- HelpContentLinkText: 'Hjelp tilgjengelig',
+ HelpContentAvailableDescription: 'Åpne hjelpedialog for denne siden',
+ HelpContentAvailableLabel: 'Hjelp tilgjengelig',
+ HelpContentUnavailableDescription: 'Denne siden har ingen hjelpeinnhold, dersom du mener det burde vært hjelpeinnhold her, vennligst kontakt din administrator',
+ HelpContentUnavailableLabel: 'Hjelp utilgjengelig',
HelpContentListName: 'Hjelpeinnhold',
IdeaAlreadyApproved: 'Denne ideen er allerede godkjent',
IdeaConfigurationTitle: 'Idékonfigurasjon',
@@ -23,27 +27,26 @@ define([], function () {
IdeaProjectDataTitle: 'Prosjektdata',
InstallationLogListName: 'Installasjonslogg',
InstallChannelLabel: 'Installasjonskanal',
- InstallCommandLabel: 'Installasjonskommando',
- InstallDurationLabel: 'Installasjonsvarighet',
- InstallDurationValueTemplate: '{0} minutter',
- InstallEndTimeLabel: 'Sluttidspunkt for installasjon',
- InstallStartTimeLabel: 'Starttidspunkt for installasjon',
+ InstalledDateLabel: 'Installasjonsdato',
InstallVersionLabel: 'Versjon',
LastInstallHeaderText: 'Siste installasjon',
+ LastInstallDescription: 'Her er en oversikt over siste installasjon av Prosjektportalen. Helt nederst finner du informasjon om siste release fra GitHub.',
LatestGitHubReleaseDownloadButtonText: 'Last ned siste release fra GitHub',
LatestGitHubReleaseIsNewerText: 'En nyere versjon er tilgjengelig på GitHub',
LatestGitHubReleaseIsOlderText: 'Versjonen som er installert er nyere enn siste release fra GitHub',
LatestGitHubReleaseIsSameText: 'Versjonen som er installert er siste release fra GitHub',
- LatestGitHubReleaseLabel: 'Siste release fra GitHub: ',
+ LatestGitHubReleaseLabel: 'Siste release fra GitHub',
LatestGitHubReleaseLinkTitle: 'Se siste release på GitHub',
LinksListName: 'Lenker',
- LinksListText: 'Nyttige lenker',
+ LinksListDescription: 'Lenker til nyttige sider. Lenkene kan konfigureres her: ',
+ LinksListLabel: 'Nyttige lenker',
RejectChoice: 'Avvis',
SeeAllInstallationsLinkText: 'Se alle installasjoner',
SetRecommendationDefaultDescription: 'Dersom ideen blir godkjent, vil det bli opprettet en detaljert idé-side for ideen og et element i Idébehandlingslisten.;Dersom ideen blir godkjent, vil det være mulig å opprette prosjektdata som kan bli brukt for provisjonering av området.;Tilknytt prosjektdata til ideen for å synkronisere data til et prosjekt senere. Når prosjektdata er opprettet, er det viktig å fylle ut ønsket metadata, deretter legge inn url for prosjektet, dette gjør at metadata synkroniseres til prosjektet ved provisjonering. Url til prosjektet kan enten fylles inn manuelt etter at et prosjekt har fått URL eller via en bestillingsløsning.',
SetRecommendationSubtitle: 'Velg anbefaling for: {0}',
SetRecommendationTitle: 'Sett anbefaling',
- SiteSettingsLinkText: 'Områdeinnstillinger',
+ SiteSettingsDescription: 'Vis alle områdeinnstillinger for Porteføljeområdet',
+ SiteSettingsLabel: 'Områdeinnstillinger',
SubmitLabel: 'Send'
}
})
diff --git a/SharePointFramework/ProjectExtensions/.editorconfig b/SharePointFramework/ProjectExtensions/.editorconfig
new file mode 100644
index 000000000..8ffcdc4ec
--- /dev/null
+++ b/SharePointFramework/ProjectExtensions/.editorconfig
@@ -0,0 +1,25 @@
+# EditorConfig helps developers define and maintain consistent
+# coding styles between different editors and IDEs
+# editorconfig.org
+
+root = true
+
+
+[*]
+
+# change these settings to your own preference
+indent_style = space
+indent_size = 2
+
+# we recommend you to keep these unchanged
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+
+[*.md]
+trim_trailing_whitespace = false
+
+[{package,bower}.json]
+indent_style = space
+indent_size = 2
\ No newline at end of file
diff --git a/SharePointFramework/shared-library/.editorconfig b/SharePointFramework/shared-library/.editorconfig
new file mode 100644
index 000000000..4e31a94b2
--- /dev/null
+++ b/SharePointFramework/shared-library/.editorconfig
@@ -0,0 +1,25 @@
+# EditorConfig helps developers define and maintain consistent
+# coding styles between different editors and IDEs
+# editorconfig.org
+
+root = true
+
+
+[*]
+
+# change these settings to your own preference
+indent_style = space
+indent_size = 2
+
+# we recommend you to keep these unchanged
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+
+[*.md]
+trim_trailing_whitespace = false
+
+[{package,bower}.json]
+indent_style = space
+indent_size = 2
diff --git a/SharePointFramework/shared-library/src/icons/iconCatalog.ts b/SharePointFramework/shared-library/src/icons/iconCatalog.ts
index f8975e562..5a14a8374 100644
--- a/SharePointFramework/shared-library/src/icons/iconCatalog.ts
+++ b/SharePointFramework/shared-library/src/icons/iconCatalog.ts
@@ -85,6 +85,16 @@ import {
HistoryRegular,
ImageFilled,
ImageRegular,
+ SettingsFilled,
+ SettingsRegular,
+ ContentSettingsFilled,
+ ContentSettingsRegular,
+ BoxToolboxFilled,
+ BoxToolboxRegular,
+ QuestionCircleFilled,
+ QuestionCircleRegular,
+ ArrowDownloadRegular,
+ ArrowDownloadFilled,
CircleFilled,
CircleRegular,
DismissCircleRegular,
@@ -267,6 +277,26 @@ export const iconCatalog = {
regular: PeopleCommunityRegular,
filled: PeopleCommunityFilled
},
+ Settings: {
+ regular: SettingsRegular,
+ filled: SettingsFilled
+ },
+ ContentSettings: {
+ regular: ContentSettingsRegular,
+ filled: ContentSettingsFilled
+ },
+ BoxToolbox: {
+ regular: BoxToolboxRegular,
+ filled: BoxToolboxFilled
+ },
+ QuestionCircle: {
+ regular: QuestionCircleRegular,
+ filled: QuestionCircleFilled
+ },
+ ArrowDownload: {
+ regular: ArrowDownloadRegular,
+ filled: ArrowDownloadFilled
+ },
Circle: {
regular: CircleRegular,
filled: CircleFilled
diff --git a/Templates/Portfolio/Objects/ClientSidePages/Konfigurasjon.xml b/Templates/Portfolio/Objects/ClientSidePages/Konfigurasjon.xml
index 483139cb7..a847f8746 100644
--- a/Templates/Portfolio/Objects/ClientSidePages/Konfigurasjon.xml
+++ b/Templates/Portfolio/Objects/ClientSidePages/Konfigurasjon.xml
@@ -5,10 +5,10 @@
-
-
+
+
-
+