From ea4cc6bae56d8f13d0f55e458425daa461f258c0 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Pasquier <contact@jbpasquier.eu> Date: Thu, 4 Jan 2024 16:04:28 +0100 Subject: [PATCH] fix path + materialize + first draft producers --- index.html | 55 ++++++++------ package-lock.json | 12 ++++ package.json | 2 + public/api/producer/rec2aFRu0H3Czf2IG.json | 2 +- public/api/producer/rec64TU56RNMKfG8d.json | 2 +- public/api/producer/recALjpHmGmqsXpaW.json | 2 +- public/api/producer/recHYLgKXBhtgemfb.json | 2 +- public/api/producer/recIwhSu2iJRTJdIn.json | 2 +- public/api/producer/recSrhBnWnzkFRS3y.json | 2 +- public/api/producer/recVIrkdXWbRzs8IQ.json | 2 +- public/api/producer/recW1epOZsVUhJvRI.json | 2 +- public/api/producer/recXJrzz9mquDaCv7.json | 2 +- public/api/producer/recaaryaB0oaTKamH.json | 2 +- public/api/producer/recjBYlXskXtilPBC.json | 2 +- public/api/producer/recrIQDQMQpTODtjB.json | 2 +- public/api/producer/rectRZksVDjV0Pdlk.json | 2 +- public/api/producer/reczDHQn85Y3fvHKK.json | 2 +- src/solid-ofn-rpp.js | 83 ++++++++++++++++++---- src/styles/index.scss | 50 +++++++++++++ src/utils.js | 27 +++++-- vite.config.js | 7 ++ 21 files changed, 210 insertions(+), 54 deletions(-) diff --git a/index.html b/index.html index 1b65b9e..c31b98c 100644 --- a/index.html +++ b/index.html @@ -18,28 +18,39 @@ <script type="module" src="./src/index.js"></script> </head> <body> - <ul> - <li> - <solid-link next="regenerative-produce-portal-producers-list"> - <icon-mdi-account-box></icon-mdi-account-box> Producers List - </solid-link> - </li> - <li> - <solid-link next="regenerative-produce-portal-products-list"> - Products List - </solid-link> - </li> - <li> - <solid-link next="regenerative-produce-portal-producer-details" data-src="http://localhost:5173/api/producer/rec2aFRu0H3Czf2IG.json"> - Producer Details - </solid-link> - </li> - <li> - <solid-link next="regenerative-produce-portal-product-details" data-src="http://localhost:5173/api/product/rec07CR18S2eerIyc.json"> - Product Details - </solid-link> - </li> - </ul> + <nav> + <div class="nav-wrapper"> + <a href="#" class="brand-logo">Examples</a> + <ul class="right"> + <li> + <solid-link next="regenerative-produce-portal-producers-list"> + <a><icon-mdi-home-silo></icon-mdi-home-silo> Producers List</a> + </solid-link> + </li> + <li> + <solid-link next="regenerative-produce-portal-products-list"> + <a><icon-mdi-food-apple></icon-mdi-food-apple> Products List</a> + </solid-link> + </li> + <li> + <solid-link + next="regenerative-produce-portal-producer-details" + data-src="http://localhost:5173/api/producer/recXJrzz9mquDaCv7.json" + > + <a><icon-mdi-home-silo></icon-mdi-home-silo> Producer Details</a> + </solid-link> + </li> + <li> + <solid-link + next="regenerative-produce-portal-product-details" + data-src="http://localhost:5173/api/product/rec07CR18S2eerIyc.json" + > + <a><icon-mdi-food-apple></icon-mdi-food-apple> Product Details</a> + </solid-link> + </li> + </ul> + </div> + </nav> <solid-ofn-rpp producers-src="http://localhost:5173/api/producers.json" products-src="http://localhost:5173/api/products.json" diff --git a/package-lock.json b/package-lock.json index 7f41ae3..5ca671d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,9 +9,11 @@ "version": "0.1.0", "license": "MIT", "dependencies": { + "@fontsource/open-sans": "^5.0.20", "@iconify-json/mdi": "^1.1.64", "autoprefixer": "^10.4.16", "cssnano": "^6.0.2", + "materialize-css": "^1.0.0-rc.2", "postcss": "^8.4.32", "postcss-preset-env": "^9.3.0", "postcss-scss": "^4.0.9", @@ -1230,6 +1232,11 @@ "node": ">=12" } }, + "node_modules/@fontsource/open-sans": { + "version": "5.0.20", + "resolved": "https://registry.npmjs.org/@fontsource/open-sans/-/open-sans-5.0.20.tgz", + "integrity": "sha512-Tgdqmp9QX8YZd5TO+rEv5n5cZkTaDf0I0eHUHMe3xKxUgGR/9uKS7VYL+kiVZfMNZ/8EyMLwzcNFWVsNG6nZAg==" + }, "node_modules/@iconify-json/mdi": { "version": "1.1.64", "resolved": "https://registry.npmjs.org/@iconify-json/mdi/-/mdi-1.1.64.tgz", @@ -2175,6 +2182,11 @@ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" }, + "node_modules/materialize-css": { + "version": "1.0.0-rc.2", + "resolved": "https://registry.npmjs.org/materialize-css/-/materialize-css-1.0.0-rc.2.tgz", + "integrity": "sha512-FuQmSyq4Qv0ov7A2qXw0E6/jbQzSWx2P1pg2/XQDYTkkSc/GyiFAxu3fw9zgShwuTvyumEiw5jkxQWT9siqMBQ==" + }, "node_modules/mdn-data": { "version": "2.0.30", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", diff --git a/package.json b/package.json index 3aca86b..e9546c5 100644 --- a/package.json +++ b/package.json @@ -54,9 +54,11 @@ "last 2 Chrome versions" ], "dependencies": { + "@fontsource/open-sans": "^5.0.20", "@iconify-json/mdi": "^1.1.64", "autoprefixer": "^10.4.16", "cssnano": "^6.0.2", + "materialize-css": "^1.0.0-rc.2", "postcss": "^8.4.32", "postcss-preset-env": "^9.3.0", "postcss-scss": "^4.0.9", diff --git a/public/api/producer/rec2aFRu0H3Czf2IG.json b/public/api/producer/rec2aFRu0H3Czf2IG.json index 682bf28..7a62bf3 100644 --- a/public/api/producer/rec2aFRu0H3Czf2IG.json +++ b/public/api/producer/rec2aFRu0H3Czf2IG.json @@ -1,7 +1,7 @@ { "@id": "http://localhost:5173/api/producer/rec2aFRu0H3Czf2IG.json", "@type": "dfc-b:Enterprise", - "dfc-b:hasAddress": "http://localhost:5173/api/addresses/rec2aFRu0H3Czf2IG.json", + "dfc-b:hasAddress": {"@id":"http://localhost:5173/api/addresses/rec2aFRu0H3Czf2IG.json"}, "dfc-b:websitePage": "grazedandgrown.com.au", "dfc-b:hasSocialMedia": { "@id": "#", diff --git a/public/api/producer/rec64TU56RNMKfG8d.json b/public/api/producer/rec64TU56RNMKfG8d.json index 10bc811..a10ddf1 100644 --- a/public/api/producer/rec64TU56RNMKfG8d.json +++ b/public/api/producer/rec64TU56RNMKfG8d.json @@ -1,7 +1,7 @@ { "@id": "http://localhost:5173/api/producer/rec64TU56RNMKfG8d.json", "@type": "dfc-b:Enterprise", - "dfc-b:hasAddress": "http://localhost:5173/api/addresses/rec64TU56RNMKfG8d.json", + "dfc-b:hasAddress": {"@id":"http://localhost:5173/api/addresses/rec64TU56RNMKfG8d.json"}, "dfc-b:email": "hello@commongroundproject.com.au", "dfc-b:websitePage": "www.commongroundproject.com.au", "dfc-b:hasSocialMedia": { diff --git a/public/api/producer/recALjpHmGmqsXpaW.json b/public/api/producer/recALjpHmGmqsXpaW.json index 03cb693..42f87db 100644 --- a/public/api/producer/recALjpHmGmqsXpaW.json +++ b/public/api/producer/recALjpHmGmqsXpaW.json @@ -1,7 +1,7 @@ { "@id": "http://localhost:5173/api/producer/recALjpHmGmqsXpaW.json", "@type": "dfc-b:Enterprise", - "dfc-b:hasAddress": "http://localhost:5173/api/addresses/recALjpHmGmqsXpaW.json", + "dfc-b:hasAddress": {"@id":"http://localhost:5173/api/addresses/recALjpHmGmqsXpaW.json"}, "dfc-b:websitePage": "", "dfc-b:hasSocialMedia": { "@id": "#", diff --git a/public/api/producer/recHYLgKXBhtgemfb.json b/public/api/producer/recHYLgKXBhtgemfb.json index b8ecf5c..4abf820 100644 --- a/public/api/producer/recHYLgKXBhtgemfb.json +++ b/public/api/producer/recHYLgKXBhtgemfb.json @@ -1,7 +1,7 @@ { "@id": "http://localhost:5173/api/producer/recHYLgKXBhtgemfb.json", "@type": "dfc-b:Enterprise", - "dfc-b:hasAddress": "http://localhost:5173/api/addresses/recHYLgKXBhtgemfb.json", + "dfc-b:hasAddress": {"@id":"http://localhost:5173/api/addresses/recHYLgKXBhtgemfb.json"}, "dfc-b:websitePage": "www.handfortheland.com", "dfc-b:hasSocialMedia": { "@id": "#", diff --git a/public/api/producer/recIwhSu2iJRTJdIn.json b/public/api/producer/recIwhSu2iJRTJdIn.json index 6361fec..cde66e2 100644 --- a/public/api/producer/recIwhSu2iJRTJdIn.json +++ b/public/api/producer/recIwhSu2iJRTJdIn.json @@ -1,7 +1,7 @@ { "@id": "http://localhost:5173/api/producer/recIwhSu2iJRTJdIn.json", "@type": "dfc-b:Enterprise", - "dfc-b:hasAddress": "http://localhost:5173/api/addresses/recIwhSu2iJRTJdIn.json", + "dfc-b:hasAddress": {"@id":"http://localhost:5173/api/addresses/recIwhSu2iJRTJdIn.json"}, "dfc-b:websitePage": "thestillroom.com.au", "dfc-b:hasSocialMedia": { "@id": "#", diff --git a/public/api/producer/recSrhBnWnzkFRS3y.json b/public/api/producer/recSrhBnWnzkFRS3y.json index 597150c..5281be4 100644 --- a/public/api/producer/recSrhBnWnzkFRS3y.json +++ b/public/api/producer/recSrhBnWnzkFRS3y.json @@ -1,7 +1,7 @@ { "@id": "http://localhost:5173/api/producer/recSrhBnWnzkFRS3y.json", "@type": "dfc-b:Enterprise", - "dfc-b:hasAddress": "http://localhost:5173/api/addresses/recSrhBnWnzkFRS3y.json", + "dfc-b:hasAddress": {"@id":"http://localhost:5173/api/addresses/recSrhBnWnzkFRS3y.json"}, "dfc-b:hasSocialMedia": { "@id": "#", "@type": "ldp:Container", diff --git a/public/api/producer/recVIrkdXWbRzs8IQ.json b/public/api/producer/recVIrkdXWbRzs8IQ.json index af54bb7..6eed057 100644 --- a/public/api/producer/recVIrkdXWbRzs8IQ.json +++ b/public/api/producer/recVIrkdXWbRzs8IQ.json @@ -1,7 +1,7 @@ { "@id": "http://localhost:5173/api/producer/recVIrkdXWbRzs8IQ.json", "@type": "dfc-b:Enterprise", - "dfc-b:hasAddress": "http://localhost:5173/api/addresses/recVIrkdXWbRzs8IQ.json", + "dfc-b:hasAddress": {"@id":"http://localhost:5173/api/addresses/recVIrkdXWbRzs8IQ.json"}, "dfc-b:hasPhoneNumber": "0427229322", "dfc-b:email": "geoff@geoffthechef.com.au", "dfc-b:websitePage": "", diff --git a/public/api/producer/recW1epOZsVUhJvRI.json b/public/api/producer/recW1epOZsVUhJvRI.json index 84bf9f2..5c5151c 100644 --- a/public/api/producer/recW1epOZsVUhJvRI.json +++ b/public/api/producer/recW1epOZsVUhJvRI.json @@ -1,7 +1,7 @@ { "@id": "http://localhost:5173/api/producer/recW1epOZsVUhJvRI.json", "@type": "dfc-b:Enterprise", - "dfc-b:hasAddress": "http://localhost:5173/api/addresses/recW1epOZsVUhJvRI.json", + "dfc-b:hasAddress": {"@id":"http://localhost:5173/api/addresses/recW1epOZsVUhJvRI.json"}, "dfc-b:email": "murrnong@gmail.com", "dfc-b:websitePage": "www.murrnong.com", "dfc-b:hasSocialMedia": { diff --git a/public/api/producer/recXJrzz9mquDaCv7.json b/public/api/producer/recXJrzz9mquDaCv7.json index 04da8a3..2794f01 100644 --- a/public/api/producer/recXJrzz9mquDaCv7.json +++ b/public/api/producer/recXJrzz9mquDaCv7.json @@ -1,7 +1,7 @@ { "@id": "http://localhost:5173/api/producer/recXJrzz9mquDaCv7.json", "@type": "dfc-b:Enterprise", - "dfc-b:hasAddress": "http://localhost:5173/api/addresses/recXJrzz9mquDaCv7.json", + "dfc-b:hasAddress": {"@id":"http://localhost:5173/api/addresses/recXJrzz9mquDaCv7.json"}, "dfc-b:email": "hello@farmingforgood.com.au", "dfc-b:websitePage": "farmingforgood.com.au", "dfc-b:hasSocialMedia": { diff --git a/public/api/producer/recaaryaB0oaTKamH.json b/public/api/producer/recaaryaB0oaTKamH.json index 17a39a7..06b63a6 100644 --- a/public/api/producer/recaaryaB0oaTKamH.json +++ b/public/api/producer/recaaryaB0oaTKamH.json @@ -1,7 +1,7 @@ { "@id": "http://localhost:5173/api/producer/recaaryaB0oaTKamH.json", "@type": "dfc-b:Enterprise", - "dfc-b:hasAddress": "http://localhost:5173/api/addresses/recaaryaB0oaTKamH.json", + "dfc-b:hasAddress": {"@id":"http://localhost:5173/api/addresses/recaaryaB0oaTKamH.json"}, "dfc-b:hasSocialMedia": { "@id": "#", "@type": "ldp:Container", diff --git a/public/api/producer/recjBYlXskXtilPBC.json b/public/api/producer/recjBYlXskXtilPBC.json index 6291797..99daabb 100644 --- a/public/api/producer/recjBYlXskXtilPBC.json +++ b/public/api/producer/recjBYlXskXtilPBC.json @@ -1,7 +1,7 @@ { "@id": "http://localhost:5173/api/producer/recjBYlXskXtilPBC.json", "@type": "dfc-b:Enterprise", - "dfc-b:hasAddress": "http://localhost:5173/api/addresses/recjBYlXskXtilPBC.json", + "dfc-b:hasAddress": {"@id":"http://localhost:5173/api/addresses/recjBYlXskXtilPBC.json"}, "dfc-b:email": "kirsten.larsen76+farm@gmail.com", "dfc-b:websitePage": "", "dfc-b:hasSocialMedia": { diff --git a/public/api/producer/recrIQDQMQpTODtjB.json b/public/api/producer/recrIQDQMQpTODtjB.json index 6183258..2973557 100644 --- a/public/api/producer/recrIQDQMQpTODtjB.json +++ b/public/api/producer/recrIQDQMQpTODtjB.json @@ -1,7 +1,7 @@ { "@id": "http://localhost:5173/api/producer/recrIQDQMQpTODtjB.json", "@type": "dfc-b:Enterprise", - "dfc-b:hasAddress": "http://localhost:5173/api/addresses/recrIQDQMQpTODtjB.json", + "dfc-b:hasAddress": {"@id":"http://localhost:5173/api/addresses/recrIQDQMQpTODtjB.json"}, "dfc-b:websitePage": "reedycreekprovidore.au", "dfc-b:hasSocialMedia": { "@id": "#", diff --git a/public/api/producer/rectRZksVDjV0Pdlk.json b/public/api/producer/rectRZksVDjV0Pdlk.json index dee7915..868b094 100644 --- a/public/api/producer/rectRZksVDjV0Pdlk.json +++ b/public/api/producer/rectRZksVDjV0Pdlk.json @@ -1,7 +1,7 @@ { "@id": "http://localhost:5173/api/producer/rectRZksVDjV0Pdlk.json", "@type": "dfc-b:Enterprise", - "dfc-b:hasAddress": "http://localhost:5173/api/addresses/rectRZksVDjV0Pdlk.json", + "dfc-b:hasAddress": {"@id":"http://localhost:5173/api/addresses/rectRZksVDjV0Pdlk.json"}, "dfc-b:websitePage": "www.cockatoocreekfarm.com.au", "dfc-b:hasSocialMedia": { "@id": "#", diff --git a/public/api/producer/reczDHQn85Y3fvHKK.json b/public/api/producer/reczDHQn85Y3fvHKK.json index ec59fda..d8264dc 100644 --- a/public/api/producer/reczDHQn85Y3fvHKK.json +++ b/public/api/producer/reczDHQn85Y3fvHKK.json @@ -1,7 +1,7 @@ { "@id": "http://localhost:5173/api/producer/reczDHQn85Y3fvHKK.json", "@type": "dfc-b:Enterprise", - "dfc-b:hasAddress": "http://localhost:5173/api/addresses/reczDHQn85Y3fvHKK.json", + "dfc-b:hasAddress": {"@id":"http://localhost:5173/api/addresses/reczDHQn85Y3fvHKK.json"}, "dfc-b:websitePage": "www.bellobeef.com.au", "dfc-b:hasSocialMedia": { "@id": "#", diff --git a/src/solid-ofn-rpp.js b/src/solid-ofn-rpp.js index a7388b4..ab77bf6 100644 --- a/src/solid-ofn-rpp.js +++ b/src/solid-ofn-rpp.js @@ -1,7 +1,28 @@ import style from './styles/index.scss?inline'; -import '~icons/mdi/account-box'; +// import 'materialize-css/dist/js/materialize.min.js'; // Not required +import '~icons/mdi/home-silo'; +import '~icons/mdi/food-apple'; import('./utils.js').then(utils => { import(/* @vite-ignore */utils.coreVersion()).then(core => { + + // Custom widget for producer description, original contains some unsafe html + customElements.define("safe-html-value", + class extends core.SolidTemplateElement { + constructor() { + super(); + } + static get propsDefinition() { + return { + value: "value" + }; + } + template({ + value + }) { + return utils.truncate(utils.sanitize(value), 125); + } + }); + customElements.define( "solid-ofn-rpp", class extends core.SolidTemplateElement { @@ -21,20 +42,21 @@ import('./utils.js').then(utils => { styles() { let render = ` <style>${style}</style> + <script id="client-context" type="application/ld+json" data-default-context> + ${JSON.stringify(utils.CLIENT_CONTEXT)} + </script> `; return render; } routers() { let render = ` - <nav id="${this.uniq}-nav"> - <solid-router default-route="${this.route}-producers-list"> - <solid-route name="${this.route}-producers-list"></solid-route> - <solid-route name="${this.route}-products-list"></solid-route> - <solid-route name="${this.route}-producer-details" use-id></solid-route> - <solid-route name="${this.route}-product-details" use-id></solid-route> - </solid-router> - </nav> + <solid-router default-route="${this.route}-producers-list"> + <solid-route name="${this.route}-producers-list"></solid-route> + <solid-route name="${this.route}-products-list"></solid-route> + <solid-route name="${this.route}-producer-details" use-id></solid-route> + <solid-route name="${this.route}-product-details" use-id></solid-route> + </solid-router> `; return render; } @@ -46,10 +68,45 @@ import('./utils.js').then(utils => { viewProducersList(props={}) { let render = ` - <div id="${this.route}-producers-list" data-view="${this.route}-producers-list"> - <solid-display - data-src="${this.producersSrc}" - ></solid-display> + <div id="${this.route}-producers-list" data-view="${this.route}-producers-list" class="row"> + <div class="col s4"></div> + <div class="col s8"> + <solid-display + data-src="${this.producersSrc}" + fields="set-card-row(set-card-col(set-card-panel(set-card-wrapper(set-left-panel(ofn:logo_url), set-right-panel(set-title(dfc-b:name, dfc-b:hasAddress.dfc-b:hasCity), set-description(ofn:long_description), set-tags(ofn:First_Nations_country, ofn:Produce_category))))))" + + widget-set-card-row="div" + class-set-card-row="row" + widget-set-card-col="div" + class-set-card-col="col s12" + widget-set-card-panel="div" + class-set-card-panel="card-panel z-depth-1" + widget-set-card-wrapper="div" + class-set-card-wrapper="row valign-wrapper" + + widget-set-left-panel="div" + class-set-left-panel="col s2" + class-ofn:logo_url="responsive-img" + widget-ofn:logo_url="solid-display-img" + default-ofn:logo_url="https://placehold.co/120" + + widget-set-right-panel="div" + class-set-right-panel="col s10" + + widget-set-title="div" + widget-dfc-b:name="solid-display-value" + class-dfc-b:name="dfc_b_name bold" + widget-dfc-b:hasAddress.dfc-b:hasCity="solid-display-value" + + widget-set-description="div" + widget-ofn:long_description="safe-html-value" + + widget-set-tags="div" + widget-ofn:First_Nations_country="solid-display-value" + widget-ofn:Produce_category="solid-display-value" + + ></solid-display> + </div> </div> `; return render; diff --git a/src/styles/index.scss b/src/styles/index.scss index 9f44090..f7a8327 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -1 +1,51 @@ @charset "UTF-8"; + +// Pre-requisites +@import "@fontsource/open-sans"; +@import "materialize-css/sass/components/color-variables"; +@import "materialize-css/sass/components/color-classes"; +@import "materialize-css/sass/components/variables"; +@import "materialize-css/sass/components/normalize"; +@import "materialize-css/sass/components/global"; + +// Optionals +// @import "materialize-css/sass/components/badges"; +// @import "materialize-css/sass/components/icons-material-design"; +@import "materialize-css/sass/components/grid"; +@import "materialize-css/sass/components/navbar"; +@import "materialize-css/sass/components/typography"; +// @import "materialize-css/sass/components/transitions"; +@import "materialize-css/sass/components/cards"; +// @import "materialize-css/sass/components/toast"; +// @import "materialize-css/sass/components/tabs"; +// @import "materialize-css/sass/components/tooltip"; +@import "materialize-css/sass/components/buttons"; +// @import "materialize-css/sass/components/dropdown"; +// @import "materialize-css/sass/components/waves"; +// @import "materialize-css/sass/components/modal"; +// @import "materialize-css/sass/components/collapsible"; +// @import "materialize-css/sass/components/chips"; +// @import "materialize-css/sass/components/materialbox"; +// @import "materialize-css/sass/components/forms/forms"; +// @import "materialize-css/sass/components/table_of_contents"; +// @import "materialize-css/sass/components/sidenav"; +// @import "materialize-css/sass/components/preloader"; +// @import "materialize-css/sass/components/slider"; +// @import "materialize-css/sass/components/carousel"; +// @import "materialize-css/sass/components/tapTarget"; +// @import "materialize-css/sass/components/pulse"; +// @import "materialize-css/sass/components/datepicker"; +// @import "materialize-css/sass/components/timepicker"; + +:root { + font-family: Open Sans, sans-serif; +} + +.dfc_b_name { + display: inline-block; + font-size: 19px; + font-weight: 600; + line-height: 25px; + letter-spacing: -0.022em; + text-align: left; +} diff --git a/src/utils.js b/src/utils.js index cac660d..21c7f24 100644 --- a/src/utils.js +++ b/src/utils.js @@ -1,4 +1,4 @@ -const componentName = 'ofn-rpp'; +const componentName = "ofn-rpp"; export function path() { let path = "."; @@ -16,14 +16,31 @@ export function uniq() { export const CLIENT_CONTEXT = { "@vocab": "", - "dfc": "dfc", - "dc": "dc", + dfc: "dfc", + dc: "dc", "dfc-b": "dfc-b", "dfc-p": "dfc-p", "dfc-t": "dfc-t", "dfc-m": "dfc-m", "dfc-pt": "dfc-p", "dfc-f": "dfc-f", - "ontosec": "ontosec", - "name": "name" + ontosec: "ontosec", + name: "name", +}; + +export const sanitize = (input) => { + const tmp = document.createElement("div"); + tmp.innerHTML = input; + return tmp.textContent || tmp.innerText || ""; +}; + +export const truncate = (str, length) => { + if (str.length > length) { + const lastSpaceIndex = str.substr(0, length).lastIndexOf(" "); + str = + lastSpaceIndex !== -1 + ? str.substr(0, lastSpaceIndex) + "..." + : str.substr(0, length) + "..."; + } + return str; }; diff --git a/vite.config.js b/vite.config.js index 2a4f646..eefc63c 100644 --- a/vite.config.js +++ b/vite.config.js @@ -3,6 +3,13 @@ import { defineConfig } from 'vite' import Icons from 'unplugin-icons/vite' export default defineConfig({ + css: { + preprocessorOptions: { + scss: { + quietDeps: true + } + } + }, build: { lib: { entry: resolve(__dirname, 'src/index.js'), -- GitLab