From e44df5e94cd965739b15368c7c268bfbdc14ef48 Mon Sep 17 00:00:00 2001 From: Mikael Brevik Date: Tue, 28 May 2024 13:54:55 +0200 Subject: [PATCH] feat(widget): adds option to use inherited font in the widget (#295) * feat: configurable widget font * WIP --------- Co-authored-by: mortennordseth Co-authored-by: Adrian Santana Berg --- src/pages/widget/index.tsx | 28 +++++++++++++++++++++++++++- src/widget/widget.module.css | 7 +++++++ src/widget/widget.ts | 26 +++++++++++++++++++++++--- 3 files changed, 57 insertions(+), 4 deletions(-) diff --git a/src/pages/widget/index.tsx b/src/pages/widget/index.tsx index 111b89e0..c81c8906 100644 --- a/src/pages/widget/index.tsx +++ b/src/pages/widget/index.tsx @@ -38,6 +38,13 @@ const initializeCode = html` const widget = window.PlannerWeb.createWidget({ urlBase: 'https://reiseplanlegger.example.no/', language: 'nn', // supports 'nb', 'nn' and 'en' + + // Optional options + outputOverrideOptions: { + // Inherit font from page website. + // By default it uses Roboto as the hosted planner web solution. + inheritFont: false, + }, }); // After loading JS and CSS file it can be initialized @@ -171,7 +178,10 @@ function WidgetContent({

Demo

-

Note: Widget is without padding. Should be up to consumer to decide when integrating.

+

+ Note: Widget is without padding. Should be up to consumer to decide when + integrating. +

Installation (latest version v{data.latest.version})

@@ -184,6 +194,22 @@ function WidgetContent({

HTML output

+
+

+ Note: If using output override options when calling{' '} + createWidget and copy-paste the HTML code you would have + to add classes to the container (element with the class{' '} + widget-module__wrapper) manually. +

+ +
    +
  • + .widget-inheritFont: Inherit font family from the + website +
  • +
+
+

Scripts (UMD / ESM)

diff --git a/src/widget/widget.module.css b/src/widget/widget.module.css index 120754fa..8f63a7e7 100644 --- a/src/widget/widget.module.css +++ b/src/widget/widget.module.css @@ -321,3 +321,10 @@ .messageBox[hidden] { display: none; } +/** + * Configurable options for widget +*/ +.inheritFont, +.inheritFont * { + font-family: inherit !important; +} diff --git a/src/widget/widget.ts b/src/widget/widget.ts index 3a0b3e5c..449f452e 100644 --- a/src/widget/widget.ts +++ b/src/widget/widget.ts @@ -39,9 +39,13 @@ function createSettingsConstants(urlBase: string) { }; } +type OutputOverrideOptions = { + inheritFont?: boolean; +}; export type WidgetOptions = { urlBase: string; language?: Languages; + outputOverrideOptions?: Partial; }; export type PlannerWebOutput = { output: string; @@ -51,10 +55,18 @@ export type PlannerWebOutput = { export function createWidget({ urlBase, language = 'en', + outputOverrideOptions = {}, }: WidgetOptions): PlannerWebOutput { const texts = translations(language); const settings = createSettingsConstants(urlBase); - const output = createOutput(settings, texts); + + const defaultOutputOverrideOptions: OutputOverrideOptions = { + inheritFont: false, + ...outputOverrideOptions, + }; + + const output = createOutput(settings, texts, defaultOutputOverrideOptions); + return { output, init, @@ -225,7 +237,11 @@ class MessageBox extends HTMLElement { } } -function createOutput({ URL_BASE }: SettingConstants, texts: Texts) { +function createOutput( + { URL_BASE }: SettingConstants, + texts: Texts, + outputOverrideOptions: OutputOverrideOptions, +) { function searchItem(item: GeocoderFeature) { const img = venueIcon(item); const title = el('span', [item.name]); @@ -704,7 +720,11 @@ function createOutput({ URL_BASE }: SettingConstants, texts: Texts) { `; const output = html` -
+