@scottish-government/designsystem-react 0.7.0 → 0.8.0-beta.0

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 (211) hide show
  1. package/@types/common/AbstractNotificationBanner.d.ts +2 -2
  2. package/@types/common/ActionLink.d.ts +8 -0
  3. package/@types/common/FileIcon.d.ts +1 -1
  4. package/@types/common/Icon.d.ts +1 -1
  5. package/@types/components/Accordion.d.ts +0 -1
  6. package/@types/components/Breadcrumbs.d.ts +2 -5
  7. package/@types/components/Checkbox.d.ts +0 -2
  8. package/@types/components/ConfirmationMessage.d.ts +1 -1
  9. package/@types/components/ContentsNav.d.ts +4 -6
  10. package/@types/components/DatePicker.d.ts +1 -1
  11. package/@types/components/ErrorSummary.d.ts +3 -4
  12. package/@types/components/NotificationPanel.d.ts +1 -1
  13. package/@types/components/Pagination.d.ts +5 -4
  14. package/@types/components/PhaseBanner.d.ts +0 -1
  15. package/@types/components/Question.d.ts +1 -1
  16. package/@types/components/RadioButton.d.ts +0 -1
  17. package/@types/components/Select.d.ts +0 -7
  18. package/@types/components/SequentialNavigation.d.ts +4 -4
  19. package/@types/components/SideNavigation.d.ts +4 -5
  20. package/@types/components/SiteFooter.d.ts +25 -0
  21. package/@types/components/SiteHeader.d.ts +10 -3
  22. package/@types/components/SiteNavigation.d.ts +2 -3
  23. package/@types/components/SkipLinks.d.ts +3 -4
  24. package/@types/components/SummaryCard.d.ts +0 -2
  25. package/@types/components/SummaryList.d.ts +0 -13
  26. package/@types/components/Tabs.d.ts +0 -1
  27. package/@types/components/Tag.d.ts +1 -3
  28. package/@types/components/TaskList.d.ts +1 -0
  29. package/@types/sgds.d.ts +13 -2
  30. package/CHANGELOG.md +63 -1
  31. package/dist/common/AbstractNotificationBanner.jsx +8 -6
  32. package/dist/common/ActionLink.jsx +19 -0
  33. package/dist/common/FileIcon.jsx +2 -7
  34. package/dist/common/Icon.jsx +3 -9
  35. package/dist/components/Accordion/Accordion.jsx +12 -7
  36. package/dist/components/Breadcrumbs/Breadcrumbs.jsx +20 -15
  37. package/dist/components/Checkbox/Checkbox.jsx +4 -29
  38. package/dist/components/{aspect-box/aspect-box.jsx → Checkbox/CheckboxGroup.jsx} +14 -30
  39. package/dist/components/ContentsNav/ContentsNav.jsx +27 -16
  40. package/dist/components/CookieBanner/CookieBanner.jsx +1 -0
  41. package/dist/components/DatePicker/DatePicker.jsx +5 -5
  42. package/dist/components/ErrorSummary/ErrorSummary.jsx +28 -18
  43. package/dist/components/NotificationBanner/NotificationBanner.jsx +2 -2
  44. package/dist/components/Pagination/Pagination.jsx +42 -22
  45. package/dist/components/PhaseBanner/PhaseBanner.jsx +3 -3
  46. package/dist/components/Question/Question.jsx +3 -3
  47. package/dist/components/RadioButton/RadioButton.jsx +7 -17
  48. package/dist/components/RadioButton/RadioGroup.jsx +21 -0
  49. package/dist/components/Select/Select.jsx +4 -7
  50. package/dist/components/SequentialNavigation/SequentialNavigation.jsx +31 -18
  51. package/dist/components/SideNavigation/SideNavigation.jsx +17 -16
  52. package/dist/components/SiteFooter/SiteFooter.jsx +104 -0
  53. package/dist/components/SiteHeader/SiteHeader.jsx +113 -32
  54. package/dist/components/SiteNavigation/SiteNavigation.jsx +20 -7
  55. package/dist/components/SkipLinks/SkipLinks.jsx +10 -10
  56. package/dist/components/SummaryCard/SummaryCard.jsx +25 -14
  57. package/dist/components/SummaryList/SummaryList.jsx +65 -47
  58. package/dist/components/Tabs/Tabs.jsx +6 -6
  59. package/dist/components/Tag/Tag.jsx +2 -2
  60. package/dist/components/TaskList/TaskList.jsx +14 -3
  61. package/dist/components/TextInput/TextInput.jsx +3 -3
  62. package/dist/components/Textarea/Textarea.jsx +3 -3
  63. package/dist/hooks/useTracking.js +21 -0
  64. package/dist/tsconfig.tsbuildinfo +1 -1
  65. package/dist/utils/context.js +5 -0
  66. package/package.json +2 -2
  67. package/src/common/AbstractNotificationBanner.test.tsx +1 -1
  68. package/src/common/AbstractNotificationBanner.tsx +14 -13
  69. package/src/common/ActionLink.test.tsx +80 -0
  70. package/src/common/ActionLink.tsx +27 -0
  71. package/src/common/ConditionalWrapper.tsx +1 -1
  72. package/src/common/FileIcon.tsx +7 -11
  73. package/src/common/HintText.tsx +2 -2
  74. package/src/common/Icon.tsx +13 -17
  75. package/src/common/ScreenReaderText.tsx +2 -2
  76. package/src/common/WrapperTag.tsx +2 -2
  77. package/src/components/Accordion/Accordion.test.tsx +17 -4
  78. package/src/components/Accordion/Accordion.tsx +19 -14
  79. package/src/components/AspectBox/AspectBox.tsx +2 -2
  80. package/src/components/BackToTop/BackToTop.tsx +2 -2
  81. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +79 -48
  82. package/src/components/Breadcrumbs/Breadcrumbs.tsx +31 -31
  83. package/src/components/Button/Button.tsx +2 -2
  84. package/src/components/Checkbox/Checkbox.test.tsx +1 -96
  85. package/src/components/Checkbox/Checkbox.tsx +8 -55
  86. package/src/components/Checkbox/CheckboxGroup.test.tsx +37 -0
  87. package/src/components/Checkbox/CheckboxGroup.tsx +41 -0
  88. package/src/components/ConfirmationMessage/ConfirmationMessage.tsx +2 -2
  89. package/src/components/ContentsNav/ContentsNav.test.tsx +40 -51
  90. package/src/components/ContentsNav/ContentsNav.tsx +32 -25
  91. package/src/components/CookieBanner/CookieBanner.tsx +3 -3
  92. package/src/components/DatePicker/DatePicker.test.tsx +1 -1
  93. package/src/components/DatePicker/DatePicker.tsx +7 -7
  94. package/src/components/Details/Details.tsx +2 -2
  95. package/src/components/ErrorMessage/ErrorMessage.tsx +2 -2
  96. package/src/components/ErrorSummary/ErrorSummary.test.tsx +40 -34
  97. package/src/components/ErrorSummary/ErrorSummary.tsx +40 -32
  98. package/src/components/FileDownload/FileDownload.tsx +2 -2
  99. package/src/components/HideThisPage/HideThisPage.tsx +2 -2
  100. package/src/components/InsetText/InsetText.tsx +2 -2
  101. package/src/components/NotificationBanner/NotificationBanner.tsx +6 -7
  102. package/src/components/NotificationPanel/NotificationPanel.tsx +2 -2
  103. package/src/components/PageHeader/PageHeader.tsx +2 -2
  104. package/src/components/PageMetadata/PageMetadata.tsx +4 -5
  105. package/src/components/Pagination/Pagination.test.tsx +26 -7
  106. package/src/components/Pagination/Pagination.tsx +70 -36
  107. package/src/components/PhaseBanner/PhaseBanner.tsx +4 -5
  108. package/src/components/Question/Question.test.tsx +1 -1
  109. package/src/components/Question/Question.tsx +5 -5
  110. package/src/components/RadioButton/RadioButton.test.tsx +7 -126
  111. package/src/components/RadioButton/RadioButton.tsx +10 -41
  112. package/src/components/RadioButton/RadioGroup.test.tsx +65 -0
  113. package/src/components/RadioButton/RadioGroup.tsx +31 -0
  114. package/src/components/Select/Select.test.tsx +39 -37
  115. package/src/components/Select/Select.tsx +7 -22
  116. package/src/components/SequentialNavigation/SequentialNavigation.test.tsx +32 -21
  117. package/src/components/SequentialNavigation/SequentialNavigation.tsx +52 -30
  118. package/src/components/SideNavigation/SideNavigation.test.tsx +39 -85
  119. package/src/components/SideNavigation/SideNavigation.tsx +27 -29
  120. package/src/components/SiteFooter/SiteFooter.test.tsx +153 -0
  121. package/src/components/SiteFooter/SiteFooter.tsx +107 -0
  122. package/src/components/SiteHeader/SiteHeader.test.tsx +87 -79
  123. package/src/components/SiteHeader/SiteHeader.tsx +103 -40
  124. package/src/components/SiteNavigation/SiteNavigation.test.tsx +42 -23
  125. package/src/components/SiteNavigation/SiteNavigation.tsx +28 -16
  126. package/src/components/SiteSearch/SiteSearch.tsx +2 -2
  127. package/src/components/SkipLinks/SkipLinks.test.tsx +22 -10
  128. package/src/components/SkipLinks/SkipLinks.tsx +16 -15
  129. package/src/components/SummaryCard/SummaryCard.test.tsx +31 -35
  130. package/src/components/SummaryCard/SummaryCard.tsx +39 -28
  131. package/src/components/SummaryList/SummaryList.test.tsx +49 -148
  132. package/src/components/SummaryList/SummaryList.tsx +54 -92
  133. package/src/components/Table/Table.tsx +2 -2
  134. package/src/components/Tabs/Tabs.tsx +14 -15
  135. package/src/components/Tag/Tag.test.tsx +4 -4
  136. package/src/components/Tag/Tag.tsx +4 -4
  137. package/src/components/TaskList/TaskList.test.tsx +26 -0
  138. package/src/components/TaskList/TaskList.tsx +21 -11
  139. package/src/components/TextInput/TextInput.test.tsx +1 -1
  140. package/src/components/TextInput/TextInput.tsx +5 -5
  141. package/src/components/Textarea/Textarea.test.tsx +1 -1
  142. package/src/components/Textarea/Textarea.tsx +5 -5
  143. package/src/components/WarningText/WarningText.tsx +2 -2
  144. package/src/hooks/useTracking.test.tsx +64 -0
  145. package/src/hooks/useTracking.ts +19 -0
  146. package/src/utils/context.ts +3 -0
  147. package/tsconfig.json +1 -1
  148. package/dist/common/abstract-notification-banner.jsx +0 -63
  149. package/dist/common/conditional-wrapper.jsx +0 -8
  150. package/dist/common/file-icon.jsx +0 -51
  151. package/dist/common/hint-text.jsx +0 -9
  152. package/dist/common/icon.jsx +0 -57
  153. package/dist/common/screen-reader-text.jsx +0 -9
  154. package/dist/common/wrapper-tag.jsx +0 -11
  155. package/dist/components/accordion/accordion.jsx +0 -102
  156. package/dist/components/back-to-top/back-to-top.jsx +0 -27
  157. package/dist/components/breadcrumbs/breadcrumbs.jsx +0 -28
  158. package/dist/components/button/button.jsx +0 -30
  159. package/dist/components/checkbox/checkbox.jsx +0 -62
  160. package/dist/components/confirmation-message/confirmation-message.jsx +0 -24
  161. package/dist/components/contents-nav/contents-nav.jsx +0 -33
  162. package/dist/components/cookie-banner/cookie-banner.jsx +0 -21
  163. package/dist/components/date-picker/date-picker.jsx +0 -54
  164. package/dist/components/details/details.jsx +0 -17
  165. package/dist/components/error-message/error-message.jsx +0 -12
  166. package/dist/components/error-summary/error-summary.jsx +0 -27
  167. package/dist/components/file-download/file-download.jsx +0 -50
  168. package/dist/components/hide-this-page/hide-this-page.jsx +0 -71
  169. package/dist/components/inset-text/inset-text.jsx +0 -14
  170. package/dist/components/notification-banner/notification-banner.jsx +0 -26
  171. package/dist/components/notification-panel/notification-panel.jsx +0 -21
  172. package/dist/components/page-header/page-header.jsx +0 -15
  173. package/dist/components/page-metadata/page-metadata.jsx +0 -26
  174. package/dist/components/pagination/pagination.jsx +0 -97
  175. package/dist/components/phase-banner/phase-banner.jsx +0 -23
  176. package/dist/components/question/question.jsx +0 -22
  177. package/dist/components/radio-button/radio-button.jsx +0 -43
  178. package/dist/components/select/select.jsx +0 -52
  179. package/dist/components/sequential-navigation/sequential-navigation.jsx +0 -31
  180. package/dist/components/side-navigation/side-navigation.jsx +0 -52
  181. package/dist/components/site-header/site-header.jsx +0 -68
  182. package/dist/components/site-navigation/site-navigation.jsx +0 -22
  183. package/dist/components/site-search/site-search.jsx +0 -55
  184. package/dist/components/skip-links/skip-links.jsx +0 -21
  185. package/dist/components/summary-card/summary-card.jsx +0 -67
  186. package/dist/components/summary-list/summary-list.jsx +0 -75
  187. package/dist/components/table/table.jsx +0 -24
  188. package/dist/components/tabs/tabs.jsx +0 -99
  189. package/dist/components/tag/tag.jsx +0 -13
  190. package/dist/components/task-list/task-list.jsx +0 -95
  191. package/dist/components/text-input/text-input.jsx +0 -58
  192. package/dist/components/textarea/textarea.jsx +0 -54
  193. package/dist/components/warning-text/warning-text.jsx +0 -16
  194. package/dist/icons/ArrowUpward.jsx +0 -41
  195. package/dist/icons/CalendarToday.jsx +0 -41
  196. package/dist/icons/Cancel.jsx +0 -40
  197. package/dist/icons/CheckCircle.jsx +0 -41
  198. package/dist/icons/ChevronLeft.jsx +0 -41
  199. package/dist/icons/ChevronRight.jsx +0 -41
  200. package/dist/icons/Close.jsx +0 -41
  201. package/dist/icons/Description.jsx +0 -41
  202. package/dist/icons/DoubleChevronLeft.jsx +0 -40
  203. package/dist/icons/DoubleChevronRight.jsx +0 -40
  204. package/dist/icons/Error.jsx +0 -41
  205. package/dist/icons/ExpandLess.jsx +0 -41
  206. package/dist/icons/ExpandMore.jsx +0 -41
  207. package/dist/icons/List.jsx +0 -44
  208. package/dist/icons/Menu.jsx +0 -41
  209. package/dist/icons/PriorityHigh.jsx +0 -42
  210. package/dist/icons/Search.jsx +0 -41
  211. package/dist/icons/index.js +0 -40
