@onsvisual/svelte-components 1.0.46 → 1.0.48

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 (222) hide show
  1. package/README.md +24 -24
  2. package/dist/css/main.css +2 -513
  3. package/dist/datavis/BarChart/BarChart.stories.svelte +84 -84
  4. package/dist/datavis/BarChart/docs/component.md +19 -19
  5. package/dist/datavis/Chart/Chart.stories.svelte +128 -128
  6. package/dist/datavis/Chart/docs/component.md +31 -31
  7. package/dist/datavis/Chart/docs/example.md +28 -28
  8. package/dist/datavis/ColumnChart/ColumnChart.stories.svelte +84 -84
  9. package/dist/datavis/ColumnChart/docs/component.md +19 -19
  10. package/dist/datavis/DataCard/DataCard.stories.svelte +45 -45
  11. package/dist/datavis/DataCard/DataCard.svelte +70 -70
  12. package/dist/datavis/DataCard/Sparkline.svelte +117 -117
  13. package/dist/datavis/DataCard/docs/component.md +20 -20
  14. package/dist/datavis/DataCard/docs/example.md +25 -25
  15. package/dist/datavis/DotPlotChart/DotPlotChart.stories.svelte +40 -40
  16. package/dist/datavis/DotPlotChart/docs/component.md +19 -19
  17. package/dist/datavis/LineChart/LineChart.stories.svelte +64 -64
  18. package/dist/datavis/LineChart/docs/component.md +31 -31
  19. package/dist/datavis/ScatterChart/ScatterChart.stories.svelte +55 -55
  20. package/dist/datavis/ScatterChart/docs/component.md +53 -53
  21. package/dist/datavis/Table/Table.stories.svelte +48 -48
  22. package/dist/datavis/Table/Table.svelte +161 -161
  23. package/dist/datavis/Table/docs/component.md +20 -20
  24. package/dist/datavis/demo-data/data-scatter.js +40 -40
  25. package/dist/datavis/demo-data/data.js +18 -18
  26. package/dist/datavis/intro.mdx +21 -21
  27. package/dist/decorators/Blockquote/Blockquote.stories.svelte +25 -25
  28. package/dist/decorators/Blockquote/Blockquote.svelte +27 -27
  29. package/dist/decorators/Blockquote/docs/component.md +10 -10
  30. package/dist/decorators/Divider/Divider.stories.svelte +29 -29
  31. package/dist/decorators/Divider/Divider.svelte +52 -52
  32. package/dist/decorators/Divider/docs/component.md +12 -12
  33. package/dist/decorators/Em/Em.stories.svelte +30 -30
  34. package/dist/decorators/Em/Em.svelte +58 -58
  35. package/dist/decorators/Em/docs/component.md +12 -12
  36. package/dist/decorators/Icon/Icon.stories.svelte +27 -27
  37. package/dist/decorators/Icon/Icon.svelte +101 -101
  38. package/dist/decorators/Icon/docs/component.md +10 -10
  39. package/dist/decorators/Indent/Indent.stories.svelte +22 -22
  40. package/dist/decorators/Indent/Indent.svelte +3 -3
  41. package/dist/decorators/Indent/docs/component.md +10 -10
  42. package/dist/index.js +86 -86
  43. package/dist/inputs/Button/Button.stories.svelte +70 -70
  44. package/dist/inputs/Button/Button.svelte +152 -152
  45. package/dist/inputs/Button/docs/component.md +17 -17
  46. package/dist/inputs/ButtonGroup/ButtonGroup.stories.svelte +40 -40
  47. package/dist/inputs/ButtonGroup/ButtonGroup.svelte +57 -57
  48. package/dist/inputs/ButtonGroup/ButtonGroupItem.svelte +101 -101
  49. package/dist/inputs/ButtonGroup/docs/component.md +23 -23
  50. package/dist/inputs/Checkbox/Checkbox.stories.svelte +34 -34
  51. package/dist/inputs/Checkbox/Checkbox.svelte +180 -180
  52. package/dist/inputs/Checkbox/docs/component.md +14 -14
  53. package/dist/inputs/Checkboxes/Checkboxes.stories.svelte +34 -34
  54. package/dist/inputs/Checkboxes/Checkboxes.svelte +62 -62
  55. package/dist/inputs/Checkboxes/docs/component.md +20 -20
  56. package/dist/inputs/Checkboxes/docs/example.md +16 -16
  57. package/dist/inputs/Dropdown/Dropdown.stories.svelte +54 -54
  58. package/dist/inputs/Dropdown/Dropdown.svelte +66 -66
  59. package/dist/inputs/Dropdown/docs/component.md +22 -22
  60. package/dist/inputs/ErrorPanel/ErrorPanel.stories.svelte +25 -25
  61. package/dist/inputs/ErrorPanel/ErrorPanel.svelte +24 -24
  62. package/dist/inputs/ErrorPanel/docs/component.md +14 -14
  63. package/dist/inputs/ErrorSummary/ErrorSummary.stories.svelte +34 -34
  64. package/dist/inputs/ErrorSummary/ErrorSummary.svelte +47 -47
  65. package/dist/inputs/ErrorSummary/docs/component.md +17 -17
  66. package/dist/inputs/ErrorSummary/docs/example.md +12 -12
  67. package/dist/inputs/Input/Input.stories.svelte +73 -73
  68. package/dist/inputs/Input/Input.svelte +151 -151
  69. package/dist/inputs/Input/docs/component.md +16 -16
  70. package/dist/inputs/Radios/Radio.svelte +90 -90
  71. package/dist/inputs/Radios/Radios.stories.svelte +51 -51
  72. package/dist/inputs/Radios/Radios.svelte +62 -62
  73. package/dist/inputs/Radios/docs/component.md +24 -24
  74. package/dist/inputs/Radios/docs/example.md +21 -21
  75. package/dist/inputs/Select/Select.stories.svelte +63 -63
  76. package/dist/inputs/Select/Select.svelte +326 -326
  77. package/dist/inputs/Select/docs/component.md +27 -27
  78. package/dist/inputs/Textarea/Textarea.stories.svelte +40 -40
  79. package/dist/inputs/Textarea/Textarea.svelte +113 -113
  80. package/dist/inputs/Textarea/docs/component.md +16 -16
  81. package/dist/inputs/Toolbar/HelpModal.svelte +234 -234
  82. package/dist/inputs/Toolbar/ToolControl.svelte +23 -23
  83. package/dist/inputs/Toolbar/ToolControls.svelte +9 -9
  84. package/dist/inputs/Toolbar/Toolbar.stories.svelte +148 -148
  85. package/dist/inputs/Toolbar/Toolbar.svelte +70 -70
  86. package/dist/inputs/Toolbar/ToolbarButton.svelte +184 -184
  87. package/dist/inputs/Toolbar/ToolbarDivider.svelte +29 -29
  88. package/dist/inputs/Toolbar/ToolbarIcon.svelte +106 -106
  89. package/dist/inputs/Toolbar/ToolbarsContainer.svelte +69 -69
  90. package/dist/inputs/Toolbar/docs/component.md +101 -101
  91. package/dist/intro.mdx +66 -66
  92. package/dist/js/menuOptions.js +14 -14
  93. package/dist/js/utils.js +133 -133
  94. package/dist/js/withParams.js +43 -43
  95. package/dist/layout/Accordion/Accordion.stories.svelte +30 -30
  96. package/dist/layout/Accordion/Accordion.svelte +55 -55
  97. package/dist/layout/Accordion/AccordionItem.svelte +51 -51
  98. package/dist/layout/Accordion/accordion.js +64 -64
  99. package/dist/layout/Accordion/details.js +83 -83
  100. package/dist/layout/Accordion/docs/component.md +19 -19
  101. package/dist/layout/AnalyticsBanner/AnalyticsBanner.stories.svelte +16 -16
  102. package/dist/layout/AnalyticsBanner/AnalyticsBanner.svelte +314 -314
  103. package/dist/layout/AnalyticsBanner/docs/component.md +44 -44
  104. package/dist/layout/BackLink/BackLink.stories.svelte +16 -16
  105. package/dist/layout/BackLink/BackLink.svelte +30 -30
  106. package/dist/layout/BackLink/docs/component.md +12 -12
  107. package/dist/layout/Breadcrumb/Breadcrumb.stories.svelte +31 -31
  108. package/dist/layout/Breadcrumb/Breadcrumb.svelte +69 -69
  109. package/dist/layout/Breadcrumb/docs/component.md +15 -15
  110. package/dist/layout/Card/Card.stories.svelte +39 -39
  111. package/dist/layout/Card/Card.svelte +127 -127
  112. package/dist/layout/Card/docs/component.md +14 -14
  113. package/dist/layout/Card/docs/eg-images.md +27 -27
  114. package/dist/layout/Card/docs/eg-links.md +12 -12
  115. package/dist/layout/Card/docs/eg-spans.md +12 -12
  116. package/dist/layout/Contents/Contents.stories.svelte +27 -27
  117. package/dist/layout/Contents/Contents.svelte +51 -51
  118. package/dist/layout/Contents/docs/component.md +18 -18
  119. package/dist/layout/DescriptionList/DescriptionList.stories.svelte +22 -22
  120. package/dist/layout/DescriptionList/DescriptionList.svelte +59 -59
  121. package/dist/layout/DescriptionList/docs/component.md +18 -18
  122. package/dist/layout/Details/Details.stories.svelte +32 -32
  123. package/dist/layout/Details/Details.svelte +75 -75
  124. package/dist/layout/Details/docs/component.md +14 -14
  125. package/dist/layout/DocumentList/Document.svelte +103 -103
  126. package/dist/layout/DocumentList/DocumentList.stories.svelte +88 -88
  127. package/dist/layout/DocumentList/DocumentList.svelte +33 -33
  128. package/dist/layout/DocumentList/docs/component.md +28 -28
  129. package/dist/layout/DocumentList/docs/example.md +23 -23
  130. package/dist/layout/ErrorPage/ErrorPage.stories.svelte +18 -18
  131. package/dist/layout/ErrorPage/ErrorPage.svelte +48 -48
  132. package/dist/layout/ErrorPage/docs/component.md +13 -13
  133. package/dist/layout/Footer/Footer.stories.svelte +24 -24
  134. package/dist/layout/Footer/Footer.svelte +366 -366
  135. package/dist/layout/Footer/docs/component.md +10 -10
  136. package/dist/layout/Grid/Grid.stories.svelte +50 -50
  137. package/dist/layout/Grid/Grid.svelte +117 -117
  138. package/dist/layout/Grid/GridCell.svelte +65 -65
  139. package/dist/layout/Grid/docs/component.md +14 -14
  140. package/dist/layout/Header/Header.stories.svelte +26 -26
  141. package/dist/layout/Header/Header.svelte +875 -875
  142. package/dist/layout/Header/docs/component.md +11 -11
  143. package/dist/layout/Hero/Hero.stories.svelte +79 -79
  144. package/dist/layout/Hero/Hero.svelte +364 -364
  145. package/dist/layout/Hero/docs/component.md +14 -14
  146. package/dist/layout/Highlight/Highlight.stories.svelte +29 -29
  147. package/dist/layout/Highlight/Highlight.svelte +77 -77
  148. package/dist/layout/Highlight/docs/component.md +12 -12
  149. package/dist/layout/Image/Image.stories.svelte +23 -23
  150. package/dist/layout/Image/Image.svelte +29 -29
  151. package/dist/layout/Image/docs/component.md +15 -15
  152. package/dist/layout/List/Li.svelte +3 -3
  153. package/dist/layout/List/List.stories.svelte +40 -40
  154. package/dist/layout/List/List.svelte +46 -46
  155. package/dist/layout/List/docs/component.md +14 -14
  156. package/dist/layout/List/docs/example.md +12 -12
  157. package/dist/layout/NavSections/NavSection.svelte +90 -90
  158. package/dist/layout/NavSections/NavSections.stories.svelte +51 -51
  159. package/dist/layout/NavSections/NavSections.svelte +160 -160
  160. package/dist/layout/NavSections/docs/component.md +25 -25
  161. package/dist/layout/Notice/Notice.stories.svelte +61 -61
  162. package/dist/layout/Notice/Notice.svelte +56 -56
  163. package/dist/layout/Notice/docs/component.md +14 -14
  164. package/dist/layout/PhaseBanner/PhaseBanner.stories.svelte +24 -24
  165. package/dist/layout/PhaseBanner/PhaseBanner.svelte +66 -66
  166. package/dist/layout/PhaseBanner/docs/component.md +14 -14
  167. package/dist/layout/RelatedContent/RelatedContent.stories.svelte +36 -36
  168. package/dist/layout/RelatedContent/RelatedContent.svelte +54 -54
  169. package/dist/layout/RelatedContent/docs/component.md +16 -16
  170. package/dist/layout/Scroller/Scroller.stories.svelte +60 -60
  171. package/dist/layout/Scroller/Scroller.svelte +368 -368
  172. package/dist/layout/Scroller/ScrollerSection.svelte +70 -70
  173. package/dist/layout/Scroller/docs/component.md +39 -39
  174. package/dist/layout/Section/Section.stories.svelte +33 -33
  175. package/dist/layout/Section/Section.svelte +60 -60
  176. package/dist/layout/Section/docs/component.md +12 -12
  177. package/dist/layout/ShareButtons/ShareButtons.stories.svelte +20 -20
  178. package/dist/layout/ShareButtons/ShareButtons.svelte +131 -131
  179. package/dist/layout/ShareButtons/docs/component.md +14 -14
  180. package/dist/layout/SkipLink/SkipLink.stories.svelte +16 -16
  181. package/dist/layout/SkipLink/SkipLink.svelte +9 -9
  182. package/dist/layout/SkipLink/docs/component.md +11 -11
  183. package/dist/layout/Summary/Summary.stories.svelte +21 -21
  184. package/dist/layout/Summary/Summary.svelte +60 -60
  185. package/dist/layout/Summary/docs/component.md +17 -17
  186. package/dist/layout/Tabs/Tab.svelte +53 -53
  187. package/dist/layout/Tabs/Tabs.stories.svelte +29 -29
  188. package/dist/layout/Tabs/Tabs.svelte +89 -89
  189. package/dist/layout/Tabs/docs/component.md +16 -16
  190. package/dist/layout/Tabs/tabs.js +302 -302
  191. package/dist/layout/Timeline/Timeline.stories.svelte +44 -44
  192. package/dist/layout/Timeline/Timeline.svelte +17 -17
  193. package/dist/layout/Timeline/TimelineItem.svelte +14 -14
  194. package/dist/layout/Timeline/docs/component.md +27 -27
  195. package/dist/layout/Timeline/docs/example.md +20 -20
  196. package/dist/templates/EmbedArticle/EmbedArticle.stories.svelte +72 -72
  197. package/dist/templates/EmbedArticle/docs/component.md +56 -56
  198. package/dist/templates/FeatureArticle/FeatureArticle.stories.svelte +150 -150
  199. package/dist/templates/FeatureArticle/docs/component.md +125 -125
  200. package/dist/templates/StandardArticle/StandardArticle.stories.svelte +86 -86
  201. package/dist/templates/StandardArticle/docs/component.md +76 -76
  202. package/dist/templates/intro.mdx +18 -18
  203. package/dist/wrappers/Container/Container.stories.svelte +38 -38
  204. package/dist/wrappers/Container/Container.svelte +77 -77
  205. package/dist/wrappers/Container/docs/component.md +12 -12
  206. package/dist/wrappers/Embed/Embed.stories.svelte +24 -24
  207. package/dist/wrappers/Embed/Embed.svelte +44 -44
  208. package/dist/wrappers/Embed/docs/component.md +15 -15
  209. package/dist/wrappers/LazyLoad/LazyLoad.stories.svelte +37 -37
  210. package/dist/wrappers/LazyLoad/LazyLoad.svelte +50 -50
  211. package/dist/wrappers/LazyLoad/docs/component.md +29 -29
  212. package/dist/wrappers/Main/Main.stories.svelte +24 -24
  213. package/dist/wrappers/Main/Main.svelte +11 -11
  214. package/dist/wrappers/Main/docs/component.md +16 -16
  215. package/dist/wrappers/Observe/Observe.stories.svelte +29 -29
  216. package/dist/wrappers/Observe/Observe.svelte +45 -45
  217. package/dist/wrappers/Observe/docs/component.md +22 -22
  218. package/dist/wrappers/Theme/Theme.stories.svelte +70 -70
  219. package/dist/wrappers/Theme/Theme.svelte +76 -76
  220. package/dist/wrappers/Theme/docs/component.md +10 -10
  221. package/dist/wrappers/Theme/themes.js +70 -70
  222. package/package.json +88 -88
