@onsvisual/svelte-components 1.0.44 → 1.0.45

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 (224) hide show
  1. package/README.md +24 -24
  2. package/dist/css/main.css +513 -2
  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 -93
  38. package/dist/decorators/Icon/Icon.svelte.d.ts +2 -2
  39. package/dist/decorators/Icon/docs/component.md +10 -10
  40. package/dist/decorators/Indent/Indent.stories.svelte +22 -22
  41. package/dist/decorators/Indent/Indent.svelte +3 -3
  42. package/dist/decorators/Indent/docs/component.md +10 -10
  43. package/dist/index.js +86 -86
  44. package/dist/inputs/Button/Button.stories.svelte +70 -70
  45. package/dist/inputs/Button/Button.svelte +152 -152
  46. package/dist/inputs/Button/Button.svelte.d.ts +2 -2
  47. package/dist/inputs/Button/docs/component.md +17 -17
  48. package/dist/inputs/ButtonGroup/ButtonGroup.stories.svelte +40 -40
  49. package/dist/inputs/ButtonGroup/ButtonGroup.svelte +57 -57
  50. package/dist/inputs/ButtonGroup/ButtonGroupItem.svelte +101 -101
  51. package/dist/inputs/ButtonGroup/docs/component.md +23 -23
  52. package/dist/inputs/Checkbox/Checkbox.stories.svelte +34 -34
  53. package/dist/inputs/Checkbox/Checkbox.svelte +180 -180
  54. package/dist/inputs/Checkbox/docs/component.md +14 -14
  55. package/dist/inputs/Checkboxes/Checkboxes.stories.svelte +34 -34
  56. package/dist/inputs/Checkboxes/Checkboxes.svelte +62 -62
  57. package/dist/inputs/Checkboxes/docs/component.md +20 -20
  58. package/dist/inputs/Checkboxes/docs/example.md +16 -16
  59. package/dist/inputs/Dropdown/Dropdown.stories.svelte +54 -54
  60. package/dist/inputs/Dropdown/Dropdown.svelte +66 -66
  61. package/dist/inputs/Dropdown/docs/component.md +22 -22
  62. package/dist/inputs/ErrorPanel/ErrorPanel.stories.svelte +25 -25
  63. package/dist/inputs/ErrorPanel/ErrorPanel.svelte +24 -24
  64. package/dist/inputs/ErrorPanel/docs/component.md +14 -14
  65. package/dist/inputs/ErrorSummary/ErrorSummary.stories.svelte +34 -34
  66. package/dist/inputs/ErrorSummary/ErrorSummary.svelte +47 -47
  67. package/dist/inputs/ErrorSummary/docs/component.md +17 -17
  68. package/dist/inputs/ErrorSummary/docs/example.md +12 -12
  69. package/dist/inputs/Input/Input.stories.svelte +73 -73
  70. package/dist/inputs/Input/Input.svelte +151 -151
  71. package/dist/inputs/Input/docs/component.md +16 -16
  72. package/dist/inputs/Radios/Radio.svelte +90 -90
  73. package/dist/inputs/Radios/Radios.stories.svelte +51 -51
  74. package/dist/inputs/Radios/Radios.svelte +62 -62
  75. package/dist/inputs/Radios/docs/component.md +24 -24
  76. package/dist/inputs/Radios/docs/example.md +21 -21
  77. package/dist/inputs/Select/Select.stories.svelte +63 -63
  78. package/dist/inputs/Select/Select.svelte +326 -326
  79. package/dist/inputs/Select/docs/component.md +27 -27
  80. package/dist/inputs/Textarea/Textarea.stories.svelte +40 -40
  81. package/dist/inputs/Textarea/Textarea.svelte +113 -113
  82. package/dist/inputs/Textarea/docs/component.md +16 -16
  83. package/dist/inputs/Toolbar/HelpModal.svelte +234 -234
  84. package/dist/inputs/Toolbar/ToolControl.svelte +23 -23
  85. package/dist/inputs/Toolbar/ToolControls.svelte +9 -9
  86. package/dist/inputs/Toolbar/Toolbar.stories.svelte +148 -148
  87. package/dist/inputs/Toolbar/Toolbar.svelte +70 -70
  88. package/dist/inputs/Toolbar/ToolbarButton.svelte +184 -184
  89. package/dist/inputs/Toolbar/ToolbarDivider.svelte +29 -29
  90. package/dist/inputs/Toolbar/ToolbarIcon.svelte +106 -106
  91. package/dist/inputs/Toolbar/ToolbarsContainer.svelte +69 -69
  92. package/dist/inputs/Toolbar/docs/component.md +101 -101
  93. package/dist/intro.mdx +66 -66
  94. package/dist/js/menuOptions.js +14 -14
  95. package/dist/js/utils.js +133 -133
  96. package/dist/js/withParams.js +43 -43
  97. package/dist/layout/Accordion/Accordion.stories.svelte +30 -30
  98. package/dist/layout/Accordion/Accordion.svelte +55 -55
  99. package/dist/layout/Accordion/AccordionItem.svelte +51 -51
  100. package/dist/layout/Accordion/accordion.js +64 -64
  101. package/dist/layout/Accordion/details.js +83 -83
  102. package/dist/layout/Accordion/docs/component.md +19 -19
  103. package/dist/layout/AnalyticsBanner/AnalyticsBanner.stories.svelte +16 -16
  104. package/dist/layout/AnalyticsBanner/AnalyticsBanner.svelte +314 -314
  105. package/dist/layout/AnalyticsBanner/docs/component.md +44 -44
  106. package/dist/layout/BackLink/BackLink.stories.svelte +16 -16
  107. package/dist/layout/BackLink/BackLink.svelte +30 -30
  108. package/dist/layout/BackLink/docs/component.md +12 -12
  109. package/dist/layout/Breadcrumb/Breadcrumb.stories.svelte +31 -31
  110. package/dist/layout/Breadcrumb/Breadcrumb.svelte +69 -69
  111. package/dist/layout/Breadcrumb/docs/component.md +15 -15
  112. package/dist/layout/Card/Card.stories.svelte +39 -39
  113. package/dist/layout/Card/Card.svelte +127 -127
  114. package/dist/layout/Card/docs/component.md +14 -14
  115. package/dist/layout/Card/docs/eg-images.md +27 -27
  116. package/dist/layout/Card/docs/eg-links.md +12 -12
  117. package/dist/layout/Card/docs/eg-spans.md +12 -12
  118. package/dist/layout/Contents/Contents.stories.svelte +27 -27
  119. package/dist/layout/Contents/Contents.svelte +51 -51
  120. package/dist/layout/Contents/docs/component.md +18 -18
  121. package/dist/layout/DescriptionList/DescriptionList.stories.svelte +22 -22
  122. package/dist/layout/DescriptionList/DescriptionList.svelte +59 -59
  123. package/dist/layout/DescriptionList/docs/component.md +18 -18
  124. package/dist/layout/Details/Details.stories.svelte +32 -32
  125. package/dist/layout/Details/Details.svelte +75 -75
  126. package/dist/layout/Details/docs/component.md +14 -14
  127. package/dist/layout/DocumentList/Document.svelte +103 -103
  128. package/dist/layout/DocumentList/DocumentList.stories.svelte +88 -88
  129. package/dist/layout/DocumentList/DocumentList.svelte +33 -33
  130. package/dist/layout/DocumentList/docs/component.md +28 -28
  131. package/dist/layout/DocumentList/docs/example.md +23 -23
  132. package/dist/layout/ErrorPage/ErrorPage.stories.svelte +18 -18
  133. package/dist/layout/ErrorPage/ErrorPage.svelte +48 -48
  134. package/dist/layout/ErrorPage/docs/component.md +13 -13
  135. package/dist/layout/Footer/Footer.stories.svelte +24 -24
  136. package/dist/layout/Footer/Footer.svelte +366 -366
  137. package/dist/layout/Footer/docs/component.md +10 -10
  138. package/dist/layout/Grid/Grid.stories.svelte +50 -50
  139. package/dist/layout/Grid/Grid.svelte +117 -117
  140. package/dist/layout/Grid/GridCell.svelte +65 -65
  141. package/dist/layout/Grid/docs/component.md +14 -14
  142. package/dist/layout/Header/Header.stories.svelte +26 -26
  143. package/dist/layout/Header/Header.svelte +875 -875
  144. package/dist/layout/Header/docs/component.md +11 -11
  145. package/dist/layout/Hero/Hero.stories.svelte +79 -79
  146. package/dist/layout/Hero/Hero.svelte +364 -364
  147. package/dist/layout/Hero/docs/component.md +14 -14
  148. package/dist/layout/Highlight/Highlight.stories.svelte +29 -29
  149. package/dist/layout/Highlight/Highlight.svelte +77 -77
  150. package/dist/layout/Highlight/docs/component.md +12 -12
  151. package/dist/layout/Image/Image.stories.svelte +23 -23
  152. package/dist/layout/Image/Image.svelte +29 -29
  153. package/dist/layout/Image/docs/component.md +15 -15
  154. package/dist/layout/List/Li.svelte +3 -3
  155. package/dist/layout/List/List.stories.svelte +40 -40
  156. package/dist/layout/List/List.svelte +46 -46
  157. package/dist/layout/List/docs/component.md +14 -14
  158. package/dist/layout/List/docs/example.md +12 -12
  159. package/dist/layout/NavSections/NavSection.svelte +90 -90
  160. package/dist/layout/NavSections/NavSections.stories.svelte +51 -51
  161. package/dist/layout/NavSections/NavSections.svelte +160 -160
  162. package/dist/layout/NavSections/docs/component.md +25 -25
  163. package/dist/layout/Notice/Notice.stories.svelte +61 -61
  164. package/dist/layout/Notice/Notice.svelte +56 -56
  165. package/dist/layout/Notice/docs/component.md +14 -14
  166. package/dist/layout/PhaseBanner/PhaseBanner.stories.svelte +24 -24
  167. package/dist/layout/PhaseBanner/PhaseBanner.svelte +66 -66
  168. package/dist/layout/PhaseBanner/docs/component.md +14 -14
  169. package/dist/layout/RelatedContent/RelatedContent.stories.svelte +36 -36
  170. package/dist/layout/RelatedContent/RelatedContent.svelte +54 -54
  171. package/dist/layout/RelatedContent/docs/component.md +16 -16
  172. package/dist/layout/Scroller/Scroller.stories.svelte +60 -60
  173. package/dist/layout/Scroller/Scroller.svelte +368 -368
  174. package/dist/layout/Scroller/ScrollerSection.svelte +70 -70
  175. package/dist/layout/Scroller/docs/component.md +39 -39
  176. package/dist/layout/Section/Section.stories.svelte +33 -33
  177. package/dist/layout/Section/Section.svelte +60 -60
  178. package/dist/layout/Section/docs/component.md +12 -12
  179. package/dist/layout/ShareButtons/ShareButtons.stories.svelte +20 -20
  180. package/dist/layout/ShareButtons/ShareButtons.svelte +131 -131
  181. package/dist/layout/ShareButtons/docs/component.md +14 -14
  182. package/dist/layout/SkipLink/SkipLink.stories.svelte +16 -16
  183. package/dist/layout/SkipLink/SkipLink.svelte +9 -9
  184. package/dist/layout/SkipLink/docs/component.md +11 -11
  185. package/dist/layout/Summary/Summary.stories.svelte +21 -21
  186. package/dist/layout/Summary/Summary.svelte +60 -60
  187. package/dist/layout/Summary/docs/component.md +17 -17
  188. package/dist/layout/Tabs/Tab.svelte +53 -53
  189. package/dist/layout/Tabs/Tabs.stories.svelte +29 -29
  190. package/dist/layout/Tabs/Tabs.svelte +89 -89
  191. package/dist/layout/Tabs/docs/component.md +16 -16
  192. package/dist/layout/Tabs/tabs.js +302 -302
  193. package/dist/layout/Timeline/Timeline.stories.svelte +44 -44
  194. package/dist/layout/Timeline/Timeline.svelte +17 -17
  195. package/dist/layout/Timeline/TimelineItem.svelte +14 -14
  196. package/dist/layout/Timeline/docs/component.md +27 -27
  197. package/dist/layout/Timeline/docs/example.md +20 -20
  198. package/dist/templates/EmbedArticle/EmbedArticle.stories.svelte +72 -72
  199. package/dist/templates/EmbedArticle/docs/component.md +56 -56
  200. package/dist/templates/FeatureArticle/FeatureArticle.stories.svelte +150 -150
  201. package/dist/templates/FeatureArticle/docs/component.md +125 -125
  202. package/dist/templates/StandardArticle/StandardArticle.stories.svelte +86 -86
  203. package/dist/templates/StandardArticle/docs/component.md +76 -76
  204. package/dist/templates/intro.mdx +18 -18
  205. package/dist/wrappers/Container/Container.stories.svelte +38 -38
  206. package/dist/wrappers/Container/Container.svelte +77 -77
  207. package/dist/wrappers/Container/docs/component.md +12 -12
  208. package/dist/wrappers/Embed/Embed.stories.svelte +24 -24
  209. package/dist/wrappers/Embed/Embed.svelte +44 -44
  210. package/dist/wrappers/Embed/docs/component.md +15 -15
  211. package/dist/wrappers/LazyLoad/LazyLoad.stories.svelte +37 -37
  212. package/dist/wrappers/LazyLoad/LazyLoad.svelte +50 -50
  213. package/dist/wrappers/LazyLoad/docs/component.md +29 -29
  214. package/dist/wrappers/Main/Main.stories.svelte +24 -24
  215. package/dist/wrappers/Main/Main.svelte +11 -11
  216. package/dist/wrappers/Main/docs/component.md +16 -16
  217. package/dist/wrappers/Observe/Observe.stories.svelte +29 -29
  218. package/dist/wrappers/Observe/Observe.svelte +40 -40
  219. package/dist/wrappers/Observe/docs/component.md +22 -22
  220. package/dist/wrappers/Theme/Theme.stories.svelte +70 -70
  221. package/dist/wrappers/Theme/Theme.svelte +76 -76
  222. package/dist/wrappers/Theme/docs/component.md +10 -10
  223. package/dist/wrappers/Theme/themes.js +70 -70
  224. 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
+ ```