@@ -1,102 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- const react_1 = __importStar(require("react"));
40
- const wrapper_tag_1 = __importDefault(require("../../common/wrapper-tag"));
41
- // @ts-ignore
42
- const accordion_1 = __importDefault(require("@scottish-government/design-system/src/components/accordion/accordion"));
43
- let accordionItemCounter = 0;
44
- const AccordionItem = ({ children, className, headerLevel = 'h3', id: rawId, open = false, title, ...props }) => {
45
- accordionItemCounter = accordionItemCounter + 1;
46
- const processedId = rawId || `accordion-item-${accordionItemCounter}`;
47
- return (<div className={[
48
- 'ds_accordion-item',
49
- className
50
- ].join(' ')} id={processedId} {...props}>
51
- <input aria-labelledby={`panel-${processedId}-heading`} className={[
52
- 'ds_accordion-item__control',
53
- 'visually-hidden'
54
- ].join(' ')} defaultChecked={open} id={`${processedId}-control`} type="checkbox"/>
55
- <div className="ds_accordion-item__header">
56
- <wrapper_tag_1.default id={`panel-${processedId}-heading`} className="ds_accordion-item__title" tagName={headerLevel}>
57
- {title}
58
- </wrapper_tag_1.default>
59
- <span className='ds_accordion-item__indicator'/>
60
- <label className="ds_accordion-item__label" htmlFor={`${processedId}-control`}>
61
- <span className="visually-hidden">Show this section</span>
62
- </label>
63
- </div>
64
- <div className="ds_accordion-item__body">
65
- {children}
66
- </div>
67
- </div>);
68
- };
69
- const Accordion = ({ children, className, headerLevel = 'h3', hideOpenAll, ...props }) => {
70
- const ref = (0, react_1.useRef)(null);
71
- (0, react_1.useEffect)(() => {
72
- if (ref.current) {
73
- new accordion_1.default(ref.current).init();
74
- }
75
- }, [ref]);
76
- if (!children) {
77
- hideOpenAll = true;
78
- }
79
- function processChild(child) {
80
- return react_1.default.cloneElement(child, { headerLevel: headerLevel });
81
- }
82
- return (<div className={[
83
- 'ds_accordion',
84
- className
85
- ].join(' ')} ref={ref} {...props}>
86
- {!hideOpenAll && (<button className={[
87
- 'ds_accordion__open-all',
88
- 'ds_link',
89
- 'js-open-all'
90
- ].join(' ')} type='button'>
91
- Open all
92
- {' '}
93
- <span className="visually-hidden">sections</span>
94
- </button>)}
95
-
96
- {react_1.Children.map(children, child => processChild(child))}
97
- </div>);
98
- };
99
- Accordion.displayName = 'Accordion';
100
- AccordionItem.displayName = 'AccordionItem';
101
- Accordion.Item = AccordionItem;
102
- exports.default = Accordion;
@@ -1,27 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const react_1 = require("react");
7
- // @ts-ignore
8
- const back_to_top_1 = __importDefault(require("@scottish-government/design-system/src/components/back-to-top/back-to-top"));
9
- const icon_1 = __importDefault(require("../../common/icon"));
10
- const BackToTop = ({ className, href = '#page-top', ...props }) => {
11
- const ref = (0, react_1.useRef)(null);
12
- (0, react_1.useEffect)(() => {
13
- if (ref.current) {
14
- new back_to_top_1.default(ref.current).init();
15
- }
16
- }, [ref]);
17
- return (<div className={[
18
- 'ds_back-to-top',
19
- className
20
- ].join(' ')} ref={ref} {...props}>
21
- <a href={href} className="ds_back-to-top__button">Back to top
22
- <icon_1.default className="ds_back-to-top__icon" icon="ArrowUpward"/>
23
- </a>
24
- </div>);
25
- };
26
- BackToTop.displayName = 'BackToTop';
27
- exports.default = BackToTop;
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const Breadcrumb = ({ hidden, href, title }) => {
4
- return (<li className={[
5
- 'ds_breadcrumbs__item',
6
- hidden && 'visually-hidden'
7
- ].join(' ')}>
8
-
9
- {href ? (<a className="ds_breadcrumbs__link" href={href}>
10
- {title}
11
- </a>) : (title)}
12
- </li>);
13
- };
14
- /**
15
- * @param {boolean} hideLastItem
16
- * @param {Array} items
17
- * @param {Object} props - Properties for the element
18
- * @returns {JSX.Element} - The element
19
- */
20
- const Breadcrumbs = ({ hideLastItem, items, ...props }) => {
21
- return (<nav aria-label="Breadcrumb" {...props}>
22
- <ol className="ds_breadcrumbs">
23
- {items && items.map((item, index) => (<Breadcrumb title={item.title} href={item.href} hidden={(hideLastItem) && index + 1 === items.length} key={'breadcrumb' + index}/>))}
24
- </ol>
25
- </nav>);
26
- };
27
- Breadcrumbs.displayName = 'Breadcrumbs';
28
- exports.default = Breadcrumbs;
@@ -1,30 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const icon_1 = __importDefault(require("../../common/icon"));
7
- const screen_reader_text_1 = __importDefault(require("../../common/screen-reader-text"));
8
- const wrapper_tag_1 = __importDefault(require("../../common/wrapper-tag"));
9
- const Button = ({ buttonStyle, children, className, icon, iconLeft, iconOnly = false, href, small, styleAsLink, type = 'button', width, ...props }) => {
10
- // determine which HTML tag to use
11
- let tagName = 'button';
12
- if (href) {
13
- tagName = 'a';
14
- }
15
- return (<wrapper_tag_1.default tagName={tagName} className={[
16
- !styleAsLink ? 'ds_button' : 'ds_link',
17
- width && `ds_button--${width}`,
18
- buttonStyle && `ds_button--${buttonStyle}`,
19
- small && 'ds_button--small',
20
- (icon && !iconOnly) ? 'ds_button--has-icon' : undefined,
21
- iconLeft && 'ds_button--has-icon--left',
22
- className
23
- ].join(' ')} href={href} {...(tagName === 'button' ? { type: type } : {})} {...props}>
24
- {iconOnly ? <screen_reader_text_1.default>{children}</screen_reader_text_1.default> : children}
25
-
26
- {icon && <icon_1.default icon={icon}/>}
27
- </wrapper_tag_1.default>);
28
- };
29
- Button.displayName = 'Button';
30
- exports.default = Button;
@@ -1,62 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.CheckboxGroup = exports.Checkbox = void 0;
7
- const react_1 = require("react");
8
- // @ts-ignore
9
- const checkboxes_1 = __importDefault(require("@scottish-government/design-system/src/forms/checkbox/checkboxes"));
10
- const hint_text_1 = __importDefault(require("../../common/hint-text"));
11
- const Checkbox = ({ checked, hintText, id, exclusive, label, name, onBlur, onChange, small }) => {
12
- const hintTextId = `hint-text-${id}`;
13
- const behaviour = exclusive && 'exclusive';
14
- function handleBlur(event) {
15
- if (typeof onBlur === 'function') {
16
- onBlur(event);
17
- }
18
- }
19
- function handleChange(event) {
20
- if (typeof onChange === 'function') {
21
- onChange(event);
22
- }
23
- }
24
- return (<>
25
- {exclusive && <p className="ds_checkbox-separator">or</p>}
26
- <div className={[
27
- 'ds_checkbox',
28
- small && 'ds_checkbox--small'
29
- ].join(' ')}>
30
-
31
- <input aria-describedby={hintText ? hintTextId : undefined} className="ds_checkbox__input" data-behaviour={behaviour} defaultChecked={!!checked} id={id} name={name || id} onBlur={handleBlur} onChange={handleChange} type="checkbox"/>
32
- <label className="ds_checkbox__label" htmlFor={id}>{label}</label>
33
- {hintText && <hint_text_1.default id={hintTextId} text={hintText}/>}
34
- </div>
35
- </>);
36
- };
37
- exports.Checkbox = Checkbox;
38
- /**
39
- * @param {Object} props - Properties for the element
40
- * @param {Array} items - Checkboxes
41
- * @param {boolean} small - Use the small display style for all checkboxes
42
- * @returns {JSX.Element} - The element
43
- */
44
- const CheckboxGroup = ({ className, items, small, ...props }) => {
45
- const ref = (0, react_1.useRef)(null);
46
- (0, react_1.useEffect)(() => {
47
- if (ref.current) {
48
- new checkboxes_1.default(ref.current).init();
49
- }
50
- }, [ref]);
51
- return (<div className={[
52
- 'ds_checkboxes',
53
- 'ds_field-group',
54
- className
55
- ].join(' ')} data-module="ds-checkboxes" ref={ref} {...props}>
56
- {items && items.map((item, index) => (<exports.Checkbox exclusive={item.exclusive} checked={item.checked} hintText={item.hintText} id={item.id} key={'checkbox' + index} label={item.label} onBlur={item.onBlur} onChange={item.onChange} small={small || item.small}/>))}
57
- </div>);
58
- };
59
- exports.CheckboxGroup = CheckboxGroup;
60
- exports.Checkbox.displayName = 'Checkbox';
61
- exports.CheckboxGroup.displayName = 'CheckboxGroup';
62
- exports.default = exports.CheckboxGroup;
@@ -1,24 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const icon_1 = __importDefault(require("../../common/icon"));
7
- const wrapper_tag_1 = __importDefault(require("../../common/wrapper-tag"));
8
- const ConfirmationMessage = ({ ariaLive = 'polite', children, className, headerLevel = 'h3', title, ...props }) => {
9
- return (<div aria-live={ariaLive} className={[
10
- 'ds_confirmation-message',
11
- className
12
- ].join(' ')} {...props}>
13
- <icon_1.default className="ds_confirmation-message__icon" icon="CheckCircle" iconSize="24"/>
14
-
15
- <wrapper_tag_1.default className="ds_confirmation-message__title" tagName={headerLevel}>
16
- {title}
17
- </wrapper_tag_1.default>
18
- {children && <div className="ds_confirmation-message__body">
19
- {children}
20
- </div>}
21
- </div>);
22
- };
23
- ConfirmationMessage.displayName = 'ConfirmationMessage';
24
- exports.default = ConfirmationMessage;
@@ -1,33 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Link = void 0;
7
- const wrapper_tag_1 = __importDefault(require("../../common/wrapper-tag"));
8
- const Link = ({ current, href, title }) => {
9
- // determine which HTML tag to use
10
- const tagName = href && !current ? 'a' : 'span';
11
- return (<li aria-current={current && 'page' || undefined} className="ds_contents-nav__item">
12
- <wrapper_tag_1.default tagName={tagName} className={[
13
- 'ds_contents-nav__link',
14
- current && 'ds_current'
15
- ].join(' ')} href={!current ? href : undefined}>
16
- {title}
17
- </wrapper_tag_1.default>
18
- </li>);
19
- };
20
- exports.Link = Link;
21
- const ContentsNav = function ({ className, items, label = 'Pages in this section', title = 'Contents', ...props }) {
22
- return (<nav aria-label={label} className={[
23
- 'ds_contents-nav',
24
- className
25
- ].join(' ')} {...props}>
26
- <h2 className="ds_contents-nav__title">{title}</h2>
27
- <ul className="ds_contents-nav__list">
28
- {items && items.map((item, index) => (<exports.Link current={item.current} href={item.href} title={item.title} key={'link' + index}/>))}
29
- </ul>
30
- </nav>);
31
- };
32
- ContentsNav.displayName = 'ContentsNav';
33
- exports.default = ContentsNav;
@@ -1,21 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const abstract_notification_banner_1 = __importDefault(require("../../common/abstract-notification-banner"));
7
- const CookieBanner = ({ children, className, title, ...props }) => {
8
- return (<>
9
- <abstract_notification_banner_1.default className={[
10
- 'ds_notification--large',
11
- 'ds_notification--cookie',
12
- 'js-initial-cookie-content',
13
- className
14
- ].join(' ')} data-module="ds-cookie-notification" title={title} {...props}>
15
- {children}
16
- </abstract_notification_banner_1.default>
17
- </>);
18
- };
19
- CookieBanner.displayName = 'CookieBanner';
20
- CookieBanner.Buttons = abstract_notification_banner_1.default.Buttons;
21
- exports.default = CookieBanner;
@@ -1,54 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const react_1 = require("react");
7
- // @ts-ignore
8
- const date_picker_1 = __importDefault(require("@scottish-government/design-system/src/components/date-picker/date-picker"));
9
- const error_message_1 = __importDefault(require("../error-message/error-message"));
10
- const text_input_1 = __importDefault(require("../text-input/text-input"));
11
- const DatePicker = ({ className, dateSelectCallback, disabledDates, error, errorMessage, hintText, id, iconPath = './', label, maxDate, minDate, multiple, name, onBlur, onChange, value, width = 'fixed-10', ...props }) => {
12
- const ref = (0, react_1.useRef)(null);
13
- (0, react_1.useEffect)(() => {
14
- if (ref.current) {
15
- new date_picker_1.default(ref.current, {
16
- dateSelectCallback,
17
- imagePath: iconPath
18
- }).init();
19
- }
20
- }, [ref, dateSelectCallback, iconPath]);
21
- function handleBlur(event) {
22
- if (typeof onBlur === 'function') {
23
- onBlur(event);
24
- }
25
- }
26
- function handleChange(event) {
27
- if (typeof onChange === 'function') {
28
- onChange(event);
29
- }
30
- }
31
- return (<div className={[
32
- "ds_datepicker",
33
- multiple && "ds_datepicker--multiple",
34
- className
35
- ].join(' ')} data-disableddates={disabledDates} data-maxdate={maxDate} data-mindate={minDate} data-module="ds-datepicker" ref={ref} {...props}>
36
- {(multiple ? (<fieldset className="ds_datepicker__input-wrapper">
37
- <legend>{label}</legend>
38
- {errorMessage && <error_message_1.default text={errorMessage}/>}
39
- <div>
40
- <text_input_1.default className="js-datepicker-date" error={!!error} id={id + "-day"} hintText={hintText} label="Day" name={name + "-day"} onBlur={handleBlur} onChange={handleChange} value={value?.split('/')[0]} width="fixed-2"/>
41
- </div>
42
-
43
- <div>
44
- <text_input_1.default className="js-datepicker-month" error={!!error} id={id + "-month"} hintText={hintText} label="Month" name={name + "-month"} onBlur={handleBlur} onChange={handleChange} value={value?.split('/')[1]} width="fixed-2"/>
45
- </div>
46
-
47
- <div>
48
- <text_input_1.default className="js-datepicker-year" error={!!error} id={id + "-year"} hintText={hintText} label="Year" name={name + "-year"} onBlur={handleBlur} onChange={handleChange} value={value?.split('/')[2]} width="fixed-4"/>
49
- </div>
50
- </fieldset>) : (<text_input_1.default error={!!error} errorMessage={errorMessage} id={id} hasButton hintText={hintText} label={label} name={name} onBlur={handleBlur} onChange={handleChange} placeholder="dd/mm/yyyy" value={value} width={width}/>))}
51
- </div>);
52
- };
53
- DatePicker.displayName = 'DatePicker';
54
- exports.default = DatePicker;
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const Details = ({ children, className, summary, ...props }) => {
4
- return (<details className={[
5
- "ds_details",
6
- className
7
- ].join(' ')} {...props}>
8
- <summary className="ds_details__summary">
9
- {summary}
10
- </summary>
11
- <div className="ds_details__text">
12
- {children}
13
- </div>
14
- </details>);
15
- };
16
- Details.displayName = 'Details';
17
- exports.default = Details;
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const ErrorMessage = ({ children, className, id, text, ...props }) => {
4
- return (<p className={[
5
- 'ds_question__error-message',
6
- className
7
- ].join(' ')} dangerouslySetInnerHTML={text ? { __html: text } : undefined} id={id} {...props}>
8
- {!text ? children : null}
9
- </p>);
10
- };
11
- ErrorMessage.displayName = 'ErrorMessage';
12
- exports.default = ErrorMessage;
@@ -1,27 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const conditional_wrapper_1 = __importDefault(require("../../common/conditional-wrapper"));
7
- const Error = ({ fragmentId, title }) => {
8
- return (<li>
9
- <conditional_wrapper_1.default condition={!!fragmentId} wrapper={() => <a href={`#${fragmentId}`}>{title}</a>}>{title}</conditional_wrapper_1.default>
10
- </li>);
11
- };
12
- const ErrorSummary = ({ className, errors, title = 'There is a problem', ...props }) => {
13
- return (<>
14
- {errors && errors.length && (<div className={[
15
- 'ds_error-summary',
16
- className
17
- ].join(' ')} aria-labelledby="error-summary-title" role="alert" {...props}>
18
- <h2 className="ds_error-summary__title" id="error-summary-title">{title}</h2>
19
-
20
- <ul className="ds_error-summary__list">
21
- {errors && errors.map((error, index) => (<Error fragmentId={error.fragmentId} title={error.title} key={'error' + index}/>))}
22
- </ul>
23
- </div>)}
24
- </>);
25
- };
26
- ErrorSummary.displayName = 'ErrorSummary';
27
- exports.default = ErrorSummary;
@@ -1,50 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const react_1 = require("react");
7
- const file_icon_1 = __importDefault(require("../../common/file-icon"));
8
- const FileDownload = ({ className, cover, highlighted, icon = 'Generic', fileSize, fileType, fileUrl, title, ...props }) => {
9
- const hasMetadata = !!fileType || !!fileSize;
10
- const metaContainerId = `file-download-${(0, react_1.useId)()}`;
11
- return (<div className={[
12
- 'ds_file-download',
13
- highlighted && 'ds_file-download--highlighted',
14
- className
15
- ].join(' ')} {...props}>
16
- <div className="ds_file-download__thumbnail">
17
- <a className="ds_file-download__thumbnail-link" aria-hidden="true" tabIndex={-1} href={fileUrl}>
18
- {cover ?
19
- <img alt="" className="ds_file-download__thumbnail-image" src={cover}/>
20
- :
21
- <file_icon_1.default ariaLabel="" className="ds_file-download__thumbnail-image" icon={icon}/>}
22
- </a>
23
- </div>
24
-
25
- <div className="ds_file-download__content">
26
- <a href={fileUrl} className="ds_file-download__title" aria-describedby={hasMetadata ? metaContainerId : undefined}>
27
- {title}
28
- </a>
29
-
30
- {hasMetadata &&
31
- <div id={metaContainerId} className="ds_file-download__details">
32
- <dl className="ds_metadata ds_metadata--inline">
33
- {fileType &&
34
- <div className="ds_metadata__item">
35
- <dt className="ds_metadata__key visually-hidden">File type</dt>
36
- <dd className="ds_metadata__value">{fileType}<span className="visually-hidden">,</span></dd>
37
- </div>}
38
-
39
- {fileSize &&
40
- <div className="ds_metadata__item">
41
- <dt className="ds_metadata__key visually-hidden">File size</dt>
42
- <dd className="ds_metadata__value">{fileSize}</dd>
43
- </div>}
44
- </dl>
45
- </div>}
46
- </div>
47
- </div>);
48
- };
49
- FileDownload.displayName = 'FileDownload';
50
- exports.default = FileDownload;
@@ -1,71 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- const react_1 = __importStar(require("react"));
40
- // @ts-ignore
41
- const hide_this_page_1 = __importDefault(require("@scottish-government/design-system/src/components/hide-this-page/hide-this-page"));
42
- const HideThisPage = ({ className, escapeUrl = 'https://www.bbc.co.uk/weather', ...props }) => {
43
- const ref = (0, react_1.useRef)(null);
44
- (0, react_1.useEffect)(() => {
45
- if (ref.current) {
46
- new hide_this_page_1.default().init();
47
- const htpDivId = 'hide-this-page-instruction';
48
- if (!document.getElementById(htpDivId)) {
49
- const htpDiv = document.createElement('div');
50
- htpDiv.id = htpDivId;
51
- htpDiv.classList.add('visually-hidden');
52
- htpDiv.classList.add('ds_hide-page');
53
- htpDiv.innerHTML = '<p>To leave the page quickly, press the escape key.</p>';
54
- document.body.prepend(htpDiv);
55
- }
56
- document.body.classList.add('ds_has-hide-page');
57
- }
58
- }, [ref]);
59
- return (<div className={[
60
- 'ds_hide-page',
61
- className
62
- ].join(' ')} ref={ref} {...props}>
63
- <a href={escapeUrl} className="ds_hide-page__button ds_button js-hide-page">
64
- <strong>Hide this page</strong>
65
- <span className="visually-hidden js-enabled-text">Or press escape key to hide this page</span>
66
- </a>
67
- <p className="ds_hide-page__text js-enabled-text">Or press Esc key</p>
68
- </div>);
69
- };
70
- HideThisPage.displayName = 'HideThisPage';
71
- exports.default = HideThisPage;
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const InsetText = ({ children, className, ...props }) => {
4
- return (<div className={[
5
- 'ds_inset-text',
6
- className
7
- ].join(' ')} {...props}>
8
- <div className="ds_inset-text__text">
9
- {children}
10
- </div>
11
- </div>);
12
- };
13
- InsetText.displayName = 'InsetText';
14
- exports.default = InsetText;
@@ -1,26 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const react_1 = require("react");
7
- const abstract_notification_banner_1 = __importDefault(require("../../common/abstract-notification-banner"));
8
- // @ts-ignore
9
- const notification_banner_1 = __importDefault(require("@scottish-government/design-system/src/components/notification-banner/notification-banner"));
10
- const NotificationBanner = ({ children, className, close, icon, iconColour, iconInverse, title, ...props }) => {
11
- const ref = (0, react_1.useRef)(null);
12
- (0, react_1.useEffect)(() => {
13
- if (ref.current) {
14
- new notification_banner_1.default(ref.current).init();
15
- }
16
- }, [ref]);
17
- return (<abstract_notification_banner_1.default className={[
18
- 'ds_reversed',
19
- className
20
- ].join(' ')} close={close} icon={icon ? "PriorityHigh" : undefined} iconColour={iconColour} iconInverse={iconInverse} ref={ref} title="Information" {...props}>
21
- {children}
22
- </abstract_notification_banner_1.default>);
23
- };
24
- NotificationBanner.displayName = 'NotificationBanner';
25
- NotificationBanner.Buttons = abstract_notification_banner_1.default.Buttons;
26
- exports.default = NotificationBanner;
@@ -1,21 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const wrapper_tag_1 = __importDefault(require("../../common/wrapper-tag"));
7
- const NotificationPanel = function ({ ariaLive, children, className, headerLevel = 'h1', title, ...props }) {
8
- return (<div aria-live={ariaLive} className={[
9
- 'ds_notification-panel',
10
- className
11
- ].join(' ')} {...props}>
12
- <wrapper_tag_1.default className="ds_notification-panel__title" tagName={headerLevel}>
13
- {title}
14
- </wrapper_tag_1.default>
15
- <div className="ds_notification-panel__content">
16
- {children}
17
- </div>
18
- </div>);
19
- };
20
- NotificationPanel.displayName = 'NotificationPanel';
21
- exports.default = NotificationPanel;
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const PageHeader = ({ children, className, label, title, ...props }) => {
4
- return (<header className={[
5
- 'ds_page-header',
6
- className
7
- ].join(' ')} {...props}>
8
- {label && <span className="ds_page-header__label ds_content-label">{label}</span>}
9
- <h1 className="ds_page-header__title">{title}</h1>
10
-
11
- {children}
12
- </header>);
13
- };
14
- PageHeader.displayName = 'PageHeader';
15
- exports.default = PageHeader;