From f752f30ab92e9447c351bf04709cbb94b7527881 Mon Sep 17 00:00:00 2001 From: Luigi Sgro Date: Wed, 6 Jan 2021 12:24:11 +0100 Subject: [PATCH 1/2] Add ShadowRoot module --- src/Web/DOM/ShadowRoot.js | 19 +++++++++++++++ src/Web/DOM/ShadowRoot.purs | 47 +++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 src/Web/DOM/ShadowRoot.js create mode 100644 src/Web/DOM/ShadowRoot.purs diff --git a/src/Web/DOM/ShadowRoot.js b/src/Web/DOM/ShadowRoot.js new file mode 100644 index 0000000..349805f --- /dev/null +++ b/src/Web/DOM/ShadowRoot.js @@ -0,0 +1,19 @@ +"use strict"; + +exports._attachShadow = function(props) { + return function (el) { + return function() { + return el.attachShadow(props); + }; + }; +}; + +exports._mode = function (el) { + return el.mode; +}; + +exports.host = function (el) { + return function() { + return el.host; + }; +}; diff --git a/src/Web/DOM/ShadowRoot.purs b/src/Web/DOM/ShadowRoot.purs new file mode 100644 index 0000000..75e468f --- /dev/null +++ b/src/Web/DOM/ShadowRoot.purs @@ -0,0 +1,47 @@ +module Web.DOM.ShadowRoot + ( ShadowRoot + , ShadowRootMode (..) + , attachShadow + , host + , mode + , toNode + ) where + +import Prelude +import Data.Maybe (Maybe(..)) +import Effect (Effect) +import Unsafe.Coerce (unsafeCoerce) +import Web.DOM.Internal.Types (Element, Node) + +foreign import data ShadowRoot :: Type + +data ShadowRootMode = Open | Closed + +instance showShadowRootMode :: Show ShadowRootMode where + show Open = "open" + show Closed = "closed" + +attachShadow :: ShadowRootMode -> Element -> Effect ShadowRoot +attachShadow = _attachShadow <<< modeToProps + +mode :: ShadowRoot -> Maybe ShadowRootMode +mode = modeFromString <<< _mode + +foreign import host :: ShadowRoot -> Effect Element + +toNode :: ShadowRoot -> Node +toNode = unsafeCoerce + +type ShadowRootProps = { mode :: String } + +foreign import _attachShadow :: ShadowRootProps -> Element -> Effect ShadowRoot +foreign import _mode :: ShadowRoot -> String + +modeToProps :: ShadowRootMode -> ShadowRootProps +modeToProps m = { mode: (show m) } + +modeFromString :: String -> Maybe ShadowRootMode +modeFromString m = case m of + "open" -> Just Open + "closed" -> Just Closed + _ -> Nothing From e0f9b04de75f7b358b27039db2fd586c7314e028 Mon Sep 17 00:00:00 2001 From: Luigi Sgro Date: Wed, 6 Jan 2021 15:10:03 +0100 Subject: [PATCH 2/2] Create main.yml --- .github/workflows/main.yml | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 .github/workflows/main.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..2e4c7a1 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,35 @@ +name: CI + +on: + push: + branches: [master] + pull_request: + branches: [master] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - uses: purescript-contrib/setup-purescript@main + with: + purescript: "0.14.0-rc3" + + - uses: actions/setup-node@v1 + with: + node-version: "10" + + - name: Install dependencies + run: | + npm install -g bower + npm install + bower install --production + + - name: Build source + run: npm run-script build + + - name: Run tests + run: | + bower install + npm run-script test --if-present