diff --git a/src/BIMDataComponents/BIMDataList/BIMDataList.vue b/src/BIMDataComponents/BIMDataList/BIMDataList.vue new file mode 100644 index 00000000..80b651de --- /dev/null +++ b/src/BIMDataComponents/BIMDataList/BIMDataList.vue @@ -0,0 +1,118 @@ + + + + + diff --git a/src/BIMDataComponents/index.js b/src/BIMDataComponents/index.js index 0f2bec7a..b6aa774c 100644 --- a/src/BIMDataComponents/index.js +++ b/src/BIMDataComponents/index.js @@ -22,6 +22,7 @@ export * from "./BIMDataIcon/BIMDataIconStandalone/index.js"; export { default as BIMDataIllustration } from "./BIMDataIllustration/BIMDataIllustration.vue"; export { default as BIMDataInput } from "./BIMDataInput/BIMDataInput.vue"; export { default as BIMDataInputOutlined } from "./BIMDataInputOutlined/BIMDataInputOutlined.vue"; +export { default as BIMDataList } from "./BIMDataList/BIMDataList.vue"; export { default as BIMDataLoading } from "./BIMDataLoading/BIMDataLoading.vue"; export { default as BIMDataMenu } from "./BIMDataMenu/BIMDataMenu.vue"; export { default as BIMDataMenuInline } from "./BIMDataMenuInline/BIMDataMenuInline.vue"; diff --git a/src/web/router.js b/src/web/router.js index a8115599..55b71b35 100644 --- a/src/web/router.js +++ b/src/web/router.js @@ -155,6 +155,11 @@ const routes = [ name: "input", component: () => import("./views/Components/Input/Input.vue"), }, + { + path: "list", + name: "list", + component: () => import("./views/Components/List/List.vue"), + }, { path: "loaders", name: "loaders", diff --git a/src/web/store.js b/src/web/store.js index fd4b2109..1bc12522 100644 --- a/src/web/store.js +++ b/src/web/store.js @@ -21,6 +21,7 @@ import fileicon from "./assets/img/icon-fileicon.svg"; import icons from "./assets/img/icon-icons.svg"; import illustration from "./assets/img/icon-illustration.svg"; import input from "./assets/img/icon-input.svg"; +import list from "./assets/img/icon-list.svg"; import loader from "./assets/img/icon-loader.svg"; import menu from "./assets/img/icon-menu.svg"; import radio from "./assets/img/icon-radio.svg"; @@ -204,6 +205,13 @@ export default { text: "Inputs are used for enabled a user to interact and input data.", btn: "View input", }, + { + title: "List", + img: list, + path: "list", + text: "A performant list to display thousands of elements without latency.", + btn: "View list", + }, { title: "Loaders", img: loader, diff --git a/src/web/views/Components/List/List.vue b/src/web/views/Components/List/List.vue new file mode 100644 index 00000000..d7badb92 --- /dev/null +++ b/src/web/views/Components/List/List.vue @@ -0,0 +1,104 @@ + + + diff --git a/src/web/views/Components/List/props-data.js b/src/web/views/Components/List/props-data.js new file mode 100644 index 00000000..00737e40 --- /dev/null +++ b/src/web/views/Components/List/props-data.js @@ -0,0 +1,28 @@ +/* eslint-disable */ +export default [ + [ "Props", "Type", "Default value", "Description" ], + [ + "items", + "any", + "REQUIRED", + "Items to display in the list.", + ], + [ + "itemHeight", + "Number", + "30", + "The height of each item in pixels.", + ], + [ + "offset", + "Number", + "20", + "The number of items to render outside the visible area to improve scrolling smoothness.", + ], + [ + "itemKey", + "String", + "null", + "The key to use for looping on each item.", + ] +];