diff --git a/bower.json b/bower.json index 19715e0..a586840 100644 --- a/bower.json +++ b/bower.json @@ -30,11 +30,5 @@ "purescript-nullable": "^3.0.0", "purescript-prelude": "^3.0.0", "purescript-unsafe-coerce": "^3.0.0" - }, - "devDependencies": { - "purescript-aff": "^3.0.0", - "purescript-test-unit": "^10.0.0", - "purescript-exitcodes": "^2.0.0", - "purescript-phantom": "^1.0.1" } } diff --git a/package.json b/package.json index b8c078b..6a89f99 100644 --- a/package.json +++ b/package.json @@ -5,11 +5,11 @@ "build": "eslint src && pulp build -- --censor-lib --strict" }, "devDependencies": { - "eslint": "^3.8.1", - "phantomjs-prebuilt": "^2.1.13", + "eslint": "^3.19.0", + "phantomjs-prebuilt": "^2.1.14", "pulp": "^11.0.0", "purescript-psa": "^0.5.0", "purescript": "^0.11.1", - "rimraf": "^2.5.4" + "rimraf": "^2.6.1" } } diff --git a/src/DOM/Event/CompositionEvent.purs b/src/DOM/Event/CompositionEvent.purs index 28e79d3..8b1d863 100644 --- a/src/DOM/Event/CompositionEvent.purs +++ b/src/DOM/Event/CompositionEvent.purs @@ -1,8 +1,8 @@ -module DOM.Event.CompositionEvent ( - module T, - eventToCompositionEvent, - data_ - ) where +module DOM.Event.CompositionEvent + ( module T + , eventToCompositionEvent + , data_ + ) where import Prelude import Data.Foreign (F, toForeign) diff --git a/src/DOM/Event/EventTarget.purs b/src/DOM/Event/EventTarget.purs index b3494d4..c962b65 100644 --- a/src/DOM/Event/EventTarget.purs +++ b/src/DOM/Event/EventTarget.purs @@ -21,7 +21,7 @@ foreign import eventListener foreign import addEventListener :: forall eff . EventType - -> EventListener (dom :: DOM | eff) + -> EventListener eff -> Boolean -> EventTarget -> Eff (dom :: DOM | eff) Unit @@ -31,7 +31,7 @@ foreign import addEventListener foreign import removeEventListener :: forall eff . EventType - -> EventListener (dom :: DOM | eff) + -> EventListener eff -> Boolean -> EventTarget -> Eff (dom :: DOM | eff) Unit diff --git a/src/DOM/Event/FocusEvent.js b/src/DOM/Event/FocusEvent.js index ec69558..63df2e1 100644 --- a/src/DOM/Event/FocusEvent.js +++ b/src/DOM/Event/FocusEvent.js @@ -1,5 +1,5 @@ "use strict"; -exports.relatedTargetNullable = function (e) { +exports._relatedTarget = function (e) { return e.relatedTarget; }; diff --git a/src/DOM/Event/FocusEvent.purs b/src/DOM/Event/FocusEvent.purs index c619f99..1ac24ee 100644 --- a/src/DOM/Event/FocusEvent.purs +++ b/src/DOM/Event/FocusEvent.purs @@ -14,7 +14,7 @@ import DOM.Event.Types (FocusEvent, focusEventToEvent, readFocusEvent) as T eventToFocusEvent :: Event -> F FocusEvent eventToFocusEvent = readFocusEvent <<< toForeign -foreign import relatedTargetNullable :: FocusEvent -> Nullable EventTarget +foreign import _relatedTarget :: FocusEvent -> Nullable EventTarget relatedTarget :: FocusEvent -> Maybe EventTarget -relatedTarget = toMaybe <$> relatedTargetNullable +relatedTarget = toMaybe <$> _relatedTarget diff --git a/src/DOM/Event/MouseEvent.js b/src/DOM/Event/MouseEvent.js index 90a3789..535dafd 100644 --- a/src/DOM/Event/MouseEvent.js +++ b/src/DOM/Event/MouseEvent.js @@ -36,7 +36,7 @@ exports.button = function (e) { return e.button; }; -exports.relatedTargetNullable = function (e) { +exports._relatedTarget = function (e) { return e.relatedTarget; }; diff --git a/src/DOM/Event/MouseEvent.purs b/src/DOM/Event/MouseEvent.purs index 5d14b46..49d6044 100644 --- a/src/DOM/Event/MouseEvent.purs +++ b/src/DOM/Event/MouseEvent.purs @@ -45,10 +45,10 @@ foreign import metaKey :: MouseEvent -> Boolean foreign import button :: MouseEvent -> Int -foreign import relatedTargetNullable :: MouseEvent -> Nullable EventTarget +foreign import _relatedTarget :: MouseEvent -> Nullable EventTarget relatedTarget :: MouseEvent -> Maybe EventTarget -relatedTarget = toMaybe <$> relatedTargetNullable +relatedTarget = toMaybe <$> _relatedTarget foreign import buttons :: MouseEvent -> Int diff --git a/src/DOM/File/FileList.js b/src/DOM/File/FileList.js index 61f0ba8..be31485 100644 --- a/src/DOM/File/FileList.js +++ b/src/DOM/File/FileList.js @@ -2,7 +2,7 @@ exports.length = function (fileList) { return fileList.length; }; -exports.item = function (index) { +exports._item = function (index) { return function (fileList) { return fileList.item(index); }; diff --git a/src/DOM/File/FileList.purs b/src/DOM/File/FileList.purs index fba3aac..f87557f 100644 --- a/src/DOM/File/FileList.purs +++ b/src/DOM/File/FileList.purs @@ -1,10 +1,18 @@ -module DOM.File.FileList where +module DOM.File.FileList + ( length + , item + ) where -import Data.Nullable (Nullable) +import Prelude +import Data.Nullable (Nullable, toMaybe) +import Data.Maybe (Maybe) import DOM.File.Types (FileList, File) -- | Number of files in the `FileList` object. foreign import length :: FileList -> Int +foreign import _item :: Int -> FileList -> Nullable File + -- | Get `File` at the certain position -foreign import item :: Int -> FileList -> Nullable File +item :: Int -> FileList -> Maybe File +item i = toMaybe <<< _item i diff --git a/src/DOM/HTML/Document.js b/src/DOM/HTML/Document.js index 1dd8673..7d23ab1 100644 --- a/src/DOM/HTML/Document.js +++ b/src/DOM/HTML/Document.js @@ -1,6 +1,6 @@ "use strict"; -exports.body = function (doc) { +exports._body = function (doc) { return function () { return doc.body; }; diff --git a/src/DOM/HTML/Document.purs b/src/DOM/HTML/Document.purs index 369b44f..d4115c7 100644 --- a/src/DOM/HTML/Document.purs +++ b/src/DOM/HTML/Document.purs @@ -1,8 +1,15 @@ -module DOM.HTML.Document where +module DOM.HTML.Document + ( body + ) where +import Prelude import Control.Monad.Eff (Eff) -import Data.Nullable (Nullable) +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) import DOM (DOM) import DOM.HTML.Types (HTMLElement, HTMLDocument) -foreign import body :: forall eff. HTMLDocument -> Eff (dom :: DOM | eff) (Nullable HTMLElement) +foreign import _body :: forall eff. HTMLDocument -> Eff (dom :: DOM | eff) (Nullable HTMLElement) + +body :: forall eff. HTMLDocument -> Eff (dom :: DOM | eff) (Maybe HTMLElement) +body = map toMaybe <<< _body diff --git a/src/DOM/HTML/Event/DataTransfer.js b/src/DOM/HTML/Event/DataTransfer.js index e953dfe..fb55de5 100644 --- a/src/DOM/HTML/Event/DataTransfer.js +++ b/src/DOM/HTML/Event/DataTransfer.js @@ -1,6 +1,6 @@ "use strict"; -exports.filesNullable = function (dataTransfer) { +exports._files = function (dataTransfer) { return dataTransfer.files; }; diff --git a/src/DOM/HTML/Event/DataTransfer.purs b/src/DOM/HTML/Event/DataTransfer.purs index 3edf4d3..b695a68 100644 --- a/src/DOM/HTML/Event/DataTransfer.purs +++ b/src/DOM/HTML/Event/DataTransfer.purs @@ -1,7 +1,6 @@ module DOM.HTML.Event.DataTransfer ( DataTransfer , files - , filesNullable , types , getData , setData @@ -23,9 +22,9 @@ foreign import data DataTransfer :: Type -- | It's possible that a drag operation may have null files, instead of an -- | empty file list. In these cases Nothing is returned. files :: DataTransfer -> Maybe FileList -files = toMaybe <$> filesNullable +files = toMaybe <$> _files -foreign import filesNullable :: DataTransfer -> Nullable FileList +foreign import _files :: DataTransfer -> Nullable FileList -- | Returns an array of data formats used in the drag operation. -- | If the drag operation included no data, then the array is empty. diff --git a/src/DOM/HTML/HTMLButtonElement.js b/src/DOM/HTML/HTMLButtonElement.js index e40aa06..dad57c3 100644 --- a/src/DOM/HTML/HTMLButtonElement.js +++ b/src/DOM/HTML/HTMLButtonElement.js @@ -32,7 +32,7 @@ exports.setDisabled = function (disabled) { // ---------------------------------------------------------------------------- -exports.form = function (button) { +exports._form = function (button) { return function () { return button.form; }; diff --git a/src/DOM/HTML/HTMLButtonElement.purs b/src/DOM/HTML/HTMLButtonElement.purs index f619dd3..8ec2825 100644 --- a/src/DOM/HTML/HTMLButtonElement.purs +++ b/src/DOM/HTML/HTMLButtonElement.purs @@ -1,10 +1,39 @@ -module DOM.HTML.HTMLButtonElement where - -import Prelude (Unit) +module DOM.HTML.HTMLButtonElement + ( autofocus + , setAutofocus + , disabled + , setDisabled + , form + , formAction + , setFormAction + , formEnctype + , setFormEnctype + , formMethod + , setFormMethod + , formNoValidate + , setFormNoValidate + , formTarget + , setFormTarget + , name + , setName + , type_ + , setType + , value + , setValue + , willValidate + , validity + , validationMessage + , checkValidity + , setCustomValidity + , labels + ) where + +import Prelude import Control.Monad.Eff (Eff) -import Data.Nullable (Nullable) +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) import DOM (DOM) import DOM.Node.Types (NodeList) @@ -16,7 +45,10 @@ foreign import setAutofocus :: forall eff. Boolean -> HTMLButtonElement -> Eff ( foreign import disabled :: forall eff. HTMLButtonElement -> Eff (dom :: DOM | eff) Boolean foreign import setDisabled :: forall eff. Boolean -> HTMLButtonElement -> Eff (dom :: DOM | eff) Unit -foreign import form :: forall eff. HTMLButtonElement -> Eff (dom :: DOM | eff) (Nullable HTMLFormElement) +form :: forall eff. HTMLButtonElement -> Eff (dom :: DOM | eff) (Maybe HTMLFormElement) +form = map toMaybe <<< _form + +foreign import _form :: forall eff. HTMLButtonElement -> Eff (dom :: DOM | eff) (Nullable HTMLFormElement) foreign import formAction :: forall eff. HTMLButtonElement -> Eff (dom :: DOM | eff) String foreign import setFormAction :: forall eff. String -> HTMLButtonElement -> Eff (dom :: DOM | eff) Unit diff --git a/src/DOM/HTML/HTMLElement.js b/src/DOM/HTML/HTMLElement.js index 66501e4..6fffb89 100644 --- a/src/DOM/HTML/HTMLElement.js +++ b/src/DOM/HTML/HTMLElement.js @@ -208,7 +208,7 @@ exports.getBoundingClientRect = function (el) { }; }; -exports.offsetParent = function (el) { +exports._offsetParent = function (el) { return function () { return el.offsetParent; }; diff --git a/src/DOM/HTML/HTMLElement.purs b/src/DOM/HTML/HTMLElement.purs index 8a99a4c..950a6c9 100644 --- a/src/DOM/HTML/HTMLElement.purs +++ b/src/DOM/HTML/HTMLElement.purs @@ -1,8 +1,38 @@ -module DOM.HTML.HTMLElement where +module DOM.HTML.HTMLElement + ( title + , setTitle + , lang + , setLang + , dir + , setDir + , className + , setClassName + , hidden + , setHidden + , tabIndex + , setTabIndex + , draggable + , setDraggable + , contentEditable + , setContentEditable + , isContentEditable + , spellcheck + , setSpellcheck + , click + , focus + , blur + , getBoundingClientRect + , offsetParent + , offsetTop + , offsetLeft + , offsetWidth + , offsetHeight + ) where import Prelude import Control.Monad.Eff (Eff) -import Data.Nullable (Nullable) +import Data.Nullable (Nullable, toMaybe) +import Data.Maybe (Maybe) import DOM (DOM) import DOM.HTML.Types (HTMLElement) import DOM.Node.Types (Element) @@ -52,7 +82,11 @@ foreign import getBoundingClientRect , height :: Number } -foreign import offsetParent :: forall eff. HTMLElement -> Eff (dom :: DOM | eff) (Nullable Element) +foreign import _offsetParent :: forall eff. HTMLElement -> Eff (dom :: DOM | eff) (Nullable Element) + +offsetParent :: forall eff. HTMLElement -> Eff (dom :: DOM | eff) (Maybe Element) +offsetParent = map toMaybe <<< _offsetParent + foreign import offsetTop :: forall eff. HTMLElement -> Eff (dom :: DOM | eff) Number foreign import offsetLeft :: forall eff. HTMLElement -> Eff (dom :: DOM | eff) Number foreign import offsetWidth :: forall eff. HTMLElement -> Eff (dom :: DOM | eff) Number diff --git a/src/DOM/HTML/HTMLFieldSetElement.js b/src/DOM/HTML/HTMLFieldSetElement.js index a402c85..bf86a0f 100644 --- a/src/DOM/HTML/HTMLFieldSetElement.js +++ b/src/DOM/HTML/HTMLFieldSetElement.js @@ -16,7 +16,7 @@ exports.setDisabled = function (disabled) { // ---------------------------------------------------------------------------- -exports.form = function (fieldset) { +exports._form = function (fieldset) { return function () { return fieldset.form; }; diff --git a/src/DOM/HTML/HTMLFieldSetElement.purs b/src/DOM/HTML/HTMLFieldSetElement.purs index 25abb87..18988bf 100644 --- a/src/DOM/HTML/HTMLFieldSetElement.purs +++ b/src/DOM/HTML/HTMLFieldSetElement.purs @@ -1,10 +1,24 @@ -module DOM.HTML.HTMLFieldSetElement where - -import Prelude (Unit) +module DOM.HTML.HTMLFieldSetElement + ( disabled + , setDisabled + , form + , name + , setName + , type_ + , setType + , willValidate + , validity + , validationMessage + , checkValidity + , setCustomValidity + ) where + +import Prelude import Control.Monad.Eff (Eff) -import Data.Nullable (Nullable) +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) import DOM (DOM) import DOM.HTML.Types (HTMLFieldSetElement, HTMLFormElement, ValidityState) @@ -12,7 +26,10 @@ import DOM.HTML.Types (HTMLFieldSetElement, HTMLFormElement, ValidityState) foreign import disabled :: forall eff. HTMLFieldSetElement -> Eff (dom :: DOM | eff) Boolean foreign import setDisabled :: forall eff. Boolean -> HTMLFieldSetElement -> Eff (dom :: DOM | eff) Unit -foreign import form :: forall eff. HTMLFieldSetElement -> Eff (dom :: DOM | eff) (Nullable HTMLFormElement) +foreign import _form :: forall eff. HTMLFieldSetElement -> Eff (dom :: DOM | eff) (Nullable HTMLFormElement) + +form :: forall eff. HTMLFieldSetElement -> Eff (dom :: DOM | eff) (Maybe HTMLFormElement) +form = map toMaybe <<< _form foreign import name :: forall eff. HTMLFieldSetElement -> Eff (dom :: DOM | eff) String foreign import setName :: forall eff. String -> HTMLFieldSetElement -> Eff (dom :: DOM | eff) Unit @@ -31,4 +48,3 @@ foreign import validationMessage :: forall eff. HTMLFieldSetElement -> Eff (dom foreign import checkValidity :: forall eff. HTMLFieldSetElement -> Eff (dom :: DOM | eff) Boolean foreign import setCustomValidity :: forall eff. String -> HTMLFieldSetElement -> Eff (dom :: DOM | eff) Unit - diff --git a/src/DOM/HTML/HTMLIFrameElement.js b/src/DOM/HTML/HTMLIFrameElement.js index b9c3a64..e74d0f1 100644 --- a/src/DOM/HTML/HTMLIFrameElement.js +++ b/src/DOM/HTML/HTMLIFrameElement.js @@ -80,7 +80,7 @@ exports.setHeight = function (height) { // ---------------------------------------------------------------------------- -exports.contentDocument = function (iframe) { +exports._contentDocument = function (iframe) { return function () { return iframe.contentDocument; }; diff --git a/src/DOM/HTML/HTMLIFrameElement.purs b/src/DOM/HTML/HTMLIFrameElement.purs index c41a1e9..50bf1e8 100644 --- a/src/DOM/HTML/HTMLIFrameElement.purs +++ b/src/DOM/HTML/HTMLIFrameElement.purs @@ -1,10 +1,23 @@ -module DOM.HTML.HTMLIFrameElement where - -import Prelude (Unit) +module DOM.HTML.HTMLIFrameElement + ( src + , setSrc + , srcdoc + , setSrcdoc + , name + , setName + , width + , setWidth + , height + , setHeight + , contentDocument + ) where + +import Prelude import Control.Monad.Eff (Eff) -import Data.Nullable (Nullable) +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) import DOM (DOM) import DOM.HTML.Types (HTMLIFrameElement) @@ -27,6 +40,9 @@ foreign import setWidth :: forall eff. String -> HTMLIFrameElement -> Eff (dom : foreign import height :: forall eff. HTMLIFrameElement -> Eff (dom :: DOM | eff) String foreign import setHeight :: forall eff. String -> HTMLIFrameElement -> Eff (dom :: DOM | eff) Unit -foreign import contentDocument :: forall eff. HTMLIFrameElement -> Eff (dom :: DOM | eff) (Nullable Document) +foreign import _contentDocument :: forall eff. HTMLIFrameElement -> Eff (dom :: DOM | eff) (Nullable Document) + +contentDocument :: forall eff. HTMLIFrameElement -> Eff (dom :: DOM | eff) (Maybe Document) +contentDocument = map toMaybe <<< _contentDocument -- readonly attribute WindowProxy? contentWindow; diff --git a/src/DOM/HTML/HTMLInputElement.js b/src/DOM/HTML/HTMLInputElement.js index d81108f..04ca088 100644 --- a/src/DOM/HTML/HTMLInputElement.js +++ b/src/DOM/HTML/HTMLInputElement.js @@ -128,7 +128,7 @@ exports.setDisabled = function (disabled) { // ---------------------------------------------------------------------------- -exports.form = function (input) { +exports._form = function (input) { return function () { return input.form; }; @@ -136,7 +136,7 @@ exports.form = function (input) { // ---------------------------------------------------------------------------- -exports.files = function (input) { +exports._files = function (input) { return function () { return input.files; }; @@ -256,7 +256,7 @@ exports.setIndeterminate = function (indeterminate) { // ---------------------------------------------------------------------------- -exports.list = function (input) { +exports._list = function (input) { return function () { return input.list; }; diff --git a/src/DOM/HTML/HTMLInputElement.purs b/src/DOM/HTML/HTMLInputElement.purs index 92d6fe5..9ebc38f 100644 --- a/src/DOM/HTML/HTMLInputElement.purs +++ b/src/DOM/HTML/HTMLInputElement.purs @@ -1,9 +1,100 @@ -module DOM.HTML.HTMLInputElement where - -import Prelude (Unit) +module DOM.HTML.HTMLInputElement + ( accept + , setAccept + , alt + , setAlt + , autocomplete + , setAutocomplete + , autofocus + , setAutofocus + , defaultChecked + , setDefaultChecked + , checked + , setChecked + , dirName + , setDirName + , disabled + , setDisabled + , form + , files + , formAction + , setFormAction + , formEnctype + , setFormEnctype + , formMethod + , setFormMethod + , formNoValidate + , setFormNoValidate + , formTarget + , setFormTarget + , height + , setHeight + , indeterminate + , setIndeterminate + , list + , max + , setMax + , maxLength + , setMaxLength + , min + , setMin + , minLength + , setMinLength + , multiple + , setMultiple + , name + , setName + , pattern + , setPattern + , placeholder + , setPlaceholder + , readOnly + , setReadOnly + , required + , setRequired + , size + , setSize + , src + , setSrc + , step + , setStep + , type_ + , setType + , defaultValue + , setDefaultValue + , value + , setValue + , valueAsDate + , setValueAsDate + , valueAsNumber + , setValueAsNumber + , width + , setWidth + , stepUp' + , stepDown' + , willValidate + , validity + , validationMessage + , checkValidity + , setCustomValidity + , labels + , select + , selectionStart + , setSelectionStart + , selectionEnd + , setSelectionEnd + , selectionDirection + , setSelectionDirection + , setRangeText + , setRangeText' + , setSelectionRange + ) where + +import Prelude import Control.Monad.Eff (Eff) import Data.JSDate (JSDate) -import Data.Nullable (Nullable) +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) import DOM (DOM) import DOM.File.Types (FileList) import DOM.HTML.SelectionMode (SelectionMode) @@ -34,9 +125,15 @@ foreign import setDirName :: forall eff. String -> HTMLInputElement -> Eff (dom foreign import disabled :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) Boolean foreign import setDisabled :: forall eff. Boolean -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit -foreign import form :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) (Nullable HTMLFormElement) +form :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) (Maybe HTMLFormElement) +form = map toMaybe <<< _form + +foreign import _form :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) (Nullable HTMLFormElement) -foreign import files :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) (Nullable FileList) +files :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) (Maybe FileList) +files = map toMaybe <<< _files + +foreign import _files :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) (Nullable FileList) foreign import formAction :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) String foreign import setFormAction :: forall eff. String -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit @@ -59,7 +156,10 @@ foreign import setHeight :: forall eff. Int -> HTMLInputElement -> Eff (dom :: D foreign import indeterminate :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) Boolean foreign import setIndeterminate :: forall eff. Boolean -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit -foreign import list :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) (Nullable HTMLElement) +list :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) (Maybe HTMLElement) +list = map toMaybe <<< _list + +foreign import _list :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) (Nullable HTMLElement) foreign import max :: forall eff. HTMLInputElement -> Eff (dom :: DOM | eff) String foreign import setMax :: forall eff. String -> HTMLInputElement -> Eff (dom :: DOM | eff) Unit diff --git a/src/DOM/HTML/HTMLKeygenElement.js b/src/DOM/HTML/HTMLKeygenElement.js index de6e2b0..7fb9170 100644 --- a/src/DOM/HTML/HTMLKeygenElement.js +++ b/src/DOM/HTML/HTMLKeygenElement.js @@ -48,7 +48,7 @@ exports.setDisabled = function (disabled) { // ---------------------------------------------------------------------------- -exports.form = function (keygen) { +exports._form = function (keygen) { return function () { return keygen.form; }; diff --git a/src/DOM/HTML/HTMLKeygenElement.purs b/src/DOM/HTML/HTMLKeygenElement.purs index 84b91f7..ed108ab 100644 --- a/src/DOM/HTML/HTMLKeygenElement.purs +++ b/src/DOM/HTML/HTMLKeygenElement.purs @@ -1,10 +1,30 @@ -module DOM.HTML.HTMLKeygenElement where - -import Prelude (Unit) +module DOM.HTML.HTMLKeygenElement + ( autofocus + , setAutofocus + , challenge + , setChallenge + , disabled + , setDisabled + , form + , keytype + , setKeytype + , name + , setName + , type_ + , willValidate + , validity + , validationMessage + , checkValidity + , setCustomValidity + , labels + ) where + +import Prelude import Control.Monad.Eff (Eff) -import Data.Nullable (Nullable) +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) import DOM (DOM) import DOM.Node.Types (NodeList) @@ -19,7 +39,10 @@ foreign import setChallenge :: forall eff. String -> HTMLKeygenElement -> Eff (d foreign import disabled :: forall eff. HTMLKeygenElement -> Eff (dom :: DOM | eff) Boolean foreign import setDisabled :: forall eff. Boolean -> HTMLKeygenElement -> Eff (dom :: DOM | eff) Unit -foreign import form :: forall eff. HTMLKeygenElement -> Eff (dom :: DOM | eff) (Nullable HTMLFormElement) +form :: forall eff. HTMLKeygenElement -> Eff (dom :: DOM | eff) (Maybe HTMLFormElement) +form = map toMaybe <<< _form + +foreign import _form :: forall eff. HTMLKeygenElement -> Eff (dom :: DOM | eff) (Nullable HTMLFormElement) foreign import keytype :: forall eff. HTMLKeygenElement -> Eff (dom :: DOM | eff) String foreign import setKeytype :: forall eff. String -> HTMLKeygenElement -> Eff (dom :: DOM | eff) Unit diff --git a/src/DOM/HTML/HTMLLabelElement.js b/src/DOM/HTML/HTMLLabelElement.js index 0802a10..41101f3 100644 --- a/src/DOM/HTML/HTMLLabelElement.js +++ b/src/DOM/HTML/HTMLLabelElement.js @@ -1,6 +1,6 @@ "use strict"; -exports.form = function (label) { +exports._form = function (label) { return function () { return label.form; }; @@ -24,7 +24,7 @@ exports.setHtmlFor = function (htmlFor) { // ---------------------------------------------------------------------------- -exports.control = function (label) { +exports._control = function (label) { return function () { return label.control; }; diff --git a/src/DOM/HTML/HTMLLabelElement.purs b/src/DOM/HTML/HTMLLabelElement.purs index 5a3fd47..a1a57dc 100644 --- a/src/DOM/HTML/HTMLLabelElement.purs +++ b/src/DOM/HTML/HTMLLabelElement.purs @@ -1,17 +1,29 @@ -module DOM.HTML.HTMLLabelElement where +module DOM.HTML.HTMLLabelElement + ( form + , htmlFor + , setHtmlFor + , control + ) where -import Prelude (Unit) +import Prelude import Control.Monad.Eff (Eff) -import Data.Nullable (Nullable) +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) import DOM (DOM) import DOM.HTML.Types (HTMLLabelElement, HTMLFormElement, HTMLElement) -foreign import form :: forall eff. HTMLLabelElement -> Eff (dom :: DOM | eff) (Nullable HTMLFormElement) +form :: forall eff. HTMLLabelElement -> Eff (dom :: DOM | eff) (Maybe HTMLFormElement) +form = map toMaybe <<< _form + +foreign import _form :: forall eff. HTMLLabelElement -> Eff (dom :: DOM | eff) (Nullable HTMLFormElement) foreign import htmlFor :: forall eff. HTMLLabelElement -> Eff (dom :: DOM | eff) String foreign import setHtmlFor :: forall eff. String -> HTMLLabelElement -> Eff (dom :: DOM | eff) Unit -foreign import control :: forall eff. HTMLLabelElement -> Eff (dom :: DOM | eff) (Nullable HTMLElement) +control :: forall eff. HTMLLabelElement -> Eff (dom :: DOM | eff) (Maybe HTMLElement) +control = map toMaybe <<< _control + +foreign import _control :: forall eff. HTMLLabelElement -> Eff (dom :: DOM | eff) (Nullable HTMLElement) diff --git a/src/DOM/HTML/HTMLLegendElement.js b/src/DOM/HTML/HTMLLegendElement.js index 3936e52..1a18899 100644 --- a/src/DOM/HTML/HTMLLegendElement.js +++ b/src/DOM/HTML/HTMLLegendElement.js @@ -1,6 +1,6 @@ "use strict"; -exports.form = function (le) { +exports._form = function (le) { return function () { return le.form; }; diff --git a/src/DOM/HTML/HTMLLegendElement.purs b/src/DOM/HTML/HTMLLegendElement.purs index 4cbf0d9..197e4af 100644 --- a/src/DOM/HTML/HTMLLegendElement.purs +++ b/src/DOM/HTML/HTMLLegendElement.purs @@ -1,9 +1,17 @@ -module DOM.HTML.HTMLLegendElement where +module DOM.HTML.HTMLLegendElement + ( form + ) where + +import Prelude import Control.Monad.Eff (Eff) -import Data.Nullable (Nullable) +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) import DOM (DOM) import DOM.HTML.Types (HTMLLegendElement, HTMLFormElement) -foreign import form :: forall eff. HTMLLegendElement -> Eff (dom :: DOM | eff) (Nullable HTMLFormElement) +form :: forall eff. HTMLLegendElement -> Eff (dom :: DOM | eff) (Maybe HTMLFormElement) +form = map toMaybe <<< _form + +foreign import _form :: forall eff. HTMLLegendElement -> Eff (dom :: DOM | eff) (Nullable HTMLFormElement) diff --git a/src/DOM/HTML/HTMLObjectElement.js b/src/DOM/HTML/HTMLObjectElement.js index 5ed1676..2da0a12 100644 --- a/src/DOM/HTML/HTMLObjectElement.js +++ b/src/DOM/HTML/HTMLObjectElement.js @@ -72,7 +72,7 @@ exports.setUseMap = function (useMap) { // ---------------------------------------------------------------------------- -exports.form = function (object) { +exports._form = function (object) { return function () { return object.form; }; @@ -112,7 +112,7 @@ exports.setHeight = function (height) { // ---------------------------------------------------------------------------- -exports.contentDocument = function (object) { +exports._contentDocument = function (object) { return function () { return object.contentDocument; }; diff --git a/src/DOM/HTML/HTMLObjectElement.purs b/src/DOM/HTML/HTMLObjectElement.purs index 18e0d38..613e015 100644 --- a/src/DOM/HTML/HTMLObjectElement.purs +++ b/src/DOM/HTML/HTMLObjectElement.purs @@ -1,10 +1,32 @@ -module DOM.HTML.HTMLObjectElement where - -import Prelude (Unit) +module DOM.HTML.HTMLObjectElement + ( data_ + , setData + , type_ + , setType + , typeMustMatch + , name + , setName + , useMap + , setUseMap + , form + , width + , setWidth + , height + , setHeight + , contentDocument + , willValidate + , validity + , validationMessage + , checkValidity + , setCustomValidity + ) where + +import Prelude import Control.Monad.Eff (Eff) -import Data.Nullable (Nullable) +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) import DOM (DOM) import DOM.HTML.Types (HTMLObjectElement, HTMLFormElement, ValidityState) @@ -24,7 +46,10 @@ foreign import setName :: forall eff. String -> HTMLObjectElement -> Eff (dom :: foreign import useMap :: forall eff. HTMLObjectElement -> Eff (dom :: DOM | eff) String foreign import setUseMap :: forall eff. String -> HTMLObjectElement -> Eff (dom :: DOM | eff) Unit -foreign import form :: forall eff. HTMLObjectElement -> Eff (dom :: DOM | eff) (Nullable HTMLFormElement) +form :: forall eff. HTMLObjectElement -> Eff (dom :: DOM | eff) (Maybe HTMLFormElement) +form = map toMaybe <<< _form + +foreign import _form :: forall eff. HTMLObjectElement -> Eff (dom :: DOM | eff) (Nullable HTMLFormElement) foreign import width :: forall eff. HTMLObjectElement -> Eff (dom :: DOM | eff) String foreign import setWidth :: forall eff. String -> HTMLObjectElement -> Eff (dom :: DOM | eff) Unit @@ -32,7 +57,10 @@ foreign import setWidth :: forall eff. String -> HTMLObjectElement -> Eff (dom : foreign import height :: forall eff. HTMLObjectElement -> Eff (dom :: DOM | eff) String foreign import setHeight :: forall eff. String -> HTMLObjectElement -> Eff (dom :: DOM | eff) Unit -foreign import contentDocument :: forall eff. HTMLObjectElement -> Eff (dom :: DOM | eff) (Nullable Document) +contentDocument :: forall eff. HTMLObjectElement -> Eff (dom :: DOM | eff) (Maybe Document) +contentDocument = map toMaybe <<< _contentDocument + +foreign import _contentDocument :: forall eff. HTMLObjectElement -> Eff (dom :: DOM | eff) (Nullable Document) -- readonly attribute WindowProxy? contentWindow; diff --git a/src/DOM/HTML/HTMLOptionElement.js b/src/DOM/HTML/HTMLOptionElement.js index 8aef372..9285741 100644 --- a/src/DOM/HTML/HTMLOptionElement.js +++ b/src/DOM/HTML/HTMLOptionElement.js @@ -16,7 +16,7 @@ exports.setDisabled = function (disabled) { // ---------------------------------------------------------------------------- -exports.form = function (option) { +exports._form = function (option) { return function () { return option.form; }; diff --git a/src/DOM/HTML/HTMLOptionElement.purs b/src/DOM/HTML/HTMLOptionElement.purs index 6ea3f19..3ca1a9b 100644 --- a/src/DOM/HTML/HTMLOptionElement.purs +++ b/src/DOM/HTML/HTMLOptionElement.purs @@ -1,10 +1,26 @@ -module DOM.HTML.HTMLOptionElement where - -import Prelude (Unit) +module DOM.HTML.HTMLOptionElement + ( disabled + , setDisabled + , form + , label + , setLabel + , defaultSelected + , setDefaultSelected + , selected + , setSelected + , value + , setValue + , text + , setText + , index + ) where + +import Prelude import Control.Monad.Eff (Eff) -import Data.Nullable (Nullable) +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) import DOM (DOM) import DOM.HTML.Types (HTMLOptionElement, HTMLFormElement) @@ -14,7 +30,10 @@ import DOM.HTML.Types (HTMLOptionElement, HTMLFormElement) foreign import disabled :: forall eff. HTMLOptionElement -> Eff (dom :: DOM | eff) Boolean foreign import setDisabled :: forall eff. Boolean -> HTMLOptionElement -> Eff (dom :: DOM | eff) Unit -foreign import form :: forall eff. HTMLOptionElement -> Eff (dom :: DOM | eff) (Nullable HTMLFormElement) +form :: forall eff. HTMLOptionElement -> Eff (dom :: DOM | eff) (Maybe HTMLFormElement) +form = map toMaybe <<< _form + +foreign import _form :: forall eff. HTMLOptionElement -> Eff (dom :: DOM | eff) (Nullable HTMLFormElement) foreign import label :: forall eff. HTMLOptionElement -> Eff (dom :: DOM | eff) String foreign import setLabel :: forall eff. String -> HTMLOptionElement -> Eff (dom :: DOM | eff) Unit diff --git a/src/DOM/HTML/HTMLOutputElement.js b/src/DOM/HTML/HTMLOutputElement.js index 6c9044f..6b724b9 100644 --- a/src/DOM/HTML/HTMLOutputElement.js +++ b/src/DOM/HTML/HTMLOutputElement.js @@ -1,6 +1,6 @@ "use strict"; -exports.form = function (output) { +exports._form = function (output) { return function () { return output.form; }; diff --git a/src/DOM/HTML/HTMLOutputElement.purs b/src/DOM/HTML/HTMLOutputElement.purs index 52108d9..4db7dc5 100644 --- a/src/DOM/HTML/HTMLOutputElement.purs +++ b/src/DOM/HTML/HTMLOutputElement.purs @@ -1,10 +1,26 @@ -module DOM.HTML.HTMLOutputElement where - -import Prelude (Unit) +module DOM.HTML.HTMLOutputElement + ( form + , name + , setName + , type_ + , defaultValue + , setDefaultValue + , value + , setValue + , willValidate + , validity + , validationMessage + , checkValidity + , setCustomValidity + , labels + ) where + +import Prelude import Control.Monad.Eff (Eff) -import Data.Nullable (Nullable) +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) import DOM (DOM) import DOM.Node.Types (NodeList) @@ -12,7 +28,10 @@ import DOM.HTML.Types (HTMLOutputElement, HTMLFormElement, ValidityState) -- [PutForwards=value] readonly attribute DOMSettableTokenList htmlFor; -foreign import form :: forall eff. HTMLOutputElement -> Eff (dom :: DOM | eff) (Nullable HTMLFormElement) +form :: forall eff. HTMLOutputElement -> Eff (dom :: DOM | eff) (Maybe HTMLFormElement) +form = map toMaybe <<< _form + +foreign import _form :: forall eff. HTMLOutputElement -> Eff (dom :: DOM | eff) (Nullable HTMLFormElement) foreign import name :: forall eff. HTMLOutputElement -> Eff (dom :: DOM | eff) String foreign import setName :: forall eff. String -> HTMLOutputElement -> Eff (dom :: DOM | eff) Unit diff --git a/src/DOM/HTML/HTMLSelectElement.js b/src/DOM/HTML/HTMLSelectElement.js index ba98305..e14bb0b 100644 --- a/src/DOM/HTML/HTMLSelectElement.js +++ b/src/DOM/HTML/HTMLSelectElement.js @@ -48,7 +48,7 @@ exports.setMultiple = function (multiple) { // ---------------------------------------------------------------------------- -exports.form = function (select) { +exports._form = function (select) { return function () { return select.form; }; diff --git a/src/DOM/HTML/HTMLSelectElement.purs b/src/DOM/HTML/HTMLSelectElement.purs index 99975bd..c7a3309 100644 --- a/src/DOM/HTML/HTMLSelectElement.purs +++ b/src/DOM/HTML/HTMLSelectElement.purs @@ -1,10 +1,39 @@ -module DOM.HTML.HTMLSelectElement where - -import Prelude (Unit) +module DOM.HTML.HTMLSelectElement + ( autofocus + , setAutofocus + , disabled + , setDisabled + , form + , multiple + , setMultiple + , name + , setName + , required + , setRequired + , size + , setSize + , type_ + , length + , setLength + , selectedOptions + , selectedIndex + , setSelectedIndex + , value + , setValue + , willValidate + , validity + , validationMessage + , checkValidity + , setCustomValidity + , labels + ) where + +import Prelude import Control.Monad.Eff (Eff) -import Data.Nullable (Nullable) +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) import DOM (DOM) import DOM.HTML.Types (HTMLSelectElement, HTMLFormElement, ValidityState) @@ -16,7 +45,10 @@ foreign import setAutofocus :: forall eff. Boolean -> HTMLSelectElement -> Eff ( foreign import disabled :: forall eff. HTMLSelectElement -> Eff (dom :: DOM | eff) Boolean foreign import setDisabled :: forall eff. Boolean -> HTMLSelectElement -> Eff (dom :: DOM | eff) Unit -foreign import form :: forall eff. HTMLSelectElement -> Eff (dom :: DOM | eff) (Nullable HTMLFormElement) +form :: forall eff. HTMLSelectElement -> Eff (dom :: DOM | eff) (Maybe HTMLFormElement) +form = map toMaybe <<< _form + +foreign import _form :: forall eff. HTMLSelectElement -> Eff (dom :: DOM | eff) (Nullable HTMLFormElement) foreign import multiple :: forall eff. HTMLSelectElement -> Eff (dom :: DOM | eff) Boolean foreign import setMultiple :: forall eff. Boolean -> HTMLSelectElement -> Eff (dom :: DOM | eff) Unit diff --git a/src/DOM/HTML/HTMLTableElement.js b/src/DOM/HTML/HTMLTableElement.js index 8f8124a..9fae7fa 100644 --- a/src/DOM/HTML/HTMLTableElement.js +++ b/src/DOM/HTML/HTMLTableElement.js @@ -1,12 +1,12 @@ "use strict"; -exports.caption = function (table) { +exports._caption = function (table) { return function () { return table.caption; }; }; -exports.setCaption = function (caption) { +exports._setCaption = function (caption) { return function (table) { return function () { table.caption = caption; @@ -32,13 +32,13 @@ exports.deleteCaption = function (table) { // ---------------------------------------------------------------------------- -exports.tHead = function (table) { +exports._tHead = function (table) { return function () { return table.tHead; }; }; -exports.setTHead = function (tHead) { +exports._setTHead = function (tHead) { return function (table) { return function () { table.tHead = tHead; @@ -64,13 +64,13 @@ exports.deleteTHead = function (table) { // ---------------------------------------------------------------------------- -exports.tFoot = function (table) { +exports._tFoot = function (table) { return function () { return table.tFoot; }; }; -exports.setTFoot = function (tFoot) { +exports._setTFoot = function (tFoot) { return function (table) { return function () { table.tFoot = tFoot; diff --git a/src/DOM/HTML/HTMLTableElement.purs b/src/DOM/HTML/HTMLTableElement.purs index e3fa27a..d3a518d 100644 --- a/src/DOM/HTML/HTMLTableElement.purs +++ b/src/DOM/HTML/HTMLTableElement.purs @@ -1,29 +1,69 @@ -module DOM.HTML.HTMLTableElement where - -import Prelude (Unit, negate) +module DOM.HTML.HTMLTableElement + ( caption + , setCaption + , createCaption + , deleteCaption + , tHead + , setTHead + , createTHead + , deleteTHead + , tFoot + , setTFoot + , createTFoot + , deleteTFoot + , tBodies + , createTBody + , rows + , insertRow + , insertRow' + , deleteRow + , border + , setBorder + ) where + +import Prelude import Control.Monad.Eff (Eff) -import Data.Nullable (Nullable) +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe, toNullable) import DOM (DOM) import DOM.HTML.Types (HTMLTableElement, HTMLTableCaptionElement, HTMLElement, HTMLTableSectionElement) import DOM.Node.Types (HTMLCollection) -foreign import caption :: forall eff. HTMLTableElement -> Eff (dom :: DOM | eff) (Nullable HTMLTableCaptionElement) -foreign import setCaption :: forall eff. Nullable HTMLTableCaptionElement -> HTMLTableElement -> Eff (dom :: DOM | eff) Unit +caption :: forall eff. HTMLTableElement -> Eff (dom :: DOM | eff) (Maybe HTMLTableCaptionElement) +caption = map toMaybe <<< _caption + +setCaption :: forall eff. Maybe HTMLTableCaptionElement -> HTMLTableElement -> Eff (dom :: DOM | eff) Unit +setCaption = _setCaption <<< toNullable + +foreign import _caption :: forall eff. HTMLTableElement -> Eff (dom :: DOM | eff) (Nullable HTMLTableCaptionElement) +foreign import _setCaption :: forall eff. Nullable HTMLTableCaptionElement -> HTMLTableElement -> Eff (dom :: DOM | eff) Unit foreign import createCaption :: forall eff. HTMLTableElement -> Eff (dom :: DOM | eff) HTMLElement foreign import deleteCaption :: forall eff. HTMLTableElement -> Eff (dom :: DOM | eff) Unit -foreign import tHead :: forall eff. HTMLTableElement -> Eff (dom :: DOM | eff) (Nullable HTMLTableSectionElement) -foreign import setTHead :: forall eff. Nullable HTMLTableSectionElement -> HTMLTableElement -> Eff (dom :: DOM | eff) Unit +tHead :: forall eff. HTMLTableElement -> Eff (dom :: DOM | eff) (Maybe HTMLTableSectionElement) +tHead = map toMaybe <<< _tHead + +setTHead :: forall eff. Maybe HTMLTableSectionElement -> HTMLTableElement -> Eff (dom :: DOM | eff) Unit +setTHead = _setTHead <<< toNullable + +foreign import _tHead :: forall eff. HTMLTableElement -> Eff (dom :: DOM | eff) (Nullable HTMLTableSectionElement) +foreign import _setTHead :: forall eff. Nullable HTMLTableSectionElement -> HTMLTableElement -> Eff (dom :: DOM | eff) Unit foreign import createTHead :: forall eff. HTMLTableElement -> Eff (dom :: DOM | eff) HTMLElement foreign import deleteTHead :: forall eff. HTMLTableElement -> Eff (dom :: DOM | eff) Unit -foreign import tFoot :: forall eff. HTMLTableElement -> Eff (dom :: DOM | eff) (Nullable HTMLTableSectionElement) -foreign import setTFoot :: forall eff. Nullable HTMLTableSectionElement -> HTMLTableElement -> Eff (dom :: DOM | eff) Unit +tFoot :: forall eff. HTMLTableElement -> Eff (dom :: DOM | eff) (Maybe HTMLTableSectionElement) +tFoot = map toMaybe <<< _tFoot + +setTFoot :: forall eff. Maybe HTMLTableSectionElement -> HTMLTableElement -> Eff (dom :: DOM | eff) Unit +setTFoot = _setTFoot <<< toNullable + +foreign import _tFoot :: forall eff. HTMLTableElement -> Eff (dom :: DOM | eff) (Nullable HTMLTableSectionElement) +foreign import _setTFoot :: forall eff. Nullable HTMLTableSectionElement -> HTMLTableElement -> Eff (dom :: DOM | eff) Unit foreign import createTFoot :: forall eff. HTMLTableElement -> Eff (dom :: DOM | eff) HTMLElement foreign import deleteTFoot :: forall eff. HTMLTableElement -> Eff (dom :: DOM | eff) Unit diff --git a/src/DOM/HTML/HTMLTextAreaElement.js b/src/DOM/HTML/HTMLTextAreaElement.js index 1918eea..076226a 100644 --- a/src/DOM/HTML/HTMLTextAreaElement.js +++ b/src/DOM/HTML/HTMLTextAreaElement.js @@ -80,7 +80,7 @@ exports.setDisabled = function (disabled) { // ---------------------------------------------------------------------------- -exports.form = function (textarea) { +exports._form = function (textarea) { return function () { return textarea.form; }; diff --git a/src/DOM/HTML/HTMLTextAreaElement.purs b/src/DOM/HTML/HTMLTextAreaElement.purs index 1d48dbc..36cc9fe 100644 --- a/src/DOM/HTML/HTMLTextAreaElement.purs +++ b/src/DOM/HTML/HTMLTextAreaElement.purs @@ -1,10 +1,61 @@ -module DOM.HTML.HTMLTextAreaElement where - -import Prelude (Unit) +module DOM.HTML.HTMLTextAreaElement + ( autocomplete + , setAutocomplete + , autofocus + , setAutofocus + , cols + , setCols + , dirName + , setDirName + , disabled + , setDisabled + , form + , maxLength + , setMaxLength + , minLength + , setMinLength + , name + , setName + , placeholder + , setPlaceholder + , readOnly + , setReadOnly + , required + , setRequired + , rows + , setRows + , wrap + , setWrap + , type_ + , defaultValue + , setDefaultValue + , value + , setValue + , textLength + , willValidate + , validity + , validationMessage + , checkValidity + , setCustomValidity + , labels + , select + , selectionStart + , setSelectionStart + , selectionEnd + , setSelectionEnd + , selectionDirection + , setSelectionDirection + , setRangeText + , setRangeText' + , setSelectionRange + ) where + +import Prelude import Control.Monad.Eff (Eff) -import Data.Nullable (Nullable) +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) import DOM (DOM) import DOM.HTML.SelectionMode (SelectionMode) @@ -26,7 +77,10 @@ foreign import setDirName :: forall eff. String -> HTMLTextAreaElement -> Eff (d foreign import disabled :: forall eff. HTMLTextAreaElement -> Eff (dom :: DOM | eff) Boolean foreign import setDisabled :: forall eff. Boolean -> HTMLTextAreaElement -> Eff (dom :: DOM | eff) Unit -foreign import form :: forall eff. HTMLTextAreaElement -> Eff (dom :: DOM | eff) (Nullable HTMLFormElement) +form :: forall eff. HTMLTextAreaElement -> Eff (dom :: DOM | eff) (Maybe HTMLFormElement) +form = map toMaybe <<< _form + +foreign import _form :: forall eff. HTMLTextAreaElement -> Eff (dom :: DOM | eff) (Nullable HTMLFormElement) foreign import maxLength :: forall eff. HTMLTextAreaElement -> Eff (dom :: DOM | eff) Int foreign import setMaxLength :: forall eff. Int -> HTMLTextAreaElement -> Eff (dom :: DOM | eff) Unit diff --git a/src/DOM/Node/Document.js b/src/DOM/Node/Document.js index 07bed19..733d713 100644 --- a/src/DOM/Node/Document.js +++ b/src/DOM/Node/Document.js @@ -15,8 +15,8 @@ exports.compatMode = getEffProp("compatMode"); exports.characterSet = getEffProp("characterSet"); exports.contentType = getEffProp("contentType"); -exports.doctype = getEffProp("doctype"); -exports.documentElement = getEffProp("documentElement"); +exports._doctype = getEffProp("doctype"); +exports._documentElement = getEffProp("documentElement"); exports.getElementsByTagName = function (localName) { return function (doc) { @@ -26,7 +26,7 @@ exports.getElementsByTagName = function (localName) { }; }; -exports.getElementsByTagNameNS = function (ns) { +exports._getElementsByTagNameNS = function (ns) { return function (localName) { return function (doc) { return function () { @@ -52,7 +52,7 @@ exports.createElement = function (localName) { }; }; -exports.createElementNS = function (ns) { +exports._createElementNS = function (ns) { return function (qualifiedName) { return function (doc) { return function () { diff --git a/src/DOM/Node/Document.purs b/src/DOM/Node/Document.purs index 412ef85..ad9c449 100644 --- a/src/DOM/Node/Document.purs +++ b/src/DOM/Node/Document.purs @@ -1,7 +1,29 @@ -module DOM.Node.Document where +module DOM.Node.Document + ( url + , documentURI + , origin + , compatMode + , characterSet + , contentType + , doctype + , documentElement + , getElementsByTagName + , getElementsByTagNameNS + , getElementsByClassName + , createElement + , createElementNS + , createDocumentFragment + , createTextNode + , createComment + , createProcessingInstruction + , importNode + , adoptNode + ) where +import Prelude import Control.Monad.Eff (Eff) -import Data.Nullable (Nullable) +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe, toNullable) import DOM (DOM) import DOM.Node.Types (Node, Document, ProcessingInstruction, Comment, Text, DocumentFragment, Element, HTMLCollection, DocumentType) @@ -12,15 +34,30 @@ foreign import compatMode :: forall eff. Document -> Eff (dom :: DOM | eff) Stri foreign import characterSet :: forall eff. Document -> Eff (dom :: DOM | eff) String foreign import contentType :: forall eff. Document -> Eff (dom :: DOM | eff) String -foreign import doctype :: forall eff. Document -> Eff (dom :: DOM | eff) (Nullable DocumentType) -foreign import documentElement :: forall eff. Document -> Eff (dom :: DOM | eff) (Nullable Element) +doctype :: forall eff. Document -> Eff (dom :: DOM | eff) (Maybe DocumentType) +doctype = map toMaybe <<< _doctype + +foreign import _doctype :: forall eff. Document -> Eff (dom :: DOM | eff) (Nullable DocumentType) + +documentElement :: forall eff. Document -> Eff (dom :: DOM | eff) (Maybe Element) +documentElement = map toMaybe <<< _documentElement + +foreign import _documentElement :: forall eff. Document -> Eff (dom :: DOM | eff) (Nullable Element) foreign import getElementsByTagName :: forall eff. String -> Document -> Eff (dom :: DOM | eff) HTMLCollection -foreign import getElementsByTagNameNS :: forall eff. Nullable String -> String -> Document -> Eff (dom :: DOM | eff) HTMLCollection + +getElementsByTagNameNS :: forall eff. Maybe String -> String -> Document -> Eff (dom :: DOM | eff) HTMLCollection +getElementsByTagNameNS = _getElementsByTagNameNS <<< toNullable + +foreign import _getElementsByTagNameNS :: forall eff. Nullable String -> String -> Document -> Eff (dom :: DOM | eff) HTMLCollection foreign import getElementsByClassName :: forall eff. String -> Document -> Eff (dom :: DOM | eff) HTMLCollection foreign import createElement :: forall eff. String -> Document -> Eff (dom :: DOM | eff) Element -foreign import createElementNS :: forall eff. Nullable String -> String -> Document -> Eff (dom :: DOM | eff) Element + +createElementNS :: forall eff. Maybe String -> String -> Document -> Eff (dom :: DOM | eff) Element +createElementNS = _createElementNS <<< toNullable + +foreign import _createElementNS :: forall eff. Nullable String -> String -> Document -> Eff (dom :: DOM | eff) Element foreign import createDocumentFragment :: forall eff. Document -> Eff (dom :: DOM | eff) DocumentFragment foreign import createTextNode :: forall eff. String -> Document -> Eff (dom :: DOM | eff) Text foreign import createComment :: forall eff. String -> Document -> Eff (dom :: DOM | eff) Comment diff --git a/src/DOM/Node/Element.js b/src/DOM/Node/Element.js index 0f0a0db..116a511 100644 --- a/src/DOM/Node/Element.js +++ b/src/DOM/Node/Element.js @@ -6,8 +6,8 @@ var getProp = function (name) { }; }; -exports.namespaceURI = getProp("namespaceURI"); -exports.prefix = getProp("prefix"); +exports._namespaceURI = getProp("namespaceURI"); +exports._prefix = getProp("prefix"); exports.localName = getProp("localName"); exports.tagName = getProp("tagName"); @@ -49,7 +49,7 @@ exports.getElementsByTagName = function (localName) { }; }; -exports.getElementsByTagNameNS = function (ns) { +exports._getElementsByTagNameNS = function (ns) { return function (localName) { return function (doc) { return function () { @@ -78,7 +78,7 @@ exports.setAttribute = function (name) { }; }; -exports.getAttribute = function (name) { +exports._getAttribute = function (name) { return function (element) { return function () { return element.getAttribute(name); diff --git a/src/DOM/Node/Element.purs b/src/DOM/Node/Element.purs index a17913d..9638c32 100644 --- a/src/DOM/Node/Element.purs +++ b/src/DOM/Node/Element.purs @@ -1,13 +1,45 @@ -module DOM.Node.Element where +module DOM.Node.Element + ( namespaceURI + , prefix + , localName + , tagName + , id + , setId + , className + , setClassName + , getElementsByTagName + , getElementsByTagNameNS + , getElementsByClassName + , setAttribute + , getAttribute + , removeAttribute + , scrollTop + , setScrollTop + , scrollLeft + , setScrollLeft + , scrollWidth + , scrollHeight + , clientTop + , clientLeft + , clientWidth + , clientHeight + ) where import Prelude import Control.Monad.Eff (Eff) -import Data.Nullable (Nullable) +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe, toNullable) import DOM (DOM) import DOM.Node.Types (Element, HTMLCollection, ElementId) -foreign import namespaceURI :: Element -> Nullable String -foreign import prefix :: Element -> Nullable String +namespaceURI :: Element -> Maybe String +namespaceURI = toMaybe <<< _namespaceURI + +prefix :: Element -> Maybe String +prefix = toMaybe <<< _prefix + +foreign import _namespaceURI :: Element -> Nullable String +foreign import _prefix :: Element -> Nullable String foreign import localName :: Element -> String foreign import tagName :: Element -> String @@ -17,11 +49,20 @@ foreign import className :: forall eff. Element -> Eff (dom :: DOM | eff) String foreign import setClassName :: forall eff. String -> Element -> Eff (dom :: DOM | eff) Unit foreign import getElementsByTagName :: forall eff. String -> Element -> Eff (dom :: DOM | eff) HTMLCollection -foreign import getElementsByTagNameNS :: forall eff. Nullable String -> String -> Element -> Eff (dom :: DOM | eff) HTMLCollection + +getElementsByTagNameNS :: forall eff. Maybe String -> String -> Element -> Eff (dom :: DOM | eff) HTMLCollection +getElementsByTagNameNS = _getElementsByTagNameNS <<< toNullable + +foreign import _getElementsByTagNameNS :: forall eff. Nullable String -> String -> Element -> Eff (dom :: DOM | eff) HTMLCollection + foreign import getElementsByClassName :: forall eff. String -> Element -> Eff (dom :: DOM | eff) HTMLCollection foreign import setAttribute :: forall eff. String -> String -> Element -> Eff (dom :: DOM | eff) Unit -foreign import getAttribute :: forall eff. String -> Element -> Eff (dom :: DOM | eff) (Nullable String) + +getAttribute :: forall eff. String -> Element -> Eff (dom :: DOM | eff) (Maybe String) +getAttribute attr = map toMaybe <<< _getAttribute attr + +foreign import _getAttribute :: forall eff. String -> Element -> Eff (dom :: DOM | eff) (Nullable String) foreign import removeAttribute :: forall eff. String -> Element -> Eff (dom :: DOM | eff) Unit foreign import scrollTop :: forall eff. Element -> Eff (dom :: DOM | eff) Number diff --git a/src/DOM/Node/HTMLCollection.js b/src/DOM/Node/HTMLCollection.js index 84438e9..cacec47 100644 --- a/src/DOM/Node/HTMLCollection.js +++ b/src/DOM/Node/HTMLCollection.js @@ -6,7 +6,7 @@ exports.length = function (list) { }; }; -exports.item = function (index) { +exports._item = function (index) { return function (list) { return function () { return list.item(index); @@ -14,7 +14,7 @@ exports.item = function (index) { }; }; -exports.namedItem = function (name) { +exports._namedItem = function (name) { return function (list) { return function () { return list.namedItem(name); diff --git a/src/DOM/Node/HTMLCollection.purs b/src/DOM/Node/HTMLCollection.purs index 36df38c..27e07a6 100644 --- a/src/DOM/Node/HTMLCollection.purs +++ b/src/DOM/Node/HTMLCollection.purs @@ -1,7 +1,13 @@ -module DOM.Node.HTMLCollection where +module DOM.Node.HTMLCollection + ( length + , item + , namedItem + ) where +import Prelude import Control.Monad.Eff (Eff) -import Data.Nullable (Nullable) +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) import DOM (DOM) import DOM.Node.Types (Element, HTMLCollection, ElementId) @@ -10,8 +16,14 @@ foreign import length :: forall eff. HTMLCollection -> Eff (dom :: DOM | eff) In -- | The element in a HTMLCollection at the specified index, or null if no such -- | element exists. -foreign import item :: forall eff. Int -> HTMLCollection -> Eff (dom :: DOM | eff) (Nullable Element) +item :: forall eff. Int -> HTMLCollection -> Eff (dom :: DOM | eff) (Maybe Element) +item i = map toMaybe <<< _item i + +foreign import _item :: forall eff. Int -> HTMLCollection -> Eff (dom :: DOM | eff) (Nullable Element) -- | The first element with the specified name or ID in a HTMLCollection, or -- | null if no such element exists. -foreign import namedItem :: forall eff. ElementId -> HTMLCollection -> Eff (dom :: DOM | eff) (Nullable Element) +namedItem :: forall eff. ElementId -> HTMLCollection -> Eff (dom :: DOM | eff) (Maybe Element) +namedItem id = map toMaybe <<< _namedItem id + +foreign import _namedItem :: forall eff. ElementId -> HTMLCollection -> Eff (dom :: DOM | eff) (Nullable Element) diff --git a/src/DOM/Node/Node.js b/src/DOM/Node/Node.js index beef786..9c3b687 100644 --- a/src/DOM/Node/Node.js +++ b/src/DOM/Node/Node.js @@ -18,11 +18,11 @@ exports.nodeName = function (node) { exports.baseURI = getEffProp("baseURI"); -exports.ownerDocument = getEffProp("ownerDocument"); +exports._ownerDocument = getEffProp("ownerDocument"); -exports.parentNode = getEffProp("parentNode"); +exports._parentNode = getEffProp("parentNode"); -exports.parentElement = getEffProp("parentElement"); +exports._parentElement = getEffProp("parentElement"); exports.hasChildNodes = function (node) { return function () { @@ -32,13 +32,13 @@ exports.hasChildNodes = function (node) { exports.childNodes = getEffProp("childNodes"); -exports.firstChild = getEffProp("firstChild"); +exports._firstChild = getEffProp("firstChild"); -exports.lastChild = getEffProp("lastChild"); +exports._lastChild = getEffProp("lastChild"); -exports.previousSibling = getEffProp("previousSibling"); +exports._previousSibling = getEffProp("previousSibling"); -exports.nextSibling = getEffProp("nextSibling"); +exports._nextSibling = getEffProp("nextSibling"); exports.nodeValue = getEffProp("nodeValue"); @@ -105,7 +105,7 @@ exports.contains = function (node1) { }; }; -exports.lookupPrefix = function (prefix) { +exports._lookupPrefix = function (prefix) { return function (node) { return function () { return node.lookupPrefix(prefix); @@ -113,7 +113,7 @@ exports.lookupPrefix = function (prefix) { }; }; -exports.lookupNamespaceURI = function (ns) { +exports._lookupNamespaceURI = function (ns) { return function (node) { return function () { return node.lookupNamespaceURI(ns); diff --git a/src/DOM/Node/Node.purs b/src/DOM/Node/Node.purs index 5f71e1a..8f10c48 100644 --- a/src/DOM/Node/Node.purs +++ b/src/DOM/Node/Node.purs @@ -1,10 +1,40 @@ -module DOM.Node.Node where +module DOM.Node.Node + ( nodeTypeIndex + , nodeName + , baseURI + , ownerDocument + , parentNode + , parentElement + , hasChildNodes + , childNodes + , firstChild + , lastChild + , previousSibling + , nextSibling + , nodeValue + , setNodeValue + , textContent + , setTextContent + , normalize + , clone + , deepClone + , isEqualNode + , compareDocumentPositionBits + , contains + , lookupPrefix + , lookupNamespaceURI + , isDefaultNamespace + , insertBefore + , appendChild + , replaceChild + , removeChild + ) where import Prelude import Control.Monad.Eff (Eff) import Data.Enum (toEnum) -import Data.Nullable (Nullable) -import Data.Maybe (fromJust) +import Data.Maybe (Maybe, fromJust) +import Data.Nullable (Nullable, toMaybe) import DOM (DOM) import DOM.Node.NodeType (NodeType) import DOM.Node.Types (Node, NodeList, Element, Document) @@ -27,39 +57,53 @@ foreign import baseURI :: forall eff. Node -> Eff (dom :: DOM | eff) String -- | The document the node belongs to, unless the node is a document in which -- | case the value is null. -foreign import ownerDocument :: forall eff. - Node -> Eff (dom :: DOM | eff) (Nullable Document) +ownerDocument :: forall eff. Node -> Eff (dom :: DOM | eff) (Maybe Document) +ownerDocument = map toMaybe <<< _ownerDocument + +foreign import _ownerDocument :: forall eff. Node -> Eff (dom :: DOM | eff) (Nullable Document) -- | The parent node of the node. -foreign import parentNode :: forall eff. - Node -> Eff (dom :: DOM | eff) (Nullable Node) +parentNode :: forall eff. Node -> Eff (dom :: DOM | eff) (Maybe Node) +parentNode = map toMaybe <<< _parentNode + +foreign import _parentNode :: forall eff. Node -> Eff (dom :: DOM | eff) (Nullable Node) -- | The parent element of the node. -foreign import parentElement :: forall eff. - Node -> Eff (dom :: DOM | eff) (Nullable Element) +parentElement :: forall eff. Node -> Eff (dom :: DOM | eff) (Maybe Element) +parentElement = map toMaybe <<< _parentElement + +foreign import _parentElement :: forall eff. Node -> Eff (dom :: DOM | eff) (Nullable Element) -- | Indicates whether the node has any child nodes. -foreign import hasChildNodes :: forall eff. - Node -> Eff (dom :: DOM | eff) Boolean +foreign import hasChildNodes :: forall eff. Node -> Eff (dom :: DOM | eff) Boolean -- | The children of the node. foreign import childNodes :: forall eff. Node -> Eff (dom :: DOM | eff) NodeList -- | The first child of the node, or null if the node has no children. -foreign import firstChild :: forall eff. - Node -> Eff (dom :: DOM | eff) (Nullable Node) +firstChild :: forall eff. Node -> Eff (dom :: DOM | eff) (Maybe Node) +firstChild = map toMaybe <<< _firstChild + +foreign import _firstChild :: forall eff. Node -> Eff (dom :: DOM | eff) (Nullable Node) + -- | The last child of the node, or null if the node has no children. -foreign import lastChild :: forall eff. - Node -> Eff (dom :: DOM | eff) (Nullable Node) +lastChild :: forall eff. Node -> Eff (dom :: DOM | eff) (Maybe Node) +lastChild = map toMaybe <<< _lastChild + +foreign import _lastChild :: forall eff. Node -> Eff (dom :: DOM | eff) (Nullable Node) -- | The previous sibling node, or null if there is no previous sibling. -foreign import previousSibling :: forall eff. - Node -> Eff (dom :: DOM | eff) (Nullable Node) +previousSibling :: forall eff. Node -> Eff (dom :: DOM | eff) (Maybe Node) +previousSibling = map toMaybe <<< _previousSibling + +foreign import _previousSibling :: forall eff. Node -> Eff (dom :: DOM | eff) (Nullable Node) -- | The next sibling node, or null if there is no next sibling. -foreign import nextSibling :: forall eff. - Node -> Eff (dom :: DOM | eff) (Nullable Node) +nextSibling :: forall eff. Node -> Eff (dom :: DOM | eff) (Maybe Node) +nextSibling = map toMaybe <<< _nextSibling + +foreign import _nextSibling :: forall eff. Node -> Eff (dom :: DOM | eff) (Nullable Node) -- | If the node type is text, comment, or processing instruction this is the -- | node's data, or null in all other cases. @@ -67,8 +111,7 @@ foreign import nodeValue :: forall eff. Node -> Eff (dom :: DOM | eff) String -- | If the node type is text, comment, or processing instruction this allows -- | the node's data to be changed, or has no effect in all other cases. -foreign import setNodeValue :: forall eff. - String -> Node -> Eff (dom :: DOM | eff) Unit +foreign import setNodeValue :: forall eff. String -> Node -> Eff (dom :: DOM | eff) Unit -- | If the node type is document fragment, element, text, processing -- | instruction, or comment this is the node's data, or null in all other @@ -78,8 +121,7 @@ foreign import textContent :: forall eff. Node -> Eff (dom :: DOM | eff) String -- | If the node type is document fragment, element, text, processing -- | instruction, or comment this allows the node's data to be changed, or has -- | no effect in all other cases. -foreign import setTextContent :: forall eff. - String -> Node -> Eff (dom :: DOM | eff) Unit +foreign import setTextContent :: forall eff. String -> Node -> Eff (dom :: DOM | eff) Unit -- | Removes empty text nodes and then combines any remaining text nodes that -- | are contiguous. @@ -92,39 +134,37 @@ foreign import clone :: forall eff. Node -> Eff (dom :: DOM | eff) Node foreign import deepClone :: forall eff. Node -> Eff (dom :: DOM | eff) Node -- | Checks whether two nodes are equivalent. -foreign import isEqualNode :: forall eff. - Node -> Node -> Eff (dom :: DOM | eff) Boolean +foreign import isEqualNode :: forall eff. Node -> Node -> Eff (dom :: DOM | eff) Boolean -- TODO: compareDocumentPosition that returns a semigroup or something instead of the bitmask value -- | Compares the position of two nodes in the document. -foreign import compareDocumentPositionBits :: forall eff. - Node -> Node -> Eff (dom :: DOM | eff) Int +foreign import compareDocumentPositionBits :: forall eff. Node -> Node -> Eff (dom :: DOM | eff) Int -- | Checks whether the second node is contained within the first -foreign import contains :: forall eff. - Node -> Node -> Eff (dom :: DOM | eff) Boolean +foreign import contains :: forall eff. Node -> Node -> Eff (dom :: DOM | eff) Boolean + +lookupPrefix :: forall eff. String -> Node -> Eff (dom :: DOM | eff) (Maybe String) +lookupPrefix p = map toMaybe <<< _lookupPrefix p + +foreign import _lookupPrefix :: forall eff. String -> Node -> Eff (dom :: DOM | eff) (Nullable String) + +lookupNamespaceURI :: forall eff. String -> Node -> Eff (dom :: DOM | eff) (Maybe String) +lookupNamespaceURI ns = map toMaybe <<< _lookupNamespaceURI ns + +foreign import _lookupNamespaceURI :: forall eff. String -> Node -> Eff (dom :: DOM | eff) (Nullable String) -foreign import lookupPrefix :: forall eff. - String -> Node -> Eff (dom :: DOM | eff) (Nullable String) -foreign import lookupNamespaceURI :: forall eff. - String -> Node -> Eff (dom :: DOM | eff) (Nullable String) -foreign import isDefaultNamespace :: forall eff. - String -> Node -> Eff (dom :: DOM | eff) Boolean +foreign import isDefaultNamespace :: forall eff. String -> Node -> Eff (dom :: DOM | eff) Boolean -- | Inserts the first node before the second as a child of the third node. -foreign import insertBefore :: forall eff. - Node -> Node -> Node -> Eff (dom :: DOM | eff) Node +foreign import insertBefore :: forall eff. Node -> Node -> Node -> Eff (dom :: DOM | eff) Node -- | Appends the first node to the child node list of the second node. -foreign import appendChild :: forall eff. - Node -> Node -> Eff (dom :: DOM | eff) Node +foreign import appendChild :: forall eff. Node -> Node -> Eff (dom :: DOM | eff) Node -- | Uses the first node as a replacement for the second node in the children -- | of the third node. -foreign import replaceChild :: forall eff. - Node -> Node -> Node -> Eff (dom :: DOM | eff) Node +foreign import replaceChild :: forall eff. Node -> Node -> Node -> Eff (dom :: DOM | eff) Node -- | Removes the first node from the children of the second node. -foreign import removeChild :: forall eff. - Node -> Node -> Eff (dom :: DOM | eff) Node +foreign import removeChild :: forall eff. Node -> Node -> Eff (dom :: DOM | eff) Node diff --git a/src/DOM/Node/NodeList.js b/src/DOM/Node/NodeList.js index c4aa70a..4ebe582 100644 --- a/src/DOM/Node/NodeList.js +++ b/src/DOM/Node/NodeList.js @@ -6,7 +6,7 @@ exports.length = function (list) { }; }; -exports.item = function (index) { +exports._item = function (index) { return function (list) { return function () { return list.item(index); diff --git a/src/DOM/Node/NodeList.purs b/src/DOM/Node/NodeList.purs index 342e609..2b96061 100644 --- a/src/DOM/Node/NodeList.purs +++ b/src/DOM/Node/NodeList.purs @@ -1,7 +1,12 @@ -module DOM.Node.NodeList where +module DOM.Node.NodeList + ( length + , item + ) where +import Prelude import Control.Monad.Eff (Eff) -import Data.Nullable (Nullable) +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) import DOM (DOM) import DOM.Node.Types (Node, NodeList) @@ -10,4 +15,7 @@ foreign import length :: forall eff. NodeList -> Eff (dom :: DOM | eff) Int -- | The item in a NodeList at the specified index, or null if no such node -- | exists. -foreign import item :: forall eff. Int -> NodeList -> Eff (dom :: DOM | eff) (Nullable Node) +item :: forall eff. Int -> NodeList -> Eff (dom :: DOM | eff) (Maybe Node) +item i = map toMaybe <<< _item i + +foreign import _item :: forall eff. Int -> NodeList -> Eff (dom :: DOM | eff) (Nullable Node) diff --git a/src/DOM/Node/NonDocumentTypeChildNode.js b/src/DOM/Node/NonDocumentTypeChildNode.js index 9348409..cf0387d 100644 --- a/src/DOM/Node/NonDocumentTypeChildNode.js +++ b/src/DOM/Node/NonDocumentTypeChildNode.js @@ -1,12 +1,12 @@ "use strict"; -exports.previousElementSibling = function (node) { +exports._previousElementSibling = function (node) { return function () { return node.previousElementSibling; }; }; -exports.nextElementSibling = function (node) { +exports._nextElementSibling = function (node) { return function () { return node.nextElementSibling; }; diff --git a/src/DOM/Node/NonDocumentTypeChildNode.purs b/src/DOM/Node/NonDocumentTypeChildNode.purs index 224214a..621ba58 100644 --- a/src/DOM/Node/NonDocumentTypeChildNode.purs +++ b/src/DOM/Node/NonDocumentTypeChildNode.purs @@ -1,13 +1,23 @@ -module DOM.Node.NonDocumentTypeChildNode where +module DOM.Node.NonDocumentTypeChildNode + ( previousElementSibling + , nextElementSibling + ) where +import Prelude import Control.Monad.Eff (Eff) -import Data.Nullable (Nullable) +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) import DOM (DOM) import DOM.Node.Types (Element, NonDocumentTypeChildNode) -- | The previous sibling that is an element, or null if no such element exists. -foreign import previousElementSibling :: forall eff. NonDocumentTypeChildNode -> Eff (dom :: DOM | eff) (Nullable Element) +previousElementSibling :: forall eff. NonDocumentTypeChildNode -> Eff (dom :: DOM | eff) (Maybe Element) +previousElementSibling = map toMaybe <<< _previousElementSibling + +foreign import _previousElementSibling :: forall eff. NonDocumentTypeChildNode -> Eff (dom :: DOM | eff) (Nullable Element) -- | The next sibling that is an element, or null if no such element exists. -foreign import nextElementSibling :: forall eff. NonDocumentTypeChildNode -> Eff (dom :: DOM | eff) (Nullable Element) +nextElementSibling :: forall eff. NonDocumentTypeChildNode -> Eff (dom :: DOM | eff) (Maybe Element) +nextElementSibling = map toMaybe <<< _nextElementSibling +foreign import _nextElementSibling :: forall eff. NonDocumentTypeChildNode -> Eff (dom :: DOM | eff) (Nullable Element) diff --git a/src/DOM/Node/NonElementParentNode.js b/src/DOM/Node/NonElementParentNode.js index a0187e7..9ee9583 100644 --- a/src/DOM/Node/NonElementParentNode.js +++ b/src/DOM/Node/NonElementParentNode.js @@ -1,6 +1,6 @@ "use strict"; -exports.getElementById = function (id) { +exports._getElementById = function (id) { return function (node) { return function () { return node.getElementById(id); diff --git a/src/DOM/Node/NonElementParentNode.purs b/src/DOM/Node/NonElementParentNode.purs index 7e1615a..d52c0e1 100644 --- a/src/DOM/Node/NonElementParentNode.purs +++ b/src/DOM/Node/NonElementParentNode.purs @@ -1,10 +1,17 @@ -module DOM.Node.NonElementParentNode where +module DOM.Node.NonElementParentNode + ( getElementById + ) where +import Prelude import Control.Monad.Eff (Eff) -import Data.Nullable (Nullable) +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) import DOM (DOM) import DOM.Node.Types (Element, NonElementParentNode, ElementId) -- | The first element within node's descendants with a matching ID, or null if -- | no such element exists. -foreign import getElementById :: forall eff. ElementId -> NonElementParentNode -> Eff (dom :: DOM | eff) (Nullable Element) +foreign import _getElementById :: forall eff. ElementId -> NonElementParentNode -> Eff (dom :: DOM | eff) (Nullable Element) + +getElementById :: forall eff. ElementId -> NonElementParentNode -> Eff (dom :: DOM | eff) (Maybe Element) +getElementById eid = map toMaybe <<< _getElementById eid diff --git a/src/DOM/Node/ParentNode.js b/src/DOM/Node/ParentNode.js index 765df71..db149e9 100644 --- a/src/DOM/Node/ParentNode.js +++ b/src/DOM/Node/ParentNode.js @@ -10,13 +10,13 @@ var getEffProp = function (name) { exports.children = getEffProp("children"); -exports.firstElementChild = getEffProp("firstElementChild"); +exports._firstElementChild = getEffProp("firstElementChild"); -exports.lastElementChild = getEffProp("lastElementChild"); +exports._lastElementChild = getEffProp("lastElementChild"); exports.childElementCount = getEffProp("childElementCount"); -exports.querySelector = function (selector) { +exports._querySelector = function (selector) { return function (node) { return function () { return node.querySelector(selector); diff --git a/src/DOM/Node/ParentNode.purs b/src/DOM/Node/ParentNode.purs index 1420459..dccaf76 100644 --- a/src/DOM/Node/ParentNode.purs +++ b/src/DOM/Node/ParentNode.purs @@ -1,8 +1,20 @@ -module DOM.Node.ParentNode where +module DOM.Node.ParentNode + ( children + , firstElementChild + , lastElementChild + , childElementCount + , QuerySelector(..) + , querySelector + , querySelectorAll + ) where + +import Prelude import Control.Monad.Eff (Eff) -import Data.Nullable (Nullable) +import Data.Newtype (class Newtype) +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) import DOM (DOM) import DOM.Node.Types (NodeList, ParentNode, Element, HTMLCollection) @@ -11,17 +23,32 @@ import DOM.Node.Types (NodeList, ParentNode, Element, HTMLCollection) foreign import children :: forall eff. ParentNode -> Eff (dom :: DOM | eff) HTMLCollection -- | The first child that is an element, or null if no such element exists. -foreign import firstElementChild :: forall eff. ParentNode -> Eff (dom :: DOM | eff) (Nullable Element) +firstElementChild :: forall eff. ParentNode -> Eff (dom :: DOM | eff) (Maybe Element) +firstElementChild = map toMaybe <<< _firstElementChild + +foreign import _firstElementChild :: forall eff. ParentNode -> Eff (dom :: DOM | eff) (Nullable Element) -- | The last child that is an element, or null if no such element exists. -foreign import lastElementChild :: forall eff. ParentNode -> Eff (dom :: DOM | eff) (Nullable Element) +lastElementChild :: forall eff. ParentNode -> Eff (dom :: DOM | eff) (Maybe Element) +lastElementChild = map toMaybe <<< _lastElementChild + +foreign import _lastElementChild :: forall eff. ParentNode -> Eff (dom :: DOM | eff) (Nullable Element) -- | The number of child elements. foreign import childElementCount :: forall eff. ParentNode -> Eff (dom :: DOM | eff) Int +newtype QuerySelector = QuerySelector String + +derive newtype instance eqQuerySelector :: Eq QuerySelector +derive newtype instance ordQuerySelector :: Ord QuerySelector +derive instance newtypeQuerySelector :: Newtype QuerySelector _ + -- | Finds the first child that is an element that matches the selector(s), or -- | null if no such element exists. -foreign import querySelector :: forall eff. String -> ParentNode -> Eff (dom :: DOM | eff) (Nullable Element) +querySelector :: forall eff. QuerySelector -> ParentNode -> Eff (dom :: DOM | eff) (Maybe Element) +querySelector qs = map toMaybe <<< _querySelector qs + +foreign import _querySelector :: forall eff. QuerySelector -> ParentNode -> Eff (dom :: DOM | eff) (Nullable Element) -- | Finds all the child elements that matches the selector(s). -foreign import querySelectorAll :: forall eff. String -> ParentNode -> Eff (dom :: DOM | eff) NodeList +foreign import querySelectorAll :: forall eff. QuerySelector -> ParentNode -> Eff (dom :: DOM | eff) NodeList diff --git a/src/DOM/WebStorage/Event/StorageEvent.js b/src/DOM/WebStorage/Event/StorageEvent.js index e8e8b11..fd2ccf1 100644 --- a/src/DOM/WebStorage/Event/StorageEvent.js +++ b/src/DOM/WebStorage/Event/StorageEvent.js @@ -1,14 +1,14 @@ "use strict"; -exports.key = function (storage) { +exports._key = function (storage) { return storage.key; }; -exports.oldValue = function (storage) { +exports._oldValue = function (storage) { return storage.oldValue; }; -exports.newValue = function (storage) { +exports._newValue = function (storage) { return storage.newValue; }; @@ -16,6 +16,6 @@ exports.url = function (storage) { return storage.url; }; -exports.storageArea = function (storage) { +exports._storageArea = function (storage) { return storage.storageArea; }; diff --git a/src/DOM/WebStorage/Event/StorageEvent.purs b/src/DOM/WebStorage/Event/StorageEvent.purs index 17e1c65..76a53d7 100644 --- a/src/DOM/WebStorage/Event/StorageEvent.purs +++ b/src/DOM/WebStorage/Event/StorageEvent.purs @@ -1,16 +1,39 @@ module DOM.WebStorage.Event.StorageEvent - ( module DOM.WebStorage.Event.StorageEvent + ( key + , oldValue + , newValue + , url + , storageArea , module DOM.WebStorage.Event.Types , module DOM.WebStorage.Types ) where +import Prelude + import DOM.WebStorage.Types (Storage) import DOM.WebStorage.Event.Types (StorageEvent) -import Data.Nullable (Nullable) +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) + +foreign import _key :: StorageEvent -> Nullable String + +key :: StorageEvent -> Maybe String +key = toMaybe <<< _key + +foreign import _oldValue :: StorageEvent -> Nullable String + +oldValue :: StorageEvent -> Maybe String +oldValue = toMaybe <<< _oldValue + +foreign import _newValue :: StorageEvent -> Nullable String + +newValue :: StorageEvent -> Maybe String +newValue = toMaybe <<< _newValue -foreign import key :: StorageEvent -> Nullable String -foreign import oldValue :: StorageEvent -> Nullable String -foreign import newValue :: StorageEvent -> Nullable String foreign import url :: StorageEvent -> String -foreign import storageArea :: StorageEvent -> Nullable Storage + +foreign import _storageArea :: StorageEvent -> Nullable Storage + +storageArea :: StorageEvent -> Maybe Storage +storageArea = toMaybe <<< _storageArea diff --git a/src/DOM/WebStorage/Storage.js b/src/DOM/WebStorage/Storage.js index 9f82fdc..8d51753 100644 --- a/src/DOM/WebStorage/Storage.js +++ b/src/DOM/WebStorage/Storage.js @@ -6,7 +6,7 @@ exports.length = function (storage) { }; }; -exports.key = function (index) { +exports._key = function (index) { return function (storage) { return function () { return storage.key(index); @@ -14,7 +14,7 @@ exports.key = function (index) { }; }; -exports.getItem = function (key) { +exports._getItem = function (key) { return function (storage) { return function () { return storage.getItem(key); diff --git a/src/DOM/WebStorage/Storage.purs b/src/DOM/WebStorage/Storage.purs index e59809e..29cc1a4 100644 --- a/src/DOM/WebStorage/Storage.purs +++ b/src/DOM/WebStorage/Storage.purs @@ -1,5 +1,10 @@ module DOM.WebStorage.Storage - ( module DOM.WebStorage.Storage + ( length + , key + , getItem + , setItem + , removeItem + , clear , module DOM.WebStorage.Types ) where @@ -10,11 +15,23 @@ import Control.Monad.Eff (Eff) import DOM (DOM) import DOM.WebStorage.Types (Storage) -import Data.Nullable (Nullable) +import Data.Maybe (Maybe) +import Data.Nullable (Nullable, toMaybe) foreign import length :: forall eff. Storage -> Eff (dom :: DOM | eff) Int -foreign import key :: forall eff. Int -> Storage -> Eff (dom :: DOM | eff) (Nullable String) -foreign import getItem :: forall eff. String -> Storage -> Eff (dom :: DOM | eff) (Nullable String) + +foreign import _key :: forall eff. Int -> Storage -> Eff (dom :: DOM | eff) (Nullable String) + +key :: forall eff. Int -> Storage -> Eff (dom :: DOM | eff) (Maybe String) +key i = map toMaybe <<< _key i + +foreign import _getItem :: forall eff. String -> Storage -> Eff (dom :: DOM | eff) (Nullable String) + +getItem :: forall eff. String -> Storage -> Eff (dom :: DOM | eff) (Maybe String) +getItem s = map toMaybe <<< _getItem s + foreign import setItem :: forall eff. String -> String -> Storage -> Eff (dom :: DOM | eff) Unit + foreign import removeItem :: forall eff. String -> Storage -> Eff (dom :: DOM | eff) Unit + foreign import clear :: forall eff. Storage -> Eff (dom :: DOM | eff) Unit