@@ -1,53 +1,53 @@
1
- <script>
2
- import { onMount, onDestroy, getContext } from "svelte";
3
- import { slugify } from "../../js/utils.js";
4
-
5
- /**
6
- * Title of tab/panel
7
- * @type {string}
8
- */
9
- export let title = "Tab title";
10
- /**
11
- * Hide the title within the panel
12
- * @type {boolean}
13
- */
14
- export let hideTitle = true;
15
- /**
16
- * ID/slug for tab (auto-generated from title if not set)
17
- * @type {string}
18
- */
19
- export let id = slugify(title);
20
-
21
- const sections = getContext("sections");
22
-
23
- let el;
24
-
25
- onMount(() => {
26
- if (sections) {
27
- $sections = [...el.parentElement.getElementsByTagName("section")].filter(
28
- (s) => s.dataset.type === "Tab"
29
- );
30
- }
31
- });
32
-
33
- onDestroy(() => {
34
- if (sections) {
35
- $sections = $sections.filter((s) => s.id !== id);
36
- }
37
- });
38
- </script>
39
-
40
- <!-- svelte-ignore a11y_no_noninteractive_element_to_interactive_role -->
41
- <section
42
- {id}
43
- data-title={title}
44
- data-type="Tab"
45
- class="ons-tabs__panel"
46
- tabindex="0"
47
- role="tabpanel"
48
- aria-labelledby="tab_{id}"
49
- bind:this={el}
50
- >
51
- <h2 id="{id}-content-title" class="ons-u-vh" class:ons-u-vh={hideTitle}>{title}</h2>
52
- <slot />
53
- </section>
1
+ <script>
2
+ import { onMount, onDestroy, getContext } from "svelte";
3
+ import { slugify } from "../../js/utils.js";
4
+
5
+ /**
6
+ * Title of tab/panel
7
+ * @type {string}
8
+ */
9
+ export let title = "Tab title";
10
+ /**
11
+ * Hide the title within the panel
12
+ * @type {boolean}
13
+ */
14
+ export let hideTitle = true;
15
+ /**
16
+ * ID/slug for tab (auto-generated from title if not set)
17
+ * @type {string}
18
+ */
19
+ export let id = slugify(title);
20
+
21
+ const sections = getContext("sections");
22
+
23
+ let el;
24
+
25
+ onMount(() => {
26
+ if (sections) {
27
+ $sections = [...el.parentElement.getElementsByTagName("section")].filter(
28
+ (s) => s.dataset.type === "Tab"
29
+ );
30
+ }
31
+ });
32
+
33
+ onDestroy(() => {
34
+ if (sections) {
35
+ $sections = $sections.filter((s) => s.id !== id);
36
+ }
37
+ });
38
+ </script>
39
+
40
+ <!-- svelte-ignore a11y_no_noninteractive_element_to_interactive_role -->
41
+ <section
42
+ {id}
43
+ data-title={title}
44
+ data-type="Tab"
45
+ class="ons-tabs__panel"
46
+ tabindex="0"
47
+ role="tabpanel"
48
+ aria-labelledby="tab_{id}"
49
+ bind:this={el}
50
+ >
51
+ <h2 id="{id}-content-title" class="ons-u-vh" class:ons-u-vh={hideTitle}>{title}</h2>
52
+ <slot />
53
+ </section>
@@ -1,29 +1,29 @@
1
- <script module>
2
- import { defineMeta } from "@storybook/addon-svelte-csf";
3
- import { withComponentDocs } from "../../js/withParams.js";
4
- import Tabs from "./Tabs.svelte";
5
- import Tab from "./Tab.svelte";
6
- import componentDocs from "./docs/component.md?raw";
7
-
8
- const { Story } = defineMeta({
9
- title: "Layout/Tabs",
10
- component: Tabs,
11
- tags: ["autodocs"],
12
- argTypes: {},
13
- parameters: withComponentDocs(componentDocs)
14
- });
15
- </script>
16
-
17
- {#snippet template(args)}
18
- <Tabs {...args}>
19
- <Tab title="Tab one">Contents of tab panel one.</Tab>
20
- <Tab title="Tab two">Contents of tab panel two.</Tab>
21
- <Tab title="Tab three">Contents of tab panel three.</Tab>
22
- </Tabs>
23
- {/snippet}
24
-
25
- <Story name="Default" args={{}} {template} />
26
-
27
- <Story name="Tab panel border" args={{ border: true }} {template} />
28
-
29
- <Story name="Compact tab labels" args={{ compact: true }} {template} />
1
+ <script module>
2
+ import { defineMeta } from "@storybook/addon-svelte-csf";
3
+ import { withComponentDocs } from "../../js/withParams.js";
4
+ import Tabs from "./Tabs.svelte";
5
+ import Tab from "./Tab.svelte";
6
+ import componentDocs from "./docs/component.md?raw";
7
+
8
+ const { Story } = defineMeta({
9
+ title: "Layout/Tabs",
10
+ component: Tabs,
11
+ tags: ["autodocs"],
12
+ argTypes: {},
13
+ parameters: withComponentDocs(componentDocs)
14
+ });
15
+ </script>
16
+
17
+ {#snippet template(args)}
18
+ <Tabs {...args}>
19
+ <Tab title="Tab one">Contents of tab panel one.</Tab>
20
+ <Tab title="Tab two">Contents of tab panel two.</Tab>
21
+ <Tab title="Tab three">Contents of tab panel three.</Tab>
22
+ </Tabs>
23
+ {/snippet}
24
+
25
+ <Story name="Default" args={{}} {template} />
26
+
27
+ <Story name="Tab panel border" args={{ border: true }} {template} />
28
+
29
+ <Story name="Compact tab labels" args={{ compact: true }} {template} />
@@ -1,89 +1,89 @@
1
- <script>
2
- import { onMount, setContext, createEventDispatcher } from "svelte";
3
- import { writable } from "svelte/store";
4
- import { sleep } from "../../js/utils.js";
5
- import Tabs from "./tabs.js";
6
-
7
- const dispatch = createEventDispatcher();
8
-
9
- /**
10
- * Make tabs smaller/more compact
11
- * @type {boolean}
12
- */
13
- export let compact = false;
14
- /**
15
- * Include a border around the tab panel
16
- * @type {boolean}
17
- */
18
- export let border = false;
19
- /**
20
- * The ID of selected tab (for binding)
21
- * @type {string|null}
22
- */
23
- export let selected = null;
24
- /**
25
- * Optional: Set an additional CSS class for the component
26
- * @type {string|null}
27
- */
28
- export let cls = null;
29
-
30
- let el;
31
-
32
- const sections = writable([]);
33
- setContext("sections", sections);
34
-
35
- function updateSelection(id) {
36
- selected = id;
37
- dispatch("change", { id });
38
- }
39
-
40
- onMount(async () => {
41
- await sleep(0);
42
- new Tabs(el);
43
- selected = $sections?.[0]?.id;
44
- });
45
- </script>
46
-
47
- <section
48
- class="ons-tabs {cls}"
49
- class:ons-tabs__border={border}
50
- class:ons-tabs__compact={compact}
51
- bind:this={el}
52
- >
53
- <h2 class="ons-tabs__title ons-u-fs-r--b ons-u-mt-no ons-u-fs-m ons-u-vh">Contents</h2>
54
- <div class="ons-tabs__container">
55
- <ul class="ons-tabs__list ons-tabs__list--row" role="tablist">
56
- {#each $sections as section}
57
- <li class="ons-tab__list-item ons-tab__list-item--row" role="presentation">
58
- <a
59
- on:click={() => updateSelection(section.id)}
60
- href="#{section.id}"
61
- class="ons-tab ons-tab--row"
62
- id="tab_{section.id}"
63
- role="tab"
64
- aria-controls={section.id}>{section.dataset.title}</a
65
- >
66
- </li>
67
- {/each}
68
- </ul>
69
- </div>
70
- <slot />
71
- </section>
72
-
73
- <style>
74
- /* css to extend display options compared to design system */
75
- .ons-tabs__compact .ons-tab--row {
76
- font-size: 16px;
77
- height: 2.2rem;
78
- padding: 0.1rem 0.75rem;
79
- }
80
- .ons-tabs__border .ons-tabs__container {
81
- border: none;
82
- }
83
- .ons-tabs__border :global(.ons-tabs__panel) {
84
- border: 1px solid var(--ons-color-borders);
85
- border-radius: 0 3px 3px 3px;
86
- padding-left: 12px;
87
- padding-right: 12px;
88
- }
89
- </style>
1
+ <script>
2
+ import { onMount, setContext, createEventDispatcher } from "svelte";
3
+ import { writable } from "svelte/store";
4
+ import { sleep } from "../../js/utils.js";
5
+ import Tabs from "./tabs.js";
6
+
7
+ const dispatch = createEventDispatcher();
8
+
9
+ /**
10
+ * Make tabs smaller/more compact
11
+ * @type {boolean}
12
+ */
13
+ export let compact = false;
14
+ /**
15
+ * Include a border around the tab panel
16
+ * @type {boolean}
17
+ */
18
+ export let border = false;
19
+ /**
20
+ * The ID of selected tab (for binding)
21
+ * @type {string|null}
22
+ */
23
+ export let selected = null;
24
+ /**
25
+ * Optional: Set an additional CSS class for the component
26
+ * @type {string|null}
27
+ */
28
+ export let cls = null;
29
+
30
+ let el;
31
+
32
+ const sections = writable([]);
33
+ setContext("sections", sections);
34
+
35
+ function updateSelection(id) {
36
+ selected = id;
37
+ dispatch("change", { id });
38
+ }
39
+
40
+ onMount(async () => {
41
+ await sleep(0);
42
+ new Tabs(el);
43
+ selected = $sections?.[0]?.id;
44
+ });
45
+ </script>
46
+
47
+ <section
48
+ class="ons-tabs {cls}"
49
+ class:ons-tabs__border={border}
50
+ class:ons-tabs__compact={compact}
51
+ bind:this={el}
52
+ >
53
+ <h2 class="ons-tabs__title ons-u-fs-r--b ons-u-mt-no ons-u-fs-m ons-u-vh">Contents</h2>
54
+ <div class="ons-tabs__container">
55
+ <ul class="ons-tabs__list ons-tabs__list--row" role="tablist">
56
+ {#each $sections as section}
57
+ <li class="ons-tab__list-item ons-tab__list-item--row" role="presentation">
58
+ <a
59
+ on:click={() => updateSelection(section.id)}
60
+ href="#{section.id}"
61
+ class="ons-tab ons-tab--row"
62
+ id="tab_{section.id}"
63
+ role="tab"
64
+ aria-controls={section.id}>{section.dataset.title}</a
65
+ >
66
+ </li>
67
+ {/each}
68
+ </ul>
69
+ </div>
70
+ <slot />
71
+ </section>
72
+
73
+ <style>
74
+ /* css to extend display options compared to design system */
75
+ .ons-tabs__compact .ons-tab--row {
76
+ font-size: 16px;
77
+ height: 2.2rem;
78
+ padding: 0.1rem 0.75rem;
79
+ }
80
+ .ons-tabs__border .ons-tabs__container {
81
+ border: none;
82
+ }
83
+ .ons-tabs__border :global(.ons-tabs__panel) {
84
+ border: 1px solid var(--ons-color-borders);
85
+ border-radius: 0 3px 3px 3px;
86
+ padding-left: 12px;
87
+ padding-right: 12px;
88
+ }
89
+ </style>
@@ -1,16 +1,16 @@
1
- Use tabs to help users navigate between short sections of related content within a single page, showing one section at a time.
2
-
3
- Based on [this ONS Design System component](https://service-manual.ons.gov.uk/design-system/components/tabs).
4
-
5
- <!-- prettier-ignore -->
6
- ```html
7
- <script>
8
- import { Tab, Tabs } from "@onsvisual/svelte-components";
9
- </script>
10
-
11
- <Tabs>
12
- <Tab title="Tab one">Contents of tab panel one.</Tab>
13
- <Tab title="Tab two">Contents of tab panel two.</Tab>
14
- <Tab title="Tab three">Contents of tab panel three.</Tab>
15
- </Tabs>
16
- ```
1
+ Use tabs to help users navigate between short sections of related content within a single page, showing one section at a time.
2
+
3
+ Based on [this ONS Design System component](https://service-manual.ons.gov.uk/design-system/components/tabs).
4
+
5
+ <!-- prettier-ignore -->
6
+ ```html
7
+ <script>
8
+ import { Tab, Tabs } from "@onsvisual/svelte-components";
9
+ </script>
10
+
11
+ <Tabs>
12
+ <Tab title="Tab one">Contents of tab panel one.</Tab>
13
+ <Tab title="Tab two">Contents of tab panel two.</Tab>
14
+ <Tab title="Tab three">Contents of tab panel three.</Tab>
15
+ </Tabs>
16
+ ```