diff --git a/gfi-ihk-2024/stories/components/common-content-article/CommonContentArticle.stories.js b/gfi-ihk-2024/stories/components/common-content-article/CommonContentArticle.stories.js new file mode 100644 index 0000000..3304ef5 --- /dev/null +++ b/gfi-ihk-2024/stories/components/common-content-article/CommonContentArticle.stories.js @@ -0,0 +1,13 @@ +import {createCommonContentArticle} from "./CommonContentArticleComponent"; + +export default { + title: 'Components/Common Content Article', + args: {}, +} + +const Template = ({...args}) => { + return createCommonContentArticle({...args}); +}; + +export const CommonContentArticle = Template.bind({}); +CommonContentArticle.args = {}; \ No newline at end of file diff --git a/gfi-ihk-2024/stories/components/common-content-article/CommonContentArticleComponent.js b/gfi-ihk-2024/stories/components/common-content-article/CommonContentArticleComponent.js new file mode 100644 index 0000000..47ff0c5 --- /dev/null +++ b/gfi-ihk-2024/stories/components/common-content-article/CommonContentArticleComponent.js @@ -0,0 +1,35 @@ +import './commonContent-article.scss'; +import {createElement} from "../../_global/scripts/helpers"; +import {lorem2} from "../../_global/scripts/lorem"; +import {createBlockquote} from "../../atoms/blockquote/BlockquoteComponent"; +import {createContact} from "../contact/ContactComponent"; +import {createPrintShare} from "../print-share/PrintShareComponent"; +import {createInfobox} from "../infobox/InfoboxComponent"; +import {createTopicTeasersSection} from "../../sections/topic-teasers/TopicTeasersComponent"; +import {createCommonContent} from "../common-content/CommonContentComponent"; + +export const createCommonContentArticle = ({ + addArticleComponents = true, + kicker = 'Titelthema', + headline = '5 Beispiele, wie sich Unternehmen für ihr Umfeld engagieren', +}) => { + const div = createElement('div'); + const article = createElement('article', ['col', 'magazine-article'], null, div); + + if (addArticleComponents) { + createElement('p', ['kicker'], kicker, article); + createElement('h1', [], headline, article); + } + article.appendChild(createCommonContent({})); + + const wrapper = createElement('div', ['content'], null, div); + wrapper.appendChild(createTopicTeasersSection({maxItems: 6})); + + const article2 = createElement('article', ['col', 'magazine-article'], null, div); + article2.appendChild(createInfobox({content: lorem2})); + article2.appendChild(createBlockquote({})); + article2.appendChild(createContact({})); + article2.appendChild(createPrintShare({})); + + return div; +} \ No newline at end of file diff --git a/gfi-ihk-2024/stories/components/common-content-article/commonContent-article.scss b/gfi-ihk-2024/stories/components/common-content-article/commonContent-article.scss new file mode 100644 index 0000000..0485511 --- /dev/null +++ b/gfi-ihk-2024/stories/components/common-content-article/commonContent-article.scss @@ -0,0 +1,73 @@ +@import '../../_global/styles/mixins'; +@import '../../_global/styles/vars'; + +.magazine-article article.col, .magazine-article.col { + position: relative; + z-index: 1; + width: 880px; + max-width: 66.6667%; + background-color: #fff; + margin: 0 auto; + padding-bottom: 0; + + @media(max-width: 1199px) { + max-width: 83.3333%; + } + @media(max-width: 999px) { + box-shadow: 0 0 0 10px white; + } + @media(max-width: 767px) { + max-width: 100%; + box-shadow: 0 -4px 0 2px white; + } + + .print-share { + margin-bottom: 0; + } + + .print-share .bookmarks.show-bookmarks { + margin-bottom: 1em; + } + + .image-box { + img { + max-width: 100%; + } + + &.off-grid{ + @media(min-width: 568px) { + float: left; + margin: 0.3em 20px 1em 0; + width: calc(50% - 10px); + } + + @media(min-width: 768px) { + margin: 0.3em 40px 1em calc(-12.5% - 5px); + width: calc(50% - 20px); + + @media(max-width: 1199px) { + margin: 0.3em 30px 1em calc(-10% - 3px); + width: calc(50% - 15px); + } + + @media(max-width: 999px) { + margin: 0.3em 20px 1em calc(-10% - 2px); + width: calc(50% - 10px); + } + } + + ~ *:not(p) { + clear: left; + } + } + + &.portrait{ + display: flex; + justify-content: center; + flex-flow: column; + img, figcaption{ + align-self: center; + } + } + } +} \ No newline at end of file diff --git a/gfi-ihk-2024/stories/components/common-content/CommonContent.stories.js b/gfi-ihk-2024/stories/components/common-content/CommonContent.stories.js new file mode 100644 index 0000000..6ca27c2 --- /dev/null +++ b/gfi-ihk-2024/stories/components/common-content/CommonContent.stories.js @@ -0,0 +1,13 @@ +import {createCommonContent} from "./CommonContentComponent"; + +export default { + title: 'Components/Common Content', + args: {}, +} + +const Template = ({...args}) => { + return createCommonContent({...args}); +}; + +export const CommonContent = Template.bind({}); +CommonContent.args = {}; \ No newline at end of file diff --git a/gfi-ihk-2024/stories/components/common-content/CommonContentComponent.js b/gfi-ihk-2024/stories/components/common-content/CommonContentComponent.js new file mode 100644 index 0000000..68f0e09 --- /dev/null +++ b/gfi-ihk-2024/stories/components/common-content/CommonContentComponent.js @@ -0,0 +1,40 @@ +import './commonContent.scss'; +import {createElement} from "../../_global/scripts/helpers"; +import {createButton} from "../../atoms/button/ButtonComponent"; + +export const createCommonContent = ({ + text = "Möchten Sie, dass zusätzliche regionale Inhalte Ihrer IHK zum Thema auf dieser Seite eingeblendet werden?", + noCta = { + label: 'Nein danke', + link: '#', + target: '_self', + }, + yesCta = { + label: 'Ja gerne', + link: '#', + target: '_self', + } +}) => { + const common = createElement('div', ['common-content']); + + const p = createElement('p', [], text, common); + const buttons = createElement('div', ['buttons'], null, common); + buttons.appendChild(createButton({ + label: noCta.label, + link: noCta.link, + color: 'primary-light', + size: 'small', + icon: 'schliessen', + iconPosition: 'icon-right' + })); + buttons.appendChild(createButton({ + label: yesCta.label, + link: yesCta.link, + color: 'secondary', + size: 'small', + icon: 'check', + iconPosition: 'icon-right' + })); + + return common; +} \ No newline at end of file diff --git a/gfi-ihk-2024/stories/components/common-content/commonContent.scss b/gfi-ihk-2024/stories/components/common-content/commonContent.scss new file mode 100644 index 0000000..b8663a7 --- /dev/null +++ b/gfi-ihk-2024/stories/components/common-content/commonContent.scss @@ -0,0 +1,20 @@ +@import '../../_global/styles/mixins'; +@import '../../_global/styles/vars'; + +.common-content { + margin-top: var(--section-margin); + padding: calc(var(--container-padding) / 2) var(--container-padding); + background: var(--theme-color-primary-dimmed-04); + background-image: url("data:image/svg+xml,%3csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='100%25' height='100%25' fill='none' stroke='%23B0C4D6' stroke-width='4' stroke-dasharray='0%2c 7' stroke-dashoffset='0' stroke-linecap='square'/%3e%3c/svg%3e"); + p { + + } + .buttons { + .btn { + margin-right: 1rem; + @media (max-width: 567px) { + margin-bottom: 1rem; + } + } + } +} \ No newline at end of file diff --git a/gfi-ihk-2024/stories/components/header/HeaderComponent.js b/gfi-ihk-2024/stories/components/header/HeaderComponent.js index 6ad8f54..3eeefff 100644 --- a/gfi-ihk-2024/stories/components/header/HeaderComponent.js +++ b/gfi-ihk-2024/stories/components/header/HeaderComponent.js @@ -8,6 +8,7 @@ import {createHeaderSearch} from "../header-search/HeaderSearchComponent"; export const createHeader = ({ + isZip = false, contactPhone, contactMail, contactLink = '#', @@ -51,7 +52,7 @@ export const createHeader = createElement('button', ['toggle-nav'], 'Menü', header); header.appendChild(createNav({})); - header.appendChild(createIhkSwitch({})); + header.appendChild(createIhkSwitch({zip: isZip})); new IHKHeader($(header)); diff --git a/gfi-ihk-2024/stories/components/ihk-switch/IHKSwitch.stories.js b/gfi-ihk-2024/stories/components/ihk-switch/IHKSwitch.stories.js index 836f354..5a96db9 100644 --- a/gfi-ihk-2024/stories/components/ihk-switch/IHKSwitch.stories.js +++ b/gfi-ihk-2024/stories/components/ihk-switch/IHKSwitch.stories.js @@ -7,7 +7,7 @@ export default { }, args: { currentIHK: 'Musterstadt', - myIHK: 'Hamburg', + myIHK: 'Hamburg' } } @@ -16,4 +16,9 @@ const Template = ({...args}) => { }; export const IHKSwitch = Template.bind({}); -IHKSwitch.args = {}; \ No newline at end of file +IHKSwitch.args = {}; + +export const IHKSwitchZip = Template.bind({}); +IHKSwitchZip.args = { + zip: true +}; \ No newline at end of file diff --git a/gfi-ihk-2024/stories/components/ihk-switch/IHKSwitchComponent.js b/gfi-ihk-2024/stories/components/ihk-switch/IHKSwitchComponent.js index e8224a8..b38f2df 100644 --- a/gfi-ihk-2024/stories/components/ihk-switch/IHKSwitchComponent.js +++ b/gfi-ihk-2024/stories/components/ihk-switch/IHKSwitchComponent.js @@ -3,35 +3,63 @@ import $ from 'jquery'; import {createElement} from "../../_global/scripts/helpers"; import IHKSwitch from "./ihk-switch"; import {createButton} from "../../atoms/button/ButtonComponent"; +import {createInputText} from "../../atoms/input-text/InputTextComponent"; +import {createSearchButton} from "../../atoms/search-button/SearchButtonComponent"; const Cookies = require('js-cookie'); export const createIhkSwitch = ({ currentIHK = 'Musterstadt', myIHK = 'Hamburg', + zip = false, + zipPlaceholder = 'z.B. 20146 Hamburg' }) => { const wrap = createElement('div', ['ihk-switch']); const step1 = createElement('div', ['step'], null, wrap); - const step2 = createElement('div', ['step'], null, wrap); - const step3 = createElement('div', ['step'], null, wrap); - const p1 = 'Sie befinden sich auf der Seite der ' + currentIHK + '. Möchten Sie diese Seite in einem Cookie als Ihre Heimat-IHK setzen?'; - const p2 = 'Sie befinden sich auf der Seite der ' + currentIHK + '. Bisher ist die ' + myIHK + ' als Ihre Heimat-IHK hinterlegt. Wollen Sie die Seite der ' + currentIHK + ' in einem Cookie als Ihre neue Heimat-IHK setzen?'; - const p3 = 'Sie werden zum Angebot der ' + myIHK + ' weitergeleitet.'; - createElement('button', ['closer'], null, wrap); + if (!zip) { + const step2 = createElement('div', ['step'], null, wrap); + const step3 = createElement('div', ['step'], null, wrap); + const p1 = 'Sie befinden sich auf der Seite der ' + currentIHK + '. Möchten Sie diese Seite in einem Cookie als Ihre Heimat-IHK setzen?'; + const p2 = 'Sie befinden sich auf der Seite der ' + currentIHK + '. Bisher ist die ' + myIHK + ' als Ihre Heimat-IHK hinterlegt. Wollen Sie die Seite der ' + currentIHK + ' in einem Cookie als Ihre neue Heimat-IHK setzen?'; + const p3 = 'Sie werden zum Angebot der ' + myIHK + ' weitergeleitet.'; - step1.dataset.step = 'form'; - createElement('p', [], p1, step1); - step1.appendChild(buildButtons()); + createElement('button', ['closer'], null, wrap); - step2.dataset.step = 'switch'; - createElement('p', [], p2, step2); - step2.appendChild(buildButtons()); + step1.dataset.step = 'form'; + createElement('p', [], p1, step1); + step1.appendChild(buildButtons()); - step3.dataset.step = 'success'; - createElement('p', [], p3, step3); + step2.dataset.step = 'switch'; + createElement('p', [], p2, step2); + step2.appendChild(buildButtons()); - window.sessionStorage.removeItem('my-ihk-ignore'); - Cookies.remove('my-ihk', {expires: 365}); + step3.dataset.step = 'success'; + createElement('p', [], p3, step3); + + window.sessionStorage.removeItem('my-ihk-ignore'); + Cookies.remove('my-ihk', {expires: 365}); + } else { + const p1 = 'Geben Sie Ihre Postleitzahl ein, um zu dem Angebot Ihrer IHK zu gelangen:'; + + createElement('button', ['closer'], null, wrap); + + step1.dataset.step = 'zip'; + createElement('p', [], p1, step1); + const inputWrapper = createElement('div', ['input-wrapper'], null, step1); + inputWrapper.appendChild(createInputText({ + placeholder: zipPlaceholder, + isRequired: true, + id: 'switch-zip', + name: 'switch-zip', + })); + inputWrapper.appendChild(createButton({ + label: '', + link: '#', + iconPosition: 'icon-inline', + icon: 'lokalisierung', + })); + step1.appendChild(buildOKButton()); + } $(document).ready(() => { new IHKSwitch($(wrap)); @@ -62,3 +90,20 @@ const buildButtons = () => { return buttons; } +const buildOKButton = () => { + const buttons = createElement('div', ['buttons', 'align-right']); + const ok = createButton({ + elementType: 'button', + label: 'OK', + color: 'secondary', + icon: 'check', + iconPosition: 'icon-right' + }) + + ok.classList.add('stay-here'); + + buttons.appendChild(ok); + + return buttons; +} + diff --git a/gfi-ihk-2024/stories/components/ihk-switch/ihk-switch.scss b/gfi-ihk-2024/stories/components/ihk-switch/ihk-switch.scss index bb93379..3c64615 100644 --- a/gfi-ihk-2024/stories/components/ihk-switch/ihk-switch.scss +++ b/gfi-ihk-2024/stories/components/ihk-switch/ihk-switch.scss @@ -68,7 +68,8 @@ &[data-show-step="geolocation"] [data-step="geolocation"], &[data-show-step="form"] [data-step="form"], &[data-show-step="switch"] [data-step="switch"], - &[data-show-step="success"] [data-step="success"] { + &[data-show-step="success"] [data-step="success"], + [data-step="zip"] { display: block; } @@ -112,10 +113,34 @@ } } + .input-wrapper { + position: relative; + .btn { + position: absolute; + right: 0; + top: 0; + height: 100%; + padding: 0; + border-radius: 0; + background: #193f69; + * { + display: none; + } + &:hover:after { + display: none; + } + } + } + .buttons { margin-top: 28px; margin-left: -2px; margin-right: -8px; + &.align-right { + display: flex; + justify-content: flex-end; + margin-right: 0; + } @media(max-width: 767px) { margin-top: 20px; diff --git a/gfi-ihk-2024/stories/pages/common-content/CommonContent.stories.js b/gfi-ihk-2024/stories/pages/common-content/CommonContent.stories.js new file mode 100644 index 0000000..70e3d14 --- /dev/null +++ b/gfi-ihk-2024/stories/pages/common-content/CommonContent.stories.js @@ -0,0 +1,18 @@ +import {createCommonContentPage} from "./CommonContentPage"; + +export default { + title: 'Pages/Common Content Page', + parameters: { + layout: 'fullscreen', + }, + argTypes: { + + }, +} + +const Template = ({...args}) => { + return createCommonContentPage({...args}); +}; + +export const CommonContentPage = Template.bind({}); +CommonContentPage.args = {}; \ No newline at end of file diff --git a/gfi-ihk-2024/stories/pages/common-content/CommonContentPage.js b/gfi-ihk-2024/stories/pages/common-content/CommonContentPage.js new file mode 100644 index 0000000..e3cbea7 --- /dev/null +++ b/gfi-ihk-2024/stories/pages/common-content/CommonContentPage.js @@ -0,0 +1,36 @@ +import {createElement} from "../../_global/scripts/helpers"; +import {createHeader} from "../../components/header/HeaderComponent"; +import {createMagazineHeader} from "../../components/magazine-header/MagazineHeaderComponent"; +import {createPageDetails} from "../../components/page-details/PageDetailsComponent"; +import {createMagazineCover} from "../../components/magazine-cover/MagazineCoverComponent"; +import {createTeasersSection} from "../../sections/teasers/TeasersComponent"; +import {createFooter} from "../../components/footer/FooterComponent"; +import {createCommonContentArticle} from "../../components/common-content-article/CommonContentArticleComponent"; + +export const createCommonContentPage = ({ + kicker = 'Titelthema', + headline = '5 Beispiele, wie sich Unternehmen für ihr Umfeld engagieren', +}) => { + const page = createElement('div', ['page', 'magazine-article']); + const header = createHeader({isZip: true}); + const magazineHeader = createMagazineHeader({ size: 'narrow' }); + page.appendChild(header); + page.appendChild(magazineHeader); + + const wrapper = createElement('div', ['page-wrapper'], null, page); + wrapper.appendChild(createPageDetails({})); + + const pageContent = createElement('main', ['page-content'], null, wrapper); + pageContent.appendChild(createMagazineCover({})); + + const container = createElement('div', ['container'], null, pageContent); + const row = createElement('div', ['row'], null, container); + const article = createCommonContentArticle({}); + row.appendChild(article); + + pageContent.appendChild(createTeasersSection({type: 'magazine', showReadingTime: true, headline: 'Mehr interessante Artikel'})) + + page.appendChild(createFooter({})); + + return page; +} \ No newline at end of file