@conduction/components 1.0.12 → 1.0.15

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.
Files changed (30) hide show
  1. package/lib/components/card/{HorizontalImageCard → horizontalImageCard}/HorizontalImageCard.d.ts +0 -0
  2. package/lib/components/card/{HorizontalImageCard → horizontalImageCard}/HorizontalImageCard.js +0 -0
  3. package/lib/components/card/{HorizontalImageCard → horizontalImageCard}/HorizontalImageCard.module.css +0 -0
  4. package/lib/components/card/{RichContentCard → richContentCard}/RichContentCard.d.ts +0 -0
  5. package/lib/components/card/{RichContentCard → richContentCard}/RichContentCard.js +0 -0
  6. package/lib/components/card/{RichContentCard → richContentCard}/RichContentCard.module.css +0 -0
  7. package/lib/components/formFields/index.d.ts +2 -1
  8. package/lib/components/formFields/index.js +2 -1
  9. package/lib/components/formFields/input.d.ts +5 -0
  10. package/lib/components/formFields/input.js +1 -0
  11. package/lib/components/formFields/select/select.d.ts +6 -6
  12. package/lib/components/formFields/select.d.ts +17 -0
  13. package/lib/components/formFields/select.js +14 -0
  14. package/lib/components/notificationPopUp/NotificationPopUp.module.css +5 -1
  15. package/lib/index.d.ts +2 -2
  16. package/lib/index.js +2 -2
  17. package/package.json +3 -2
  18. package/src/components/formFields/index.tsx +12 -1
  19. package/src/components/formFields/input.tsx +20 -0
  20. package/src/components/formFields/select/select.module.css +65 -0
  21. package/src/components/formFields/select/select.tsx +58 -0
  22. package/src/components/notificationPopUp/NotificationPopUp.module.css +5 -1
  23. package/src/index.ts +4 -0
  24. package/tsconfig.json +16 -5
  25. package/lib/components/denhaag-wrappers/paginations/Paginations.css +0 -10
  26. package/lib/components/denhaag-wrappers/paginations/Paginations.d.ts +0 -20
  27. package/lib/components/denhaag-wrappers/paginations/Paginations.js +0 -10
  28. package/lib/components/modals/NotificationModal.d.ts +0 -25
  29. package/lib/components/modals/NotificationModal.js +0 -34
  30. package/lib/components/modals/NotificationModal.module.css +0 -56
@@ -1,4 +1,5 @@
1
1
  import { InputText, InputPassword, InputEmail, InputDate, InputNumber } from "./input";
2
2
  import { Textarea } from "./textarea";
3
3
  import { InputCheckbox } from "./checkbox";
4
- export { InputText, InputPassword, InputEmail, InputDate, InputNumber, InputCheckbox, Textarea };
4
+ import { SelectSingle, SelectMultiple } from "./select/select";
5
+ export { InputText, InputPassword, InputEmail, InputDate, InputNumber, InputCheckbox, Textarea, SelectSingle, SelectMultiple, };
@@ -1,4 +1,5 @@
1
1
  import { InputText, InputPassword, InputEmail, InputDate, InputNumber } from "./input";
2
2
  import { Textarea } from "./textarea";
3
3
  import { InputCheckbox } from "./checkbox";
4
- export { InputText, InputPassword, InputEmail, InputDate, InputNumber, InputCheckbox, Textarea };
4
+ import { SelectSingle, SelectMultiple } from "./select/select";
5
+ export { InputText, InputPassword, InputEmail, InputDate, InputNumber, InputCheckbox, Textarea, SelectSingle, SelectMultiple, };
@@ -10,3 +10,8 @@ export declare const InputText: React.FC<IInputProps & IReactHookFormProps>;
10
10
  export declare const InputEmail: React.FC<IInputProps & IReactHookFormProps>;
11
11
  export declare const InputDate: React.FC<IInputProps & IReactHookFormProps>;
12
12
  export declare const InputNumber: React.FC<IInputProps & IReactHookFormProps>;
