From 16c377945c899b7f5bcc756999b52ca7bfbc5d39 Mon Sep 17 00:00:00 2001 From: Alexander Mart Date: Sat, 9 Oct 2021 00:56:48 +0700 Subject: [PATCH 1/8] docs: how to install from pnpm (#614) Co-authored-by: Eric Liu --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 04edd37b..90854b14 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,12 @@ yarn add -D carbon-components-svelte npm i -D carbon-components-svelte ``` +**pnpm** + +```sh +pnpm i -D carbon-components-svelte +``` + ## Usage ### Styling From d3eb146fb507feec959949d7cbe27f98473ecf90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Malinowski?= <47485431+malinowskip@users.noreply.github.com> Date: Mon, 11 Oct 2021 19:11:59 +0200 Subject: [PATCH 2/8] fix(DataTable): handle null/undefined values when sorting (#846) --- src/DataTable/DataTable.svelte | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/DataTable/DataTable.svelte b/src/DataTable/DataTable.svelte index 6ba737ce..3c3bf4ec 100644 --- a/src/DataTable/DataTable.svelte +++ b/src/DataTable/DataTable.svelte @@ -194,6 +194,10 @@ if (typeof itemA === "number" && typeof itemB === "number") return itemA - itemB; + if ([itemA, itemB].every((item) => !item && item !== 0)) return 0; + if (!itemA && itemA !== 0) return ascending ? 1 : -1; + if (!itemB && itemB !== 0) return ascending ? -1 : 1; + return itemA .toString() .localeCompare(itemB.toString(), "en", { numeric: true }); From 0b96614b52120e78bf4bdeaea7225acf998baccb Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Mon, 11 Oct 2021 10:16:50 -0700 Subject: [PATCH 3/8] v0.44.6 --- CHANGELOG.md | 6 ++++++ COMPONENT_INDEX.md | 2 +- package.json | 2 +- preprocess/api.json | 2 +- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ef69729..0b3158cd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 +## [0.44.6](https://github.com/carbon-design-system/carbon-components-svelte/releases/tag/v0.44.6) - 2021-10-11 + +**Fixes** + +- fix `DataTable` sorting to tolerate `null`, `undefined` values + ## [0.44.5](https://github.com/carbon-design-system/carbon-components-svelte/releases/tag/v0.44.5) - 2021-10-04 **Fixes** diff --git a/COMPONENT_INDEX.md b/COMPONENT_INDEX.md index d646340f..068af834 100644 --- a/COMPONENT_INDEX.md +++ b/COMPONENT_INDEX.md @@ -1,6 +1,6 @@ # Component Index -> 172 components exported from carbon-components-svelte@0.44.5. +> 172 components exported from carbon-components-svelte@0.44.6. ## Components diff --git a/package.json b/package.json index f65231b1..cbaeaefc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "carbon-components-svelte", - "version": "0.44.5", + "version": "0.44.6", "license": "Apache-2.0", "description": "Svelte implementation of the Carbon Design System", "svelte": "./src/index.js", diff --git a/preprocess/api.json b/preprocess/api.json index b997622a..8a9ca54f 100644 --- a/preprocess/api.json +++ b/preprocess/api.json @@ -1,5 +1,5 @@ { - "version": "0.44.5", + "version": "0.44.6", "components": { "Accordion": { "path": "carbon-components-svelte/src/Accordion/Accordion.svelte" From e0d5e6133e90e418709486fb176b65c458dbded8 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Mon, 11 Oct 2021 18:33:24 -0700 Subject: [PATCH 4/8] docs: fix link to source [ci skip] TODO: refactor to use exact file path from component API --- docs/src/pages/components/PasswordInput.svx | 4 ++++ docs/src/pages/components/RadioTile.svx | 1 + docs/src/pages/components/SelectableTile.svx | 1 + 3 files changed, 6 insertions(+) diff --git a/docs/src/pages/components/PasswordInput.svx b/docs/src/pages/components/PasswordInput.svx index c22dd16e..7d90631a 100644 --- a/docs/src/pages/components/PasswordInput.svx +++ b/docs/src/pages/components/PasswordInput.svx @@ -1,3 +1,7 @@ +--- +source: TextInput/PasswordInput.svelte +--- + + +
+ +
+ + + + diff --git a/docs/src/pages/framed/TreeView/TreeViewCollapseNodes.svelte b/docs/src/pages/framed/TreeView/TreeViewCollapseNodes.svelte new file mode 100644 index 00000000..69bda008 --- /dev/null +++ b/docs/src/pages/framed/TreeView/TreeViewCollapseNodes.svelte @@ -0,0 +1,71 @@ + + +
+ +
+ + + + diff --git a/docs/src/pages/framed/TreeView/TreeViewExpandAll.svelte b/docs/src/pages/framed/TreeView/TreeViewExpandAll.svelte new file mode 100644 index 00000000..ea10f4ac --- /dev/null +++ b/docs/src/pages/framed/TreeView/TreeViewExpandAll.svelte @@ -0,0 +1,61 @@ + + +
+ +
+ + + + diff --git a/docs/src/pages/framed/TreeView/TreeViewExpandNodes.svelte b/docs/src/pages/framed/TreeView/TreeViewExpandNodes.svelte new file mode 100644 index 00000000..0c1efeb3 --- /dev/null +++ b/docs/src/pages/framed/TreeView/TreeViewExpandNodes.svelte @@ -0,0 +1,67 @@ + + +
+ +
+ + + + diff --git a/src/TreeView/TreeView.svelte b/src/TreeView/TreeView.svelte index 699a4898..7e36da2e 100644 --- a/src/TreeView/TreeView.svelte +++ b/src/TreeView/TreeView.svelte @@ -44,6 +44,44 @@ /** Set to `true` to visually hide the label text */ export let hideLabel = false; + /** + * Programmatically expand all nodes + * @type {() => void} + */ + export function expandAll() { + expandedIds = [...nodeIds]; + } + + /** + * Programmatically collapse all nodes + * @type {() => void} + */ + export function collapseAll() { + expandedIds = []; + } + + /** + * Programmatically expand a subset of nodes. + * Expands all nodes if no argument is provided + * @type {(filterId?: (node: TreeNode) => boolean) => void} + */ + export function expandNodes(filterNode = (node) => false) { + expandedIds = nodes + .filter((node) => !filterNode(node)) + .map((node) => node.id); + } + + /** + * Programmatically collapse a subset of nodes. + * Collapses all nodes if no argument is provided + * @type {(filterId?: (node: TreeNode) => boolean) => void} + */ + export function collapseNodes(filterNode = (node) => true) { + expandedIds = nodes + .filter((node) => !filterNode(node)) + .map((node) => node.id); + } + import { createEventDispatcher, setContext, onMount } from "svelte"; import { writable } from "svelte/store"; import TreeViewNodeList from "./TreeViewNodeList.svelte"; @@ -105,6 +143,25 @@ } }); + /** + * @param {Array} children + */ + function traverse(children) { + let nodes = []; + + children.forEach((node) => { + nodes.push(node); + + if (Array.isArray(node.children)) { + nodes = [...nodes, ...traverse(node.children)]; + } + }); + + return nodes; + } + + $: nodes = traverse(children); + $: nodeIds = nodes.map((node) => node.id); $: activeNodeId.set(activeId); $: selectedNodeIds.set(selectedIds); $: expandedNodeIds.set(expandedIds); diff --git a/tests/TreeView.test.svelte b/tests/TreeView.test.svelte index 67308296..69e8e60a 100644 --- a/tests/TreeView.test.svelte +++ b/tests/TreeView.test.svelte @@ -3,6 +3,7 @@ import type { TreeNodeId } from "../types/TreeView/TreeView"; import Analytics16 from "carbon-icons-svelte/lib/Analytics16"; + let treeview: TreeView; let activeId: TreeNodeId = ""; let selectedIds = []; let expandedIds = [1]; @@ -46,9 +47,21 @@ children: [{ id: 15, text: "IBM API Connect", disabled: true }], }, ]; + + $: if (treeview) { + treeview.expandAll(); + treeview.expandNodes((node) => { + return node.id > 0; + }); + treeview.collapseAll(); + treeview.collapseNodes((node) => { + return node.disabled; + }); + } {} +> { + /** + * Programmatically expand all nodes + * @default () => { expandedIds = [...nodeIds]; } + */ + expandAll: () => void; + + /** + * Programmatically collapse all nodes + * @default () => { expandedIds = []; } + */ + collapseAll: () => void; + + /** + * Programmatically expand a subset of nodes. + * Expands all nodes if no argument is provided + * @default () => { expandedIds = nodes .filter((node) => !filterNode(node)) .map((node) => node.id); } + */ + expandNodes: (filterId?: (node: TreeNode) => boolean) => void; + + /** + * Programmatically collapse a subset of nodes. + * Collapses all nodes if no argument is provided + * @default () => { expandedIds = nodes .filter((node) => !filterNode(node)) .map((node) => node.id); } + */ + collapseNodes: (filterId?: (node: TreeNode) => boolean) => void; +} From a9fe4e328b5474b68eb3c2bbf9be2478f7a0c1c9 Mon Sep 17 00:00:00 2001 From: metonym Date: Wed, 13 Oct 2021 09:01:18 -0700 Subject: [PATCH 8/8] v0.45.0 --- CHANGELOG.md | 6 ++++++ COMPONENT_INDEX.md | 2 +- package.json | 2 +- preprocess/api.json | 2 +- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 20e1509a..b645583a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 +## [0.45.0](https://github.com/carbon-design-system/carbon-components-svelte/releases/tag/v0.45.0) - 2021-10-13 + +**Features** + +- add `TreeView` component accessors to programmatically expand/collapse nodes + ## [0.44.7](https://github.com/carbon-design-system/carbon-components-svelte/releases/tag/v0.44.7) - 2021-10-13 **Fixes** diff --git a/COMPONENT_INDEX.md b/COMPONENT_INDEX.md index d85c882d..a61e7263 100644 --- a/COMPONENT_INDEX.md +++ b/COMPONENT_INDEX.md @@ -1,6 +1,6 @@ # Component Index -> 172 components exported from carbon-components-svelte@0.44.7. +> 172 components exported from carbon-components-svelte@0.45.0. ## Components diff --git a/package.json b/package.json index 8dba6945..8411860e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "carbon-components-svelte", - "version": "0.44.7", + "version": "0.45.0", "license": "Apache-2.0", "description": "Svelte implementation of the Carbon Design System", "svelte": "./src/index.js", diff --git a/preprocess/api.json b/preprocess/api.json index 8119afaf..d92c09df 100644 --- a/preprocess/api.json +++ b/preprocess/api.json @@ -1,5 +1,5 @@ { - "version": "0.44.7", + "version": "0.45.0", "components": { "Accordion": { "path": "carbon-components-svelte/src/Accordion/Accordion.svelte"