@nypl/design-system-react-components 1.0.2 → 1.0.4
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.
- package/CHANGELOG.md +53 -0
- package/README.md +171 -135
- package/dist/__tests__/mediaMatchMock.d.ts +79 -0
- package/dist/components/Card/Card.d.ts +8 -6
- package/dist/components/Heading/Heading.d.ts +6 -0
- package/dist/components/Icons/Icon.d.ts +1 -1
- package/dist/components/Icons/IconSvgs.d.ts +10 -0
- package/dist/components/Logo/Logo.d.ts +1 -1
- package/dist/components/Logo/LogoSvgs.d.ts +3 -0
- package/dist/components/Slider/Slider.d.ts +1 -2
- package/dist/components/Table/Table.d.ts +3 -2
- package/dist/components/Text/Text.d.ts +6 -0
- package/dist/components/TextInput/TextInput.d.ts +2 -1
- package/dist/design-system-react-components.cjs.development.js +1700 -878
- package/dist/design-system-react-components.cjs.development.js.map +1 -1
- package/dist/design-system-react-components.cjs.production.min.js +1 -1
- package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
- package/dist/design-system-react-components.esm.js +1672 -881
- package/dist/design-system-react-components.esm.js.map +1 -1
- package/dist/hooks/{tests → __tests__}/useCarouselStyles.test.d.ts +0 -0
- package/dist/hooks/__tests__/useNYPLBreakpoints.test.d.ts +1 -0
- package/dist/hooks/useNYPLBreakpoints.d.ts +13 -0
- package/dist/index.d.ts +2 -1
- package/dist/resources.scss +0 -4
- package/dist/styles.css +3 -2
- package/dist/theme/components/button.d.ts +7 -2
- package/dist/theme/components/checkbox.d.ts +1 -0
- package/dist/theme/components/customTable.d.ts +522 -34
- package/dist/theme/components/datePicker.d.ts +1 -0
- package/dist/theme/components/global.d.ts +5 -2
- package/dist/theme/components/heading.d.ts +5 -1
- package/dist/theme/components/image.d.ts +18 -0
- package/dist/theme/components/radio.d.ts +9 -0
- package/dist/theme/components/searchBar.d.ts +6 -0
- package/dist/theme/components/select.d.ts +4 -5
- package/dist/theme/components/structuredContent.d.ts +117 -17
- package/dist/theme/components/template.d.ts +4 -1
- package/dist/theme/components/text.d.ts +5 -1
- package/dist/theme/components/textInput.d.ts +4 -0
- package/dist/theme/components/toggle.d.ts +1 -0
- package/dist/theme/provider.d.ts +2 -1
- package/package.json +16 -16
- package/src/__tests__/fileMock.ts +0 -6
- package/src/__tests__/setup.ts +0 -27
- package/src/__tests__/utils/utils.test.ts +0 -18
- package/src/components/AccessibilityGuide/SkipNavigation.stories.mdx +0 -42
- package/src/components/Accordion/Accordion.stories.mdx +0 -333
- package/src/components/Accordion/Accordion.test.tsx +0 -237
- package/src/components/Accordion/Accordion.tsx +0 -137
- package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +0 -734
- package/src/components/Autosuggest/Autosuggest.stories.mdx +0 -75
- package/src/components/Autosuggest/Autosuggest.stories.tsx +0 -211
- package/src/components/Autosuggest/_Autosuggest.scss +0 -51
- package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +0 -231
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +0 -144
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +0 -98
- package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +0 -695
- package/src/components/Button/Button.stories.mdx +0 -320
- package/src/components/Button/Button.test.tsx +0 -184
- package/src/components/Button/Button.tsx +0 -95
- package/src/components/Button/__snapshots__/Button.test.tsx.snap +0 -106
- package/src/components/ButtonGroup/ButtonGroup.stories.mdx +0 -178
- package/src/components/ButtonGroup/ButtonGroup.test.tsx +0 -141
- package/src/components/ButtonGroup/ButtonGroup.tsx +0 -100
- package/src/components/ButtonGroup/__snapshots__/ButtonGroup.test.tsx.snap +0 -117
- package/src/components/Card/Card.stories.mdx +0 -1041
- package/src/components/Card/Card.test.tsx +0 -388
- package/src/components/Card/Card.tsx +0 -346
- package/src/components/Card/__snapshots__/Card.test.tsx.snap +0 -568
- package/src/components/Chakra/Box.stories.mdx +0 -52
- package/src/components/Chakra/Center.stories.mdx +0 -96
- package/src/components/Chakra/Flex.stories.mdx +0 -111
- package/src/components/Chakra/Grid.stories.mdx +0 -89
- package/src/components/Chakra/Stack.stories.mdx +0 -109
- package/src/components/Checkbox/Checkbox.stories.mdx +0 -243
- package/src/components/Checkbox/Checkbox.test.tsx +0 -350
- package/src/components/Checkbox/Checkbox.tsx +0 -152
- package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +0 -661
- package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +0 -462
- package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +0 -492
- package/src/components/CheckboxGroup/CheckboxGroup.tsx +0 -173
- package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +0 -1842
- package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +0 -163
- package/src/components/ComponentWrapper/ComponentWrapper.tsx +0 -76
- package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +0 -103
- package/src/components/DatePicker/DatePicker.stories.mdx +0 -452
- package/src/components/DatePicker/DatePicker.test.tsx +0 -940
- package/src/components/DatePicker/DatePicker.tsx +0 -450
- package/src/components/DatePicker/_DatePicker.scss +0 -100
- package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +0 -908
- package/src/components/Fieldset/Fieldset.stories.mdx +0 -96
- package/src/components/Fieldset/Fieldset.test.tsx +0 -155
- package/src/components/Fieldset/Fieldset.tsx +0 -55
- package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +0 -89
- package/src/components/Form/Form.stories.mdx +0 -426
- package/src/components/Form/Form.test.tsx +0 -234
- package/src/components/Form/Form.tsx +0 -124
- package/src/components/Form/__snapshots__/Form.test.tsx.snap +0 -115
- package/src/components/Grid/SimpleGrid.stories.mdx +0 -336
- package/src/components/Grid/SimpleGrid.test.tsx +0 -79
- package/src/components/Grid/SimpleGrid.tsx +0 -49
- package/src/components/Grid/__snapshots__/SimpleGrid.test.tsx.snap +0 -23
- package/src/components/Heading/Heading.stories.mdx +0 -187
- package/src/components/Heading/Heading.test.tsx +0 -171
- package/src/components/Heading/Heading.tsx +0 -104
- package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +0 -90
- package/src/components/HelperErrorText/HelperErrorText.stories.mdx +0 -172
- package/src/components/HelperErrorText/HelperErrorText.test.tsx +0 -114
- package/src/components/HelperErrorText/HelperErrorText.tsx +0 -62
- package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +0 -93
- package/src/components/Hero/Hero.stories.mdx +0 -378
- package/src/components/Hero/Hero.test.tsx +0 -611
- package/src/components/Hero/Hero.tsx +0 -203
- package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +0 -379
- package/src/components/HorizontalRule/HorizontalRule.stories.mdx +0 -73
- package/src/components/HorizontalRule/HorizontalRule.test.tsx +0 -54
- package/src/components/HorizontalRule/HorizontalRule.tsx +0 -27
- package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +0 -44
- package/src/components/Icons/Icon.stories.mdx +0 -413
- package/src/components/Icons/Icon.test.tsx +0 -120
- package/src/components/Icons/Icon.tsx +0 -187
- package/src/components/Icons/IconSvgs.tsx +0 -64
- package/src/components/Icons/__snapshots__/Icon.test.tsx.snap +0 -129
- package/src/components/Image/Image.stories.mdx +0 -332
- package/src/components/Image/Image.test.tsx +0 -155
- package/src/components/Image/Image.tsx +0 -171
- package/src/components/Image/__snapshots__/Image.test.tsx.snap +0 -269
- package/src/components/Label/Label.stories.mdx +0 -100
- package/src/components/Label/Label.test.tsx +0 -116
- package/src/components/Label/Label.tsx +0 -55
- package/src/components/Label/__snapshots__/Label.test.tsx.snap +0 -45
- package/src/components/Link/Link.stories.mdx +0 -249
- package/src/components/Link/Link.test.tsx +0 -224
- package/src/components/Link/Link.tsx +0 -178
- package/src/components/Link/__snapshots__/Link.test.tsx.snap +0 -286
- package/src/components/List/List.stories.mdx +0 -393
- package/src/components/List/List.test.tsx +0 -265
- package/src/components/List/List.tsx +0 -156
- package/src/components/List/__snapshots__/List.test.tsx.snap +0 -213
- package/src/components/Logo/Logo.stories.mdx +0 -295
- package/src/components/Logo/Logo.test.tsx +0 -116
- package/src/components/Logo/Logo.tsx +0 -151
- package/src/components/Logo/LogoSvgs.tsx +0 -90
- package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +0 -142
- package/src/components/Modal/Modal.stories.mdx +0 -294
- package/src/components/Modal/Modal.test.tsx +0 -157
- package/src/components/Modal/Modal.tsx +0 -154
- package/src/components/Modal/__snapshots__/Modal.test.tsx.snap +0 -25
- package/src/components/Notification/Notification.stories.mdx +0 -358
- package/src/components/Notification/Notification.test.tsx +0 -279
- package/src/components/Notification/Notification.tsx +0 -224
- package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +0 -525
- package/src/components/Pagination/Pagination.stories.mdx +0 -184
- package/src/components/Pagination/Pagination.test.tsx +0 -419
- package/src/components/Pagination/Pagination.tsx +0 -269
- package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +0 -544
- package/src/components/Placeholder/Placeholder.tsx +0 -19
- package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +0 -360
- package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +0 -298
- package/src/components/ProgressIndicator/ProgressIndicator.tsx +0 -132
- package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +0 -434
- package/src/components/Radio/Radio.stories.mdx +0 -216
- package/src/components/Radio/Radio.test.tsx +0 -247
- package/src/components/Radio/Radio.tsx +0 -119
- package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +0 -451
- package/src/components/RadioGroup/RadioGroup.stories.mdx +0 -479
- package/src/components/RadioGroup/RadioGroup.test.tsx +0 -471
- package/src/components/RadioGroup/RadioGroup.tsx +0 -171
- package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +0 -1550
- package/src/components/SearchBar/SearchBar.stories.mdx +0 -518
- package/src/components/SearchBar/SearchBar.test.tsx +0 -435
- package/src/components/SearchBar/SearchBar.tsx +0 -210
- package/src/components/SearchBar/__snapshots__/SearchBar.test.tsx.snap +0 -1049
- package/src/components/Select/Select.stories.mdx +0 -439
- package/src/components/Select/Select.test.tsx +0 -358
- package/src/components/Select/Select.tsx +0 -183
- package/src/components/Select/__snapshots__/Select.test.tsx.snap +0 -895
- package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +0 -142
- package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +0 -116
- package/src/components/SkeletonLoader/SkeletonLoader.tsx +0 -123
- package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +0 -898
- package/src/components/SkipNavigation/SkipNavigation.stories.mdx +0 -90
- package/src/components/SkipNavigation/SkipNavigation.test.tsx +0 -63
- package/src/components/SkipNavigation/SkipNavigation.tsx +0 -51
- package/src/components/SkipNavigation/__snapshots__/SkipNavigation.test.tsx.snap +0 -130
- package/src/components/Slider/Slider.stories.mdx +0 -628
- package/src/components/Slider/Slider.test.tsx +0 -736
- package/src/components/Slider/Slider.tsx +0 -322
- package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +0 -2186
- package/src/components/StatusBadge/StatusBadge.stories.mdx +0 -109
- package/src/components/StatusBadge/StatusBadge.test.tsx +0 -70
- package/src/components/StatusBadge/StatusBadge.tsx +0 -35
- package/src/components/StatusBadge/__snapshots__/StatusBadge.test.tsx.snap +0 -47
- package/src/components/StructuredContent/StructuredContent.stories.mdx +0 -567
- package/src/components/StructuredContent/StructuredContent.test.tsx +0 -435
- package/src/components/StructuredContent/StructuredContent.tsx +0 -139
- package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +0 -368
- package/src/components/StyleGuide/Bidirectionality.stories.mdx +0 -206
- package/src/components/StyleGuide/Breakpoints.stories.mdx +0 -55
- package/src/components/StyleGuide/Buttons.stories.mdx +0 -194
- package/src/components/StyleGuide/ColorCard.tsx +0 -43
- package/src/components/StyleGuide/Colors.stories.mdx +0 -201
- package/src/components/StyleGuide/DesignTokens.stories.mdx +0 -193
- package/src/components/StyleGuide/Forms.stories.mdx +0 -94
- package/src/components/StyleGuide/Iconography.stories.mdx +0 -142
- package/src/components/StyleGuide/Spacing.stories.mdx +0 -116
- package/src/components/StyleGuide/Typography.stories.mdx +0 -419
- package/src/components/Table/Table.stories.mdx +0 -272
- package/src/components/Table/Table.test.tsx +0 -241
- package/src/components/Table/Table.tsx +0 -152
- package/src/components/Table/__snapshots__/Table.test.tsx.snap +0 -1703
- package/src/components/Tabs/Tabs.stories.mdx +0 -338
- package/src/components/Tabs/Tabs.test.tsx +0 -298
- package/src/components/Tabs/Tabs.tsx +0 -264
- package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +0 -584
- package/src/components/Template/Template.stories.mdx +0 -695
- package/src/components/Template/Template.test.tsx +0 -309
- package/src/components/Template/Template.tsx +0 -326
- package/src/components/Template/__snapshots__/Template.test.tsx.snap +0 -342
- package/src/components/Text/Text.stories.mdx +0 -103
- package/src/components/Text/Text.test.tsx +0 -63
- package/src/components/Text/Text.tsx +0 -50
- package/src/components/Text/__snapshots__/Text.test.tsx.snap +0 -50
- package/src/components/TextInput/TextInput.stories.mdx +0 -268
- package/src/components/TextInput/TextInput.test.tsx +0 -451
- package/src/components/TextInput/TextInput.tsx +0 -240
- package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +0 -274
- package/src/components/Toggle/Toggle.stories.mdx +0 -237
- package/src/components/Toggle/Toggle.test.tsx +0 -170
- package/src/components/Toggle/Toggle.tsx +0 -128
- package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +0 -470
- package/src/components/VideoPlayer/VideoPlayer.stories.mdx +0 -212
- package/src/components/VideoPlayer/VideoPlayer.test.tsx +0 -308
- package/src/components/VideoPlayer/VideoPlayer.tsx +0 -188
- package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +0 -192
- package/src/docs/Chakra.stories.mdx +0 -563
- package/src/docs/Welcome.stories.mdx +0 -148
- package/src/helpers/types.ts +0 -1
- package/src/hooks/tests/useCarouselStyles.test.ts +0 -140
- package/src/hooks/tests/useNYPLTheme.test.tsx +0 -36
- package/src/hooks/useCarouselStyles.stories.mdx +0 -30
- package/src/hooks/useCarouselStyles.ts +0 -35
- package/src/hooks/useNYPLTheme.stories.mdx +0 -98
- package/src/hooks/useNYPLTheme.ts +0 -91
- package/src/hooks/useWindowSize.stories.mdx +0 -23
- package/src/hooks/useWindowSize.ts +0 -40
- package/src/index.ts +0 -136
- package/src/resources.scss +0 -6
- package/src/styles/base/_01-breakpoints.scss +0 -27
- package/src/styles/base/_02-mixins.scss +0 -103
- package/src/styles/base/_place-holder.scss +0 -33
- package/src/styles/space/_space-inline.scss +0 -79
- package/src/styles/space/_space-inset.scss +0 -57
- package/src/styles/space/_space-stack.scss +0 -116
- package/src/styles.scss +0 -23
- package/src/theme/components/accordion.ts +0 -25
- package/src/theme/components/breadcrumb.ts +0 -94
- package/src/theme/components/button.ts +0 -133
- package/src/theme/components/buttonGroup.ts +0 -10
- package/src/theme/components/card.ts +0 -237
- package/src/theme/components/checkbox.ts +0 -110
- package/src/theme/components/checkboxGroup.ts +0 -10
- package/src/theme/components/componentWrapper.ts +0 -14
- package/src/theme/components/customTable.ts +0 -77
- package/src/theme/components/datePicker.ts +0 -17
- package/src/theme/components/fieldset.ts +0 -23
- package/src/theme/components/global.ts +0 -91
- package/src/theme/components/globalMixins.ts +0 -24
- package/src/theme/components/heading.ts +0 -79
- package/src/theme/components/helperErrorText.ts +0 -14
- package/src/theme/components/hero.ts +0 -238
- package/src/theme/components/horizontalRule.ts +0 -17
- package/src/theme/components/icon.ts +0 -88
- package/src/theme/components/image.ts +0 -136
- package/src/theme/components/label.ts +0 -15
- package/src/theme/components/link.ts +0 -63
- package/src/theme/components/list.ts +0 -88
- package/src/theme/components/logo.ts +0 -58
- package/src/theme/components/notification.ts +0 -132
- package/src/theme/components/pagination.ts +0 -17
- package/src/theme/components/progressIndicator.ts +0 -67
- package/src/theme/components/radio.ts +0 -103
- package/src/theme/components/radioGroup.ts +0 -10
- package/src/theme/components/searchBar.ts +0 -19
- package/src/theme/components/select.ts +0 -72
- package/src/theme/components/skeletonLoader.ts +0 -113
- package/src/theme/components/skipNavigation.ts +0 -29
- package/src/theme/components/slider.ts +0 -95
- package/src/theme/components/statusBadge.ts +0 -26
- package/src/theme/components/structuredContent.ts +0 -149
- package/src/theme/components/tabs.ts +0 -109
- package/src/theme/components/template.ts +0 -114
- package/src/theme/components/text.ts +0 -38
- package/src/theme/components/textInput.ts +0 -65
- package/src/theme/components/toggle.ts +0 -109
- package/src/theme/components/videoPlayer.ts +0 -47
- package/src/theme/foundations/breakpoints.ts +0 -24
- package/src/theme/foundations/colors.ts +0 -212
- package/src/theme/foundations/global.ts +0 -43
- package/src/theme/foundations/radii.ts +0 -7
- package/src/theme/foundations/shadows.ts +0 -5
- package/src/theme/foundations/spacing.ts +0 -136
- package/src/theme/foundations/typography.ts +0 -107
- package/src/theme/index.ts +0 -131
- package/src/theme/provider.tsx +0 -9
- package/src/theme/types.ts +0 -1
- package/src/utils/componentCategories.ts +0 -152
- package/src/utils/interfaces.ts +0 -5
- package/src/utils/utils.ts +0 -84
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { Canvas, Meta, Story } from "@storybook/addon-docs";
|
|
2
|
-
import Autosuggest from "react-autosuggest";
|
|
3
|
-
|
|
4
|
-
import * as stories from "./Autosuggest.stories.tsx";
|
|
5
|
-
import { getCategory } from "../../utils/componentCategories";
|
|
6
|
-
|
|
7
|
-
<Meta title={getCategory("Autosuggest")} component={Autosuggest} />
|
|
8
|
-
|
|
9
|
-
# Autosuggest
|
|
10
|
-
|
|
11
|
-
The Reservoir Design System (DS) does not have its own `Autosuggest` component. Instead,
|
|
12
|
-
we are currently using the
|
|
13
|
-
[react-autosuggest](https://www.npmjs.com/package/react-autosuggest) package.
|
|
14
|
-
We recommend using this package in your application and wrapping it in a [custom
|
|
15
|
-
component](#code-implementation). The Reservoir Design System (DS) does have custom
|
|
16
|
-
styling that targets the classes from the `react-autosuggest` package, so the look
|
|
17
|
-
and feel will be consistent.
|
|
18
|
-
|
|
19
|
-
In the following previews, you'll notice that there is a lot of white space underneath
|
|
20
|
-
every input element. Since the suggestion dropdown will appear on top of page content,
|
|
21
|
-
we've added a min-height to make it easier to see the dropdown. This is for demonstration
|
|
22
|
-
purposes only and you will not need to do this in your application.
|
|
23
|
-
|
|
24
|
-
<Canvas withToolbar>
|
|
25
|
-
<Story name="Basic" story={stories.AutosuggestLibrary} />
|
|
26
|
-
</Canvas>
|
|
27
|
-
|
|
28
|
-
## With custom icons
|
|
29
|
-
|
|
30
|
-
You can customize how suggestions appear by updating what the
|
|
31
|
-
`renderSuggestion` function returns. In the following example, an `Icon`
|
|
32
|
-
component is added to render a checkmark after each suggestion. View it by
|
|
33
|
-
typing "c" or "tr" in the following input.
|
|
34
|
-
|
|
35
|
-
```jsx
|
|
36
|
-
const renderSuggestion = (suggestion) => (
|
|
37
|
-
<span>
|
|
38
|
-
{suggestion}
|
|
39
|
-
<Icon name="check" />
|
|
40
|
-
</span>
|
|
41
|
-
);
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
<Story name="With custom icons" story={stories.AutosuggestFish} />
|
|
45
|
-
|
|
46
|
-
## Code Implementation
|
|
47
|
-
|
|
48
|
-
In order to use the `Autosuggest` component, we suggest wrapping it a custom
|
|
49
|
-
component that stores state. State is needed to keep track of all the
|
|
50
|
-
suggestions and of the current input value. The custom component returns the
|
|
51
|
-
`Autosuggest` component with the following suggested props:
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
<Autosuggest
|
|
55
|
-
suggestions={suggestions}
|
|
56
|
-
onSuggestionsFetchRequested={onSuggestionsFetchRequested}
|
|
57
|
-
onSuggestionsClearRequested={onSuggestionsClearRequested}
|
|
58
|
-
getSuggestionValue={getSuggestionValue}
|
|
59
|
-
renderSuggestion={renderSuggestion}
|
|
60
|
-
inputProps={inputProps}
|
|
61
|
-
renderInputComponent={renderInputComponent}
|
|
62
|
-
/>
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
| prop | notes |
|
|
66
|
-
| ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
67
|
-
| `suggestions` | The array of suggestions to use based on the component's state. An example can be using `const [suggestions, setSuggestions] = useState([]);` |
|
|
68
|
-
| `onSuggestionsFetchRequested` | Function that Autosuggest will call every time suggestions need to be updated. |
|
|
69
|
-
| `onSuggestionsClearRequested` | Function to clear out all current suggestions. |
|
|
70
|
-
| `getSuggestionValue` | A suggestion can be a string or an object. If it is an object, this function tells it what property to use in the object. |
|
|
71
|
-
| `renderSuggestion` | This function controls the output of each suggestion. |
|
|
72
|
-
| `inputProps` | An object with props for the `input` component. |
|
|
73
|
-
| `renderInputComponent` | This function allows overriding the `input` component as well as the structure with other components, such as `label`. |
|
|
74
|
-
|
|
75
|
-
Check `/src/components/Autosuggest/Autosuggest.stories.tsx` for two detailed examples.
|
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
import React, { useState } from "react";
|
|
2
|
-
|
|
3
|
-
import Autosuggest from "react-autosuggest";
|
|
4
|
-
import Icon from "../Icons/Icon";
|
|
5
|
-
import TextInput from "../TextInput/TextInput";
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* StoryWrapper
|
|
9
|
-
* Wrapper component just to give the Autosuggest examples more space for the
|
|
10
|
-
* suggestions dropdown to display.
|
|
11
|
-
*/
|
|
12
|
-
const StoryWrapper = ({ children }: { children: JSX.Element }) => (
|
|
13
|
-
<div style={{ padding: "5px", minHeight: "400px" }}>{children}</div>
|
|
14
|
-
);
|
|
15
|
-
|
|
16
|
-
const libraryRenderInputComponent = (inputProps: any) => {
|
|
17
|
-
return (
|
|
18
|
-
<TextInput
|
|
19
|
-
id="library-autosuggest"
|
|
20
|
-
isRequired
|
|
21
|
-
labelText="Home Library"
|
|
22
|
-
name="homeLibraryName"
|
|
23
|
-
helperText="Select your home library. Start by typing the name of the library. Try 'ba'."
|
|
24
|
-
{...inputProps}
|
|
25
|
-
/>
|
|
26
|
-
);
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
interface Library {
|
|
30
|
-
label: string;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* LibraryExample
|
|
35
|
-
* An example component that internally uses the `react-autosuggest` library.
|
|
36
|
-
* The list is made up of objects with `label` key. It adds a Label, Input, and
|
|
37
|
-
* HelperErrorText as elements for the autosuggest component to render.
|
|
38
|
-
*/
|
|
39
|
-
const LibraryExample = ({
|
|
40
|
-
renderInputComponent,
|
|
41
|
-
}: {
|
|
42
|
-
renderInputComponent: JSX.Element;
|
|
43
|
-
}) => {
|
|
44
|
-
const [value, setValue] = useState("");
|
|
45
|
-
const [suggestions, setSuggestions] = useState([]);
|
|
46
|
-
const libraryList: Library[] = [
|
|
47
|
-
{ label: "SimplyE" },
|
|
48
|
-
{ label: "53rd Street Branch" },
|
|
49
|
-
{ label: "Aguilar Branch" },
|
|
50
|
-
{ label: "Allerton Branch" },
|
|
51
|
-
{ label: "Battery Park City" },
|
|
52
|
-
{ label: "Baychester Branch" },
|
|
53
|
-
{ label: "Belmont Branch" },
|
|
54
|
-
{ label: "South Beach Branch" },
|
|
55
|
-
{ label: "St. Agnes" },
|
|
56
|
-
{ label: "Sedgwick Branch" },
|
|
57
|
-
{ label: "Seward Park Branch" },
|
|
58
|
-
{ label: "Soundview Branch" },
|
|
59
|
-
{ label: "St. George Library Center" },
|
|
60
|
-
];
|
|
61
|
-
const onChange = (_: any, { newValue }: { newValue: string }) =>
|
|
62
|
-
setValue(newValue);
|
|
63
|
-
// Tell autosuggest to suggest by the first letter of the library. This can
|
|
64
|
-
// be manipulated.
|
|
65
|
-
const getSuggestions = (value: string, list: Library[]) => {
|
|
66
|
-
const inputValue = value.trim().toLowerCase();
|
|
67
|
-
const inputLength = inputValue.length;
|
|
68
|
-
|
|
69
|
-
return inputLength === 0
|
|
70
|
-
? []
|
|
71
|
-
: list.filter(
|
|
72
|
-
(l) => l.label.toLowerCase().slice(0, inputLength) === inputValue
|
|
73
|
-
);
|
|
74
|
-
};
|
|
75
|
-
|
|
76
|
-
// Autosuggest will call this function every time suggestions need to be
|
|
77
|
-
// updated. `getSuggestions` must be passed.
|
|
78
|
-
const onSuggestionsFetchRequested = ({ value }: { value: string }) =>
|
|
79
|
-
setSuggestions(getSuggestions(value, libraryList));
|
|
80
|
-
// Clear out any suggestions.
|
|
81
|
-
const onSuggestionsClearRequested = () => setSuggestions([]);
|
|
82
|
-
|
|
83
|
-
// When suggestion is clicked, Autosuggest needs to populate the input
|
|
84
|
-
// based on the clicked suggestion. We want the label from that object.
|
|
85
|
-
const getSuggestionValue = (suggestion) => suggestion.label;
|
|
86
|
-
// Render every suggestion in a span.
|
|
87
|
-
const renderSuggestion = (suggestion) => <span>{suggestion.label}</span>;
|
|
88
|
-
// Autosuggest will pass through all these props to the Input component.
|
|
89
|
-
const inputProps = {
|
|
90
|
-
"aria-label": "Home Library",
|
|
91
|
-
placeholder: "Type a library name",
|
|
92
|
-
value,
|
|
93
|
-
onChange,
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
return (
|
|
97
|
-
<Autosuggest
|
|
98
|
-
suggestions={suggestions}
|
|
99
|
-
onSuggestionsFetchRequested={onSuggestionsFetchRequested}
|
|
100
|
-
onSuggestionsClearRequested={onSuggestionsClearRequested}
|
|
101
|
-
getSuggestionValue={getSuggestionValue}
|
|
102
|
-
renderSuggestion={renderSuggestion}
|
|
103
|
-
inputProps={inputProps}
|
|
104
|
-
renderInputComponent={renderInputComponent}
|
|
105
|
-
/>
|
|
106
|
-
);
|
|
107
|
-
};
|
|
108
|
-
|
|
109
|
-
export const AutosuggestLibrary = () => (
|
|
110
|
-
<StoryWrapper>
|
|
111
|
-
<LibraryExample renderInputComponent={libraryRenderInputComponent as any} />
|
|
112
|
-
</StoryWrapper>
|
|
113
|
-
);
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* FishExample
|
|
117
|
-
* An example component that internally uses the `react-autosuggest` library.
|
|
118
|
-
* The list is made up of strings. It adds an Input element for the autosuggest
|
|
119
|
-
* component to render and renders the Label separately.
|
|
120
|
-
*/
|
|
121
|
-
const FishExample = () => {
|
|
122
|
-
const [value, setValue] = useState("");
|
|
123
|
-
const [suggestions, setSuggestions] = useState([]);
|
|
124
|
-
const fishList = [
|
|
125
|
-
"sea bass",
|
|
126
|
-
"mahi mahi",
|
|
127
|
-
"pale chub",
|
|
128
|
-
"carp",
|
|
129
|
-
"ranchu goldfish",
|
|
130
|
-
"char",
|
|
131
|
-
"golden trout",
|
|
132
|
-
"crawfish",
|
|
133
|
-
"catfish",
|
|
134
|
-
"neon tetra",
|
|
135
|
-
"blowfish",
|
|
136
|
-
];
|
|
137
|
-
const renderInputComponent = (inputProps) => {
|
|
138
|
-
return (
|
|
139
|
-
<TextInput
|
|
140
|
-
id="library-fish-autosuggest"
|
|
141
|
-
labelText="Fish in Animal Crossing"
|
|
142
|
-
name="favoriteFish"
|
|
143
|
-
{...inputProps}
|
|
144
|
-
/>
|
|
145
|
-
);
|
|
146
|
-
};
|
|
147
|
-
const onChange = (_: any, { newValue }) => setValue(newValue);
|
|
148
|
-
// Just adding a simple icon to show how suggestions can be rendered.
|
|
149
|
-
const renderSuggestion = (suggestion) => (
|
|
150
|
-
<span>
|
|
151
|
-
{suggestion}
|
|
152
|
-
<Icon name="check" size="medium" />
|
|
153
|
-
</span>
|
|
154
|
-
);
|
|
155
|
-
const getSuggestionValue = (suggestion) => suggestion;
|
|
156
|
-
// Here, we want to filter suggestions if we can the user-typed string in
|
|
157
|
-
// any of the suggestion string list.
|
|
158
|
-
const getSuggestions = (value, list) => {
|
|
159
|
-
const inputValue = value.trim().toLowerCase();
|
|
160
|
-
const inputLength = inputValue.length;
|
|
161
|
-
|
|
162
|
-
return inputLength === 0
|
|
163
|
-
? []
|
|
164
|
-
: list.filter((l) => l.indexOf(inputValue) !== -1);
|
|
165
|
-
};
|
|
166
|
-
const onSuggestionsFetchRequested = ({ value }) =>
|
|
167
|
-
setSuggestions(getSuggestions(value, fishList));
|
|
168
|
-
const onSuggestionsClearRequested = () => setSuggestions([]);
|
|
169
|
-
const inputProps = {
|
|
170
|
-
placeholder: "Try the letter 'c' or 'tr'",
|
|
171
|
-
value,
|
|
172
|
-
onChange,
|
|
173
|
-
};
|
|
174
|
-
|
|
175
|
-
return (
|
|
176
|
-
<>
|
|
177
|
-
<Autosuggest
|
|
178
|
-
suggestions={suggestions}
|
|
179
|
-
onSuggestionsFetchRequested={onSuggestionsFetchRequested}
|
|
180
|
-
onSuggestionsClearRequested={onSuggestionsClearRequested}
|
|
181
|
-
getSuggestionValue={getSuggestionValue}
|
|
182
|
-
renderSuggestion={renderSuggestion}
|
|
183
|
-
inputProps={inputProps}
|
|
184
|
-
renderInputComponent={renderInputComponent}
|
|
185
|
-
highlightFirstSuggestion={true}
|
|
186
|
-
/>
|
|
187
|
-
</>
|
|
188
|
-
);
|
|
189
|
-
};
|
|
190
|
-
|
|
191
|
-
export const AutosuggestFish = () => (
|
|
192
|
-
<StoryWrapper>
|
|
193
|
-
<FishExample />
|
|
194
|
-
</StoryWrapper>
|
|
195
|
-
);
|
|
196
|
-
|
|
197
|
-
const searchBarRenderInputComponent = (inputProps: any) => {
|
|
198
|
-
return (
|
|
199
|
-
<TextInput
|
|
200
|
-
id="autosuggest-searchBar"
|
|
201
|
-
isRequired
|
|
202
|
-
labelText="home library"
|
|
203
|
-
name="homeLibraryName"
|
|
204
|
-
{...inputProps}
|
|
205
|
-
/>
|
|
206
|
-
);
|
|
207
|
-
};
|
|
208
|
-
|
|
209
|
-
export const SearchBarExample = () => (
|
|
210
|
-
<LibraryExample renderInputComponent={searchBarRenderInputComponent as any} />
|
|
211
|
-
);
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
// React Autosuggest
|
|
2
|
-
.react-autosuggest__container {
|
|
3
|
-
display: inline;
|
|
4
|
-
position: relative;
|
|
5
|
-
width: 100%;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
.react-autosuggest__input--focused {
|
|
9
|
-
outline: none;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
.react-autosuggest__input--open {
|
|
13
|
-
border-bottom-left-radius: 0;
|
|
14
|
-
border-bottom-right-radius: 0;
|
|
15
|
-
width: 100%;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
.react-autosuggest__suggestions-container {
|
|
19
|
-
display: none;
|
|
20
|
-
width: 100%;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
.react-autosuggest__suggestions-container--open {
|
|
24
|
-
background-color: var(--nypl-colors-ui-white);
|
|
25
|
-
display: block;
|
|
26
|
-
font-weight: 300;
|
|
27
|
-
margin-top: 1px; // accounts for the focus ring on the input
|
|
28
|
-
outline: 1px solid var(--nypl-colors-ui-gray-light-cool);
|
|
29
|
-
position: relative;
|
|
30
|
-
width: 100%;
|
|
31
|
-
z-index: 2;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
.react-autosuggest__suggestions-list {
|
|
35
|
-
list-style-type: none;
|
|
36
|
-
margin: 0;
|
|
37
|
-
padding: 0;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
.react-autosuggest__suggestion {
|
|
41
|
-
cursor: pointer;
|
|
42
|
-
padding: var(--nypl-space-xs);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
.react-autosuggest__suggestion--highlighted {
|
|
46
|
-
background-color: var(--nypl-colors-ui-gray-light-cool);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
.auto-suggest-bottom {
|
|
50
|
-
padding: var(--nypl-space-xs);
|
|
51
|
-
}
|
|
@@ -1,231 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ArgsTable,
|
|
3
|
-
Canvas,
|
|
4
|
-
Description,
|
|
5
|
-
Meta,
|
|
6
|
-
Story,
|
|
7
|
-
} from "@storybook/addon-docs";
|
|
8
|
-
import { withDesign } from "storybook-addon-designs";
|
|
9
|
-
|
|
10
|
-
import Breadcrumbs, { BreadcrumbsTypes } from "./Breadcrumbs";
|
|
11
|
-
import Heading from "../Heading/Heading";
|
|
12
|
-
import Link from "../Link/Link";
|
|
13
|
-
import { getCategory } from "../../utils/componentCategories";
|
|
14
|
-
import DSProvider from "../../theme/provider";
|
|
15
|
-
|
|
16
|
-
<Meta
|
|
17
|
-
title={getCategory("Breadcrumbs")}
|
|
18
|
-
component={Breadcrumbs}
|
|
19
|
-
decorators={[withDesign]}
|
|
20
|
-
parameters={{
|
|
21
|
-
design: {
|
|
22
|
-
type: "figma",
|
|
23
|
-
url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=10766%3A1031",
|
|
24
|
-
},
|
|
25
|
-
jest: ["Breadcrumbs.test.tsx"],
|
|
26
|
-
}}
|
|
27
|
-
argTypes={{
|
|
28
|
-
breadcrumbsData: { control: false },
|
|
29
|
-
breadcrumbsType: {
|
|
30
|
-
table: { defaultValue: { summary: "whatsOn" } },
|
|
31
|
-
},
|
|
32
|
-
className: { control: false },
|
|
33
|
-
id: { control: false },
|
|
34
|
-
}}
|
|
35
|
-
/>
|
|
36
|
-
|
|
37
|
-
# Breadcrumbs
|
|
38
|
-
|
|
39
|
-
| Component Version | DS Version |
|
|
40
|
-
| ----------------- | ---------- |
|
|
41
|
-
| Added | `0.0.3` |
|
|
42
|
-
| Latest | `0.28.0` |
|
|
43
|
-
|
|
44
|
-
## Table of Contents
|
|
45
|
-
|
|
46
|
-
- [Overview](#overview)
|
|
47
|
-
- [Component Props](#component-props)
|
|
48
|
-
- [Accessibility](#accessibility)
|
|
49
|
-
- [Long Titles](#long-titles)
|
|
50
|
-
- [Color Variations](#color-variations)
|
|
51
|
-
|
|
52
|
-
## Overview
|
|
53
|
-
|
|
54
|
-
<Description of={Breadcrumbs} />
|
|
55
|
-
|
|
56
|
-
The `Breadcrumbs` component is a navigation element that provides a breadcrumb
|
|
57
|
-
path that reflects the site structure and allows a user to navigate to any page
|
|
58
|
-
available in the breadcrumb hierarchy.
|
|
59
|
-
|
|
60
|
-
## Component Props
|
|
61
|
-
|
|
62
|
-
<Canvas withToolbar>
|
|
63
|
-
<Story
|
|
64
|
-
name="Breadcrumbs with Controls"
|
|
65
|
-
args={{
|
|
66
|
-
breadcrumbsData: [
|
|
67
|
-
{ url: "#", text: "Parent" },
|
|
68
|
-
{ url: "#", text: "Child" },
|
|
69
|
-
{ url: "#", text: "Grandchild" },
|
|
70
|
-
],
|
|
71
|
-
className: undefined,
|
|
72
|
-
breadcrumbsType: "whatsOn",
|
|
73
|
-
id: "breadcrumbs-id",
|
|
74
|
-
}}
|
|
75
|
-
>
|
|
76
|
-
{(args) => <Breadcrumbs {...args} />}
|
|
77
|
-
</Story>
|
|
78
|
-
</Canvas>
|
|
79
|
-
|
|
80
|
-
<ArgsTable story="Breadcrumbs with Controls" />
|
|
81
|
-
|
|
82
|
-
### Accessibility
|
|
83
|
-
|
|
84
|
-
Only one `Breadcrumbs` component should be rendered on a page. This is because
|
|
85
|
-
only one HTML `<nav>` element with an `aria-label` attribute value of
|
|
86
|
-
"Breadcrumbs" should be rendered on a page. The DS `Breadcrumbs` component
|
|
87
|
-
renders this HTML landmark so only one component must be rendered on a page.
|
|
88
|
-
|
|
89
|
-
Internally, links are organized in a `ul` list element. The current page link is
|
|
90
|
-
denoted by an `aria-current` attribute value of "page".
|
|
91
|
-
|
|
92
|
-
- [W3 Breadcrumbs Practice](https://www.w3.org/TR/wai-aria-practices/examples/breadcrumb/index.html)
|
|
93
|
-
- [Chakra UI Breadcrumb](https://chakra-ui.com/docs/components/navigation/breadcrumb)
|
|
94
|
-
|
|
95
|
-
## Long Titles
|
|
96
|
-
|
|
97
|
-
<Canvas>
|
|
98
|
-
<DSProvider>
|
|
99
|
-
<Breadcrumbs
|
|
100
|
-
breadcrumbsData={[
|
|
101
|
-
{ url: "#", text: "Parent with a Long Name" },
|
|
102
|
-
{ url: "#", text: "Child with an Even Longer Name" },
|
|
103
|
-
{
|
|
104
|
-
url: "#",
|
|
105
|
-
text: "Grandchild with an Exceptionally Long Name",
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
url: "#",
|
|
109
|
-
text: "Great-Grandchild with the Longest Name That Will Wrap onto the Second Line of the Breadcrumb Component Under the Right Circumstances",
|
|
110
|
-
},
|
|
111
|
-
]}
|
|
112
|
-
/>
|
|
113
|
-
</DSProvider>
|
|
114
|
-
</Canvas>
|
|
115
|
-
|
|
116
|
-
## Color Variations
|
|
117
|
-
|
|
118
|
-
The `Breadcrumbs` component background color can be set to a value of the
|
|
119
|
-
`breadcrumbsType` type. If the `breadcrumbsType` prop is omitted, the default
|
|
120
|
-
background color is `"whatsOn"` (`ui.black`).
|
|
121
|
-
|
|
122
|
-
<Canvas>
|
|
123
|
-
<Story
|
|
124
|
-
name="Color Variations"
|
|
125
|
-
args={{
|
|
126
|
-
breadcrumbsType: "blogs",
|
|
127
|
-
}}
|
|
128
|
-
>
|
|
129
|
-
{(args) => (
|
|
130
|
-
<>
|
|
131
|
-
<Heading level="three">Blogs</Heading>
|
|
132
|
-
<Breadcrumbs
|
|
133
|
-
breadcrumbsData={[
|
|
134
|
-
{ url: "#", text: "Parent" },
|
|
135
|
-
{ url: "#", text: "Child" },
|
|
136
|
-
{
|
|
137
|
-
url: "#",
|
|
138
|
-
text: "Grandchild",
|
|
139
|
-
},
|
|
140
|
-
]}
|
|
141
|
-
breadcrumbsType={args.breadcrumbsType}
|
|
142
|
-
/>
|
|
143
|
-
</>
|
|
144
|
-
)}
|
|
145
|
-
</Story>
|
|
146
|
-
</Canvas>
|
|
147
|
-
|
|
148
|
-
<Canvas>
|
|
149
|
-
<DSProvider>
|
|
150
|
-
<Heading level="three">Books and More</Heading>
|
|
151
|
-
<Breadcrumbs
|
|
152
|
-
breadcrumbsData={[
|
|
153
|
-
{ url: "#", text: "Parent" },
|
|
154
|
-
{ url: "#", text: "Child" },
|
|
155
|
-
{
|
|
156
|
-
url: "#",
|
|
157
|
-
text: "Grandchild",
|
|
158
|
-
},
|
|
159
|
-
]}
|
|
160
|
-
breadcrumbsType="booksAndMore"
|
|
161
|
-
/>
|
|
162
|
-
</DSProvider>
|
|
163
|
-
</Canvas>
|
|
164
|
-
|
|
165
|
-
<Canvas>
|
|
166
|
-
<DSProvider>
|
|
167
|
-
<Heading level="three">Education</Heading>
|
|
168
|
-
<Breadcrumbs
|
|
169
|
-
breadcrumbsData={[
|
|
170
|
-
{ url: "#", text: "Parent" },
|
|
171
|
-
{ url: "#", text: "Child" },
|
|
172
|
-
{
|
|
173
|
-
url: "#",
|
|
174
|
-
text: "Grandchild",
|
|
175
|
-
},
|
|
176
|
-
]}
|
|
177
|
-
breadcrumbsType="education"
|
|
178
|
-
/>
|
|
179
|
-
</DSProvider>
|
|
180
|
-
</Canvas>
|
|
181
|
-
|
|
182
|
-
<Canvas>
|
|
183
|
-
<DSProvider>
|
|
184
|
-
<Heading level="three">Locations</Heading>
|
|
185
|
-
<Breadcrumbs
|
|
186
|
-
breadcrumbsData={[
|
|
187
|
-
{ url: "#", text: "Parent" },
|
|
188
|
-
{ url: "#", text: "Child" },
|
|
189
|
-
{
|
|
190
|
-
url: "#",
|
|
191
|
-
text: "Grandchild",
|
|
192
|
-
},
|
|
193
|
-
]}
|
|
194
|
-
breadcrumbsType="locations"
|
|
195
|
-
/>
|
|
196
|
-
</DSProvider>
|
|
197
|
-
</Canvas>
|
|
198
|
-
|
|
199
|
-
<Canvas>
|
|
200
|
-
<DSProvider>
|
|
201
|
-
<Heading level="three">Research</Heading>
|
|
202
|
-
<Breadcrumbs
|
|
203
|
-
breadcrumbsData={[
|
|
204
|
-
{ url: "#", text: "Parent" },
|
|
205
|
-
{ url: "#", text: "Child" },
|
|
206
|
-
{
|
|
207
|
-
url: "#",
|
|
208
|
-
text: "Grandchild",
|
|
209
|
-
},
|
|
210
|
-
]}
|
|
211
|
-
breadcrumbsType="research"
|
|
212
|
-
/>
|
|
213
|
-
</DSProvider>
|
|
214
|
-
</Canvas>
|
|
215
|
-
|
|
216
|
-
<Canvas>
|
|
217
|
-
<DSProvider>
|
|
218
|
-
<Heading level="three">What's On</Heading>
|
|
219
|
-
<Breadcrumbs
|
|
220
|
-
breadcrumbsData={[
|
|
221
|
-
{ url: "#", text: "Parent" },
|
|
222
|
-
{ url: "#", text: "Child" },
|
|
223
|
-
{
|
|
224
|
-
url: "#",
|
|
225
|
-
text: "Grandchild",
|
|
226
|
-
},
|
|
227
|
-
]}
|
|
228
|
-
breadcrumbsType="whatsOn"
|
|
229
|
-
/>
|
|
230
|
-
</DSProvider>
|
|
231
|
-
</Canvas>
|