13
+ interface IInputFileProps {
14
+ accept?: string;
15
+ }
16
+ export declare const InputFile: React.FC<IInputFileProps & IInputProps & IReactHookFormProps>;
17
+ export {};
@@ -10,3 +10,4 @@ export const InputText = ({ disabled, name, defaultValue, validation, register,
10
10
  export const InputEmail = ({ disabled, name, defaultValue, validation, register, errors, }) => (_jsx(TextField, { type: "email", ...{ defaultValue, disabled }, ...register(name, { ...validation }), invalid: errors[name] }));
11
11
  export const InputDate = ({ disabled, name, defaultValue, validation, register, errors, }) => (_jsx(TextField, { type: "date", ...{ defaultValue, disabled }, ...register(name, { ...validation }), invalid: errors[name] }));
12
12
  export const InputNumber = ({ disabled, name, defaultValue, validation, register, errors, }) => (_jsx(TextField, { type: "number", ...{ defaultValue, disabled }, ...register(name, { ...validation }), invalid: errors[name] }));
13
+ export const InputFile = ({ disabled, name, accept, defaultValue, validation, register, }) => (_jsx("input", { className: "denhaag-textfield__input", type: "file", ...{ defaultValue, disabled, accept }, ...register(name, { ...validation }) }));
@@ -1,12 +1,12 @@
1
1
  import * as React from "react";
2
+ import { Control, FieldValues } from "react-hook-form";
2
3
  import { IReactHookFormProps } from "../types";
3
- export interface ISelectValue {
4
- label: string;
5
- value: string;
6
- }
7
4
  interface ISelectProps {
8
- control: any;
9
- options: ISelectValue[];
5
+ control: Control<FieldValues, any>;
6
+ options: {
7
+ label: string;
8
+ value: string;
9
+ }[];
10
10
  name: string;
11
11
  defaultValue?: any;
12
12
  disabled?: boolean;
@@ -0,0 +1,17 @@
1
+ import * as React from "react";
2
+ import { Control, FieldValues } from "react-hook-form";
3
+ import { IReactHookFormProps } from "./types";
4
+ export interface ISelectValue {
5
+ label: string;
6
+ value: string;
7
+ }
8
+ interface ISelectProps {
9
+ control: Control<FieldValues, any>;
10
+ options: ISelectValue[];
11
+ name: string;
12
+ defaultValue?: any;
13
+ disabled?: boolean;
14
+ }
15
+ export declare const SelectMultiple: React.FC<ISelectProps & IReactHookFormProps>;
16
+ export declare const SelectSingle: React.FC<ISelectProps & IReactHookFormProps>;
17
+ export {};
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as styles from "./select.module.css";
3
+ import { Controller } from "react-hook-form";
4
+ import ReactSelect from "react-select";
5
+ export const SelectMultiple = ({ name, options, errors, control, validation, defaultValue, disabled, }) => {
6
+ return (_jsx(Controller, { ...{ control, name }, rules: validation, render: ({ field: { onChange, value } }) => {
7
+ return (_jsx(ReactSelect, { className: styles.select, isMulti: true, isDisabled: disabled, ...{ options, value, onChange, errors, defaultValue } }));
8
+ } }));
9
+ };
10
+ export const SelectSingle = ({ name, options, errors, control, validation, }) => {
11
+ return (_jsx(Controller, { ...{ control, name }, rules: validation, render: ({ field: { onChange, value } }) => {
12
+ return _jsx(ReactSelect, { className: styles.select, ...{ options, onChange, value, errors }, isClearable: true });
13
+ } }));
14
+ };
@@ -1,3 +1,7 @@
1
+ :root {
2
+ --conduction-notification-popup-box-shadow: 0px 0px 6px 6px rgb(0 0 0 / 15%);
3
+ }
4
+
1
5
  :export {
2
6
  animationDuration: 200ms;
3
7
  }
@@ -9,7 +13,7 @@
9
13
  padding-inline-end: var(--nlportal-space-inline-lg);
10
14
  padding-block-start: var(--nlportal-space-block-lg);
11
15
  padding-block-end: var(--nlportal-space-block-lg);
12
- box-shadow: var(--conduction-notification-box-shadow);
16
+ box-shadow: var(--conduction-notification-popup-box-shadow);
13
17
  border-radius: var(--nlportal-document-border-radius);
14
18
  }
15
19
 
package/lib/index.d.ts CHANGED
@@ -3,7 +3,7 @@ import { DownloadCard, HorizontalImageCard, ImageAndDetailsCard, RichContentCard
3
3
  import { Container } from "./components/container/Container";
4
4
  import { Breadcrumbs } from "./components/denhaag-wrappers/breadcrumbs/Breadcrumbs";
5
5
  import { EditableTableRow } from "./components/editableTableRow/EditableTableRow";
6
- import { InputText, InputPassword, InputEmail, InputDate, InputNumber, Textarea, InputCheckbox } from "./components/formFields";
6
+ import { InputText, InputPassword, InputEmail, InputDate, InputNumber, Textarea, InputCheckbox, SelectMultiple, SelectSingle } from "./components/formFields";
7
7
  import { ImageDivider } from "./components/imageDivider/ImageDivider";
8
8
  import { AuthenticatedLogo, UnauthenticatedLogo } from "./components/logo/Logo";
9
9
  import { MetaIcon } from "./components/metaIcon/MetaIcon";
@@ -19,4 +19,4 @@ declare const NotificationPopUp: {
19
19
  };
20
20
  NotificationPopUp: import("react").FC<import("./components/notificationPopUp/NotificationPopUp").NotificationPopUpProps>;
21
21
  };
22
- export { DownloadCard, HorizontalImageCard, ImageAndDetailsCard, RichContentCard, DetailsCard, Container, Breadcrumbs, EditableTableRow, InputText, InputPassword, InputEmail, InputDate, InputNumber, Textarea, InputCheckbox, ImageDivider, AuthenticatedLogo, UnauthenticatedLogo, MetaIcon, PrivateRoute, StatusSteps, PrimaryTopNav, SecondaryTopNav, Tag, NotificationPopUp, };
22
+ export { DownloadCard, HorizontalImageCard, ImageAndDetailsCard, RichContentCard, DetailsCard, Container, Breadcrumbs, EditableTableRow, InputText, InputPassword, InputEmail, InputDate, InputNumber, Textarea, InputCheckbox, SelectMultiple, SelectSingle, ImageDivider, AuthenticatedLogo, UnauthenticatedLogo, MetaIcon, PrivateRoute, StatusSteps, PrimaryTopNav, SecondaryTopNav, Tag, NotificationPopUp, };
package/lib/index.js CHANGED
@@ -2,7 +2,7 @@ import { DownloadCard, HorizontalImageCard, ImageAndDetailsCard, RichContentCard
2
2
  import { Container } from "./components/container/Container";
3
3
  import { Breadcrumbs } from "./components/denhaag-wrappers/breadcrumbs/Breadcrumbs";
4
4
  import { EditableTableRow } from "./components/editableTableRow/EditableTableRow";
5
- import { InputText, InputPassword, InputEmail, InputDate, InputNumber, Textarea, InputCheckbox, } from "./components/formFields";
5
+ import { InputText, InputPassword, InputEmail, InputDate, InputNumber, Textarea, InputCheckbox, SelectMultiple, SelectSingle, } from "./components/formFields";
6
6
  import { ImageDivider } from "./components/imageDivider/ImageDivider";
7
7
  import { AuthenticatedLogo, UnauthenticatedLogo } from "./components/logo/Logo";
8
8
  import { MetaIcon } from "./components/metaIcon/MetaIcon";
@@ -12,4 +12,4 @@ import { PrimaryTopNav, SecondaryTopNav } from "./components/topNav/TopNav";
12
12
  import { Tag } from "./components/tag/Tag";
13
13
  import { NotificationPopUpController, NotificationPopUp as _NotificationPopUp, } from "./components/notificationPopUp/NotificationPopUp";
14
14
  const NotificationPopUp = { controller: NotificationPopUpController, NotificationPopUp: _NotificationPopUp };
15
- export { DownloadCard, HorizontalImageCard, ImageAndDetailsCard, RichContentCard, DetailsCard, Container, Breadcrumbs, EditableTableRow, InputText, InputPassword, InputEmail, InputDate, InputNumber, Textarea, InputCheckbox, ImageDivider, AuthenticatedLogo, UnauthenticatedLogo, MetaIcon, PrivateRoute, StatusSteps, PrimaryTopNav, SecondaryTopNav, Tag, NotificationPopUp, };
15
+ export { DownloadCard, HorizontalImageCard, ImageAndDetailsCard, RichContentCard, DetailsCard, Container, Breadcrumbs, EditableTableRow, InputText, InputPassword, InputEmail, InputDate, InputNumber, Textarea, InputCheckbox, SelectMultiple, SelectSingle, ImageDivider, AuthenticatedLogo, UnauthenticatedLogo, MetaIcon, PrivateRoute, StatusSteps, PrimaryTopNav, SecondaryTopNav, Tag, NotificationPopUp, };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@conduction/components",
3
- "version": "1.0.12",
3
+ "version": "1.0.15",
4
4
  "description": "React (Gatsby) components used within the Conduction Skeleton Application (and its implementations)",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -29,7 +29,8 @@
29
29
  "clsx": "^1.1.1",
30
30
  "gatsby": "^4.11.1",
31
31
  "react": "^17.0.1",
32
- "react-hook-form": "^7.29.0"
32
+ "react-hook-form": "7.29.0",
33
+ "react-select": "5.3.2"
33
34
  },
34
35
  "devDependencies": {
35
36
  "@types/node": "^17.0.23",
@@ -1,5 +1,16 @@
1
1
  import { InputText, InputPassword, InputEmail, InputDate, InputNumber } from "./input";
2
2
  import { Textarea } from "./textarea";
3
3
  import { InputCheckbox } from "./checkbox";
4
+ import { SelectSingle, SelectMultiple } from "./select/select";
4
5
 
5
- export { InputText, InputPassword, InputEmail, InputDate, InputNumber, InputCheckbox, Textarea };
6
+ export {
7
+ InputText,
8
+ InputPassword,
9
+ InputEmail,
10
+ InputDate,
11
+ InputNumber,
12
+ InputCheckbox,
13
+ Textarea,
14
+ SelectSingle,
15
+ SelectMultiple,
16
+ };
@@ -92,3 +92,23 @@ export const InputNumber: React.FC<IInputProps & IReactHookFormProps> = ({
92
92
  invalid={errors[name]}
93
93
  />
94
94
  );
95
+
96
+ interface IInputFileProps {
97
+ accept?: string;
98
+ }
99
+
100
+ export const InputFile: React.FC<IInputFileProps & IInputProps & IReactHookFormProps> = ({
101
+ disabled,
102
+ name,
103
+ accept,
104
+ defaultValue,
105
+ validation,
106
+ register,
107
+ }) => (
108
+ <input
109
+ className="denhaag-textfield__input"
110
+ type="file"
111
+ {...{ defaultValue, disabled, accept }}
112
+ {...register(name, { ...validation })}
113
+ />
114
+ );
@@ -0,0 +1,65 @@
1
+ .select > div {
2
+ background-color: var(
3
+ --utrecht-textbox-background-color,
4
+ var(--utrecht-form-input-background-color)
5
+ );
6
+ border-width: var(
7
+ --utrecht-textbox-border-width,
8
+ var(--utrecht-form-input-border-width)
9
+ );
10
+ border-bottom-width: var(
11
+ --utrecht-textbox-border-bottom-width,
12
+ var(--utrecht-textbox-border-width, var(--utrecht-form-input-border-width))
13
+ );
14
+ border-color: var(
15
+ --utrecht-textbox-border-color,
16
+ var(--utrecht-form-input-border-color)
17
+ );
18
+ border-radius: var(
19
+ --utrecht-textbox-border-radius,
20
+ var(--utrecht-form-input-border-radius, 0)
21
+ );
22
+ border-style: solid;
23
+ box-sizing: border-box;
24
+ color: var(--utrecht-textbox-color, var(--utrecht-form-input-color));
25
+ font-family: var(
26
+ --utrecht-textbox-font-family,
27
+ var(--utrecht-form-input-font-family)
28
+ );
29
+ font-size: var(
30
+ --utrecht-textbox-font-size,
31
+ var(--utrecht-form-input-font-size, 1em)
32
+ );
33
+ max-inline-size: var(
34
+ --utrecht-textbox-max-inline-size,
35
+ var(--utrecht-form-input-max-inline-size)
36
+ );
37
+
38
+ padding-block-start: 6.5px;
39
+ padding-block-end: 6.5px;
40
+ }
41
+
42
+ .select > div:hover {
43
+ border-color: var(
44
+ --utrecht-textbox-border-color,
45
+ var(--utrecht-form-input-border-color)
46
+ );
47
+ }
48
+
49
+ .select > div:focus-within {
50
+ outline: none;
51
+ box-shadow: none;
52
+ }
53
+
54
+ .select > div:focus-within::after {
55
+ pointer-events: none;
56
+ border: var(--denhaag-focus-border);
57
+ border-radius: var(--denhaag-border-radius);
58
+ bottom: -3px;
59
+ content: "";
60
+ display: block;
61
+ left: -3px;
62
+ position: absolute;
63
+ right: -3px;
64
+ top: -3px;
65
+ }
@@ -0,0 +1,58 @@
1
+ import * as React from "react";
2
+ import * as styles from "./select.module.css";
3
+ import { Control, Controller, FieldValues } from "react-hook-form";
4
+ import ReactSelect from "react-select";
5
+ import { IReactHookFormProps } from "../types";
6
+
7
+ interface ISelectProps {
8
+ control: Control<FieldValues, any>;
9
+ options: { label: string; value: string }[];
10
+ name: string;
11
+ defaultValue?: any;
12
+ disabled?: boolean;
13
+ }
14
+
15
+ export const SelectMultiple: React.FC<ISelectProps & IReactHookFormProps> = ({
16
+ name,
17
+ options,
18
+ errors,
19
+ control,
20
+ validation,
21
+ defaultValue,
22
+ disabled,
23
+ }) => {
24
+ return (
25
+ <Controller
26
+ {...{ control, name }}
27
+ rules={validation}
28
+ render={({ field: { onChange, value } }) => {
29
+ return (
30
+ <ReactSelect
31
+ className={styles.select}
32
+ isMulti
33
+ isDisabled={disabled}
34
+ {...{ options, value, onChange, errors, defaultValue }}
35
+ />
36
+ );
37
+ }}
38
+ />
39
+ );
40
+ };
41
+
42
+ export const SelectSingle: React.FC<ISelectProps & IReactHookFormProps> = ({
43
+ name,
44
+ options,
45
+ errors,
46
+ control,
47
+ validation,
48
+ }) => {
49
+ return (
50
+ <Controller
51
+ {...{ control, name }}
52
+ rules={validation}
53
+ render={({ field: { onChange, value } }) => {
54
+ return <ReactSelect className={styles.select} {...{ options, onChange, value, errors }} isClearable />;
55
+ }}
56
+ />
57
+ );
58
+ };
@@ -1,3 +1,7 @@
1
+ :root {
2
+ --conduction-notification-popup-box-shadow: 0px 0px 6px 6px rgb(0 0 0 / 15%);
3
+ }
4
+
1
5
  :export {
2
6
  animationDuration: 200ms;
3
7
  }
@@ -9,7 +13,7 @@
9
13
  padding-inline-end: var(--nlportal-space-inline-lg);
10
14
  padding-block-start: var(--nlportal-space-block-lg);
11
15
  padding-block-end: var(--nlportal-space-block-lg);
12
- box-shadow: var(--conduction-notification-box-shadow);
16
+ box-shadow: var(--conduction-notification-popup-box-shadow);
13
17
  border-radius: var(--nlportal-document-border-radius);
14
18
  }
15
19
 
package/src/index.ts CHANGED
@@ -16,6 +16,8 @@ import {
16
16
  InputNumber,
17
17
  Textarea,
18
18
  InputCheckbox,
19
+ SelectMultiple,
20
+ SelectSingle,
19
21
  } from "./components/formFields";
20
22
  import { ImageDivider } from "./components/imageDivider/ImageDivider";
21
23
  import { AuthenticatedLogo, UnauthenticatedLogo } from "./components/logo/Logo";
@@ -48,6 +50,8 @@ export {
48
50
  InputNumber,
49
51
  Textarea,
50
52
  InputCheckbox,
53
+ SelectMultiple,
54
+ SelectSingle,
51
55
  ImageDivider,
52
56
  AuthenticatedLogo,
53
57
  UnauthenticatedLogo,
package/tsconfig.json CHANGED
@@ -3,7 +3,10 @@
3
3
  "declaration": true,
4
4
  "outDir": "./lib",
5
5
  "target": "esnext",
6
- "lib": ["dom", "esnext"],
6
+ "lib": [
7
+ "dom",
8
+ "esnext"
9
+ ],
7
10
  "jsx": "react-jsx",
8
11
  "module": "esnext",
9
12
  "moduleResolution": "node",
@@ -12,7 +15,15 @@
12
15
  "strict": true,
13
16
  "skipLibCheck": true
14
17
  },
15
- "hooks": ["copy-files"],
16
- "include": ["src", "src/**/*.css"],
17
- "exclude": ["node_modules", "**/__tests__/*"]
18
- }
18
+ "hooks": [
19
+ "copy-files"
20
+ ],
21
+ "include": [
22
+ "src",
23
+ "src/**/*.css"
24
+ ],
25
+ "exclude": [
26
+ "node_modules",
27
+ "**/__tests__/*"
28
+ ]
29
+ }
@@ -1,10 +0,0 @@
1
- .denhaag-pagination {
2
- display: flex;
3
- justify-content: center;
4
- padding: var(--nlportal-space-inline-md);
5
- }
6
-
7
- .denhaag-pagination__link {
8
- padding-right: var(--nlportal-space-inline-md);
9
- text-decoration: none;
10
- }
@@ -1,20 +0,0 @@
1
- /**
2
- * This is a wrapper element based on https://nl-design-system.github.io/denhaag/?path=/docs/css-navigation-pagination--default-story
3
- *
4
- * IMPORTANT: DO NOT MAKE CHANGES TO THIS FILE, AS ALL CHANGES WILL BE LOST UPON PACKAGE IMPLEMENTATION
5
- *
6
- * Note: we do not use css modules here due to this component being a wrapper
7
- */
8
- import * as React from "react";
9
- import "./Paginations.css";
10
- interface PaginationsProps {
11
- pages: {
12
- ariaLabel: string;
13
- label: string;
14
- href: string;
15
- }[];
16
- nextPageHref: string;
17
- previousPageHref: string;
18
- }
19
- export declare const Paginations: React.FC<PaginationsProps>;
20
- export {};
@@ -1,10 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import "./Paginations.css";
3
- import { Link } from "gatsby";
4
- export const Paginations = ({ pages, previousPageHref, nextPageHref }) => {
5
- return (_jsxs("nav", { className: "denhaag-pagination", children: [_jsx(PreviousPage, { href: previousPageHref }), _jsx("span", { className: "denhaag-pagination__links", role: "group", children: pages.map((page) => {
6
- return (_jsx(Link, { "aria-label": page.ariaLabel, className: "denhaag-pagination__link", to: page.href, children: page.label }));
7
- }) }), _jsx(NextPage, { href: nextPageHref })] }));
8
- };
9
- const PreviousPage = ({ href }) => (_jsx(Link, { "aria-label": "Previous page", className: "denhaag-pagination__link denhaag-pagination__link--arrow", to: href, rel: "prev", children: _jsx("svg", { "aria-hidden": "true", className: "denhaag-icon", fill: "none", height: "1em", viewBox: "0 0 7 12", width: "1em", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { d: "M4.9921 10.8143C5.36382 11.1914 5.97222 11.1914 6.34393 10.8143C6.7079 10.4451 6.70822 9.8521 6.34466 9.48248L3.36315 6.45123C2.98039 6.06209 2.98039 5.43791 3.36315 5.04877L6.34466 2.01752C6.70822 1.6479 6.7079 1.05492 6.34394 0.685696C5.97222 0.308599 5.36382 0.308599 4.9921 0.685695L0.692003 5.04799C0.308224 5.43732 0.308224 6.06268 0.692003 6.45201L4.9921 10.8143Z", fill: "currentColor" }) }) }));
10
- const NextPage = ({ href }) => (_jsx(Link, { "aria-label": "Next page", className: "denhaag-pagination__link denhaag-pagination__link--arrow", to: href, rel: "next", children: _jsx("svg", { "aria-hidden": "true", className: "denhaag-icon", fill: "none", height: "1em", viewBox: "0 0 7 12", width: "1em", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { d: "M2.0079 1.1857C1.63618 0.8086 1.02778 0.8086 0.656065 1.18569V1.18569C0.292103 1.55492 0.291779 2.1479 0.655339 2.51752L3.63685 5.54877C4.01961 5.93791 4.01961 6.56209 3.63686 6.95123L0.655339 9.98248C0.291779 10.3521 0.292102 10.9451 0.656065 11.3143V11.3143C1.02778 11.6914 1.63618 11.6914 2.0079 11.3143L6.308 6.95201C6.69178 6.56268 6.69178 5.93732 6.308 5.54799L2.0079 1.1857Z", fill: "currentColor" }) }) }));
@@ -1,25 +0,0 @@
1
- import * as React from "react";
2
- export interface ModalProps {
3
- title: string;
4
- description: string;
5
- isShown: boolean;
6
- hide: () => void;
7
- layoutClassName: string;
8
- primaryButton: {
9
- label: string;
10
- handleClick(): any;
11
- };
12
- closeButton?: {
13
- label: string;
14
- };
15
- infoLink?: {
16
- label: string;
17
- link: string;
18
- };
19
- }
20
- export declare const NotificationModal: React.FC<ModalProps>;
21
- export declare const toggleNotificationModal: () => {
22
- isShown: boolean;
23
- show: () => void;
24
- hide: () => void;
25
- };
@@ -1,34 +0,0 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import * as React from "react";
3
- import * as styles from "./NotificationModal.module.css";
4
- import ReactDOM from "react-dom";
5
- import { Button, Heading3, Link, Paragraph } from "@gemeente-denhaag/components-react";
6
- import clsx from "clsx";
7
- import { CloseIcon, ArrowRightIcon } from "@gemeente-denhaag/icons";
8
- export const NotificationModal = ({ title, description, isShown, hide, primaryButton, closeButton, infoLink, layoutClassName, }) => {
9
- const [fadeOut, setFadeOut] = React.useState(true);
10
- const stylesContainer = document.getElementById("stylesContainer");
11
- const animationDurationToken = getComputedStyle(document.documentElement).getPropertyValue("--conduction-notification-animation-duration");
12
- const animationDurationString = animationDurationToken.replace(/\D/g, "");
13
- const animationDuration = parseInt(animationDurationString);
14
- const handleClick = (clickFunction) => {
15
- setFadeOut(!setFadeOut);
16
- clickFunction && clickFunction();
17
- setTimeout(() => {
18
- hide();
19
- setFadeOut(true);
20
- }, animationDuration);
21
- };
22
- const modal = (_jsx("div", { className: clsx(styles.cssanimation, fadeOut ? styles.fadeInBottom : styles.fadeOutBottom, layoutClassName), children: _jsxs("div", { className: styles.modal, children: [_jsx(Heading3, { children: title }), _jsx("div", { children: _jsxs(Paragraph, { children: [description, " ", infoLink ? _jsx(Link, { href: infoLink.link, children: infoLink.label }) : _jsx(_Fragment, {})] }) }), _jsxs("div", { className: styles.buttons, children: [closeButton ? (_jsx("div", { onClick: () => handleClick(), children: _jsx(Link, { icon: _jsx(CloseIcon, {}), iconAlign: "start", children: closeButton.label }) })) : (_jsx(_Fragment, {})), _jsx(Button, { icon: _jsx(ArrowRightIcon, {}), onClick: () => handleClick(primaryButton.handleClick), children: primaryButton.label })] })] }) }));
23
- return isShown ? ReactDOM.createPortal(modal, stylesContainer) : null;
24
- };
25
- export const toggleNotificationModal = () => {
26
- const [isShown, setIsShown] = React.useState(false);
27
- const show = () => setIsShown(true);
28
- const hide = () => setIsShown(false);
29
- return {
30
- isShown,
31
- show,
32
- hide,
33
- };
34
- };
@@ -1,56 +0,0 @@
1
- .modal {
2
- background: var(--denhaag-color-warmgrey-1);
3
- padding-inline-start: var(--nlportal-space-inline-lg);
4
- padding-inline-end: var(--nlportal-space-inline-lg);
5
- padding-block-start: var(--nlportal-space-block-lg);
6
- padding-block-end: var(--nlportal-space-block-lg);
7
- box-shadow: var(--conduction-notification-box-shadow);
8
- border-radius: var(--nlportal-document-border-radius);
9
- }
10
-
11
- .modal > *:not(:last-child) {
12
- margin-block-end: var(--nlportal-space-block-md);
13
- }
14
-
15
- .buttons {
16
- display: flex;
17
- justify-content: flex-end;
18
- align-items: center;
19
- }
20
-
21
- .buttons > *:not(:last-child) {
22
- margin-inline-end: var(--nlportal-space-inline-md);
23
- }
24
-
25
- .cssanimation {
26
- animation-duration: var(--conduction-notification-animation-duration);
27
- animation-fill-mode: both;
28
- }
29
-
30
- .fadeInBottom {
31
- animation-name: fadeInBottom;
32
- }
33
-
34
- @keyframes fadeInBottom {
35
- from {
36
- opacity: 0;
37
- transform: translateY(100%);
38
- }
39
- to {
40
- opacity: 1;
41
- }
42
- }
43
-
44
- .fadeOutBottom {
45
- animation-name: fadeOutBottom;
46
- }
47
-
48
- @keyframes fadeOutBottom {
49
- from {
50
- opacity: 1;
51
- }
52
- to {
53
- opacity: 0;
54
- transform: translateY(100%);
55
- }
56
- }