├── .gitignore ├── .npmignore ├── .release-it.json ├── LICENSE ├── README.md ├── docs ├── .nojekyll ├── assets │ ├── css │ │ ├── main.css │ │ └── main.css.map │ ├── images │ │ ├── icons.png │ │ ├── icons@2x.png │ │ ├── widgets.png │ │ └── widgets@2x.png │ └── js │ │ ├── main.js │ │ └── search.js ├── classes │ └── _modalify_.modalsource.html ├── globals.html ├── index.html ├── interfaces │ ├── _modalify_.close.html │ ├── _modalify_.open.html │ ├── _modalify_.options.html │ └── _modalify_.sinksobject.html └── modules │ └── _modalify_.html ├── examples ├── animated │ ├── css │ │ └── main.css │ ├── index.html │ └── src │ │ └── index.ts ├── onionify │ ├── css │ │ └── main.css │ ├── index.html │ └── src │ │ └── index.ts ├── rxjs │ ├── css │ │ └── main.css │ ├── index.html │ └── src │ │ └── index.ts └── simple │ ├── css │ └── main.css │ ├── index.html │ └── src │ └── index.ts ├── package.json ├── shrinkwrap.yaml ├── src └── modalify.ts ├── tsconfig.json └── tslint.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | build/ 3 | 4 | *.log 5 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | *.log 2 | -------------------------------------------------------------------------------- /.release-it.json: -------------------------------------------------------------------------------- 1 | { 2 | "github": { 3 | "release": true 4 | }, 5 | "npm": { 6 | "publish": true 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2016 Cycle.js Community 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # cyclejs-modal 2 | An easy way to open custom modals in a cyclejs app 3 | 4 | Documentation is hosted on [Github Pages](https://cyclejs-community.github.io/cyclejs-modal/index.html) 5 | 6 | ## Use it 7 | `npm install --save cyclejs-modal` 8 | 9 | ## Example 10 | 11 | You can find the examples in the [examples/](https://github.com/cyclejs-community/cyclejs-modal/tree/master/examples) folder 12 | 13 | Since Version 5.2.0 you can also pass the sources to the created modal. This allows the modal to access the isolation scope of its creation place. Take a look at the [onionify example](https://github.com/cyclejs-community/cyclejs-modal/blob/master/examples/onionify/src/index.ts) to see this in action. 14 | 15 | Since Version 5.3.0 modals can be closed by clicking on the gray overlay. You can disable that in the `open` message: 16 | ```js 17 | { 18 | type: 'open', 19 | component: MyModal, 20 | backgroundOverlayClose: false 21 | } 22 | ``` 23 | 24 | ```js 25 | function main({ DOM }) { 26 | return { 27 | DOM: xs.of(button('.button', ['open modal'])), 28 | modal: DOM.select('.button').events('click') 29 | .mapTo({ 30 | type: 'open', 31 | component: isolate(modal, 'myscope') 32 | } as ModalAction) 33 | }; 34 | } 35 | 36 | function modal({ DOM }) { 37 | return { 38 | DOM: xs.of(div('.div', [ 39 | span('.span', ['This is a modal. Yeah? :)']), 40 | button('.button', ['close']) 41 | ])), 42 | modal: DOM.select('.button').events('click') 43 | .mapTo({ type: 'close' } as ModalAction) 44 | }; 45 | } 46 | ``` 47 | 48 | ## Try it 49 | 50 | Clone it, run `npm i && npm run examples` 51 | -------------------------------------------------------------------------------- /docs/.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cyclejs-community/cyclejs-modal/84b46618652dc0e2076da166800ba4db63664b80/docs/.nojekyll -------------------------------------------------------------------------------- /docs/assets/css/main.css.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "mappings": "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", 4 | "sources": ["../../../../src/default/assets/css/vendors/_normalize.sass","../../../../src/default/assets/css/vendors/_highlight.js.sass","../../../../src/default/assets/css/setup/_mixins.sass","../../../../src/default/assets/css/setup/_grid.sass","../../../../src/default/assets/css/setup/_icons.scss","../../../../src/default/assets/css/setup/_animations.sass","../../../../src/default/assets/css/setup/_typography.sass","../../../../src/default/assets/css/_constants.sass","../../../../src/default/assets/css/layouts/_default.sass","../../../../src/default/assets/css/layouts/_minimal.sass","../../../../src/default/assets/css/elements/_comment.sass","../../../../src/default/assets/css/elements/_filter.sass","../../../../src/default/assets/css/elements/_footer.sass","../../../../src/default/assets/css/elements/_hierarchy.sass","../../../../src/default/assets/css/elements/_index.sass","../../../../src/default/assets/css/elements/_member.sass","../../../../src/default/assets/css/elements/_navigation.sass","../../../../src/default/assets/css/elements/_panel.sass","../../../../src/default/assets/css/elements/_search.sass","../../../../src/default/assets/css/elements/_signatures.sass","../../../../src/default/assets/css/elements/_sources.sass","../../../../src/default/assets/css/elements/_toolbar.sass","../../../../src/default/assets/css/elements/_images.sass"], 5 | "names": [], 6 | "file": "main.css" 7 | } 8 | -------------------------------------------------------------------------------- /docs/assets/images/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cyclejs-community/cyclejs-modal/84b46618652dc0e2076da166800ba4db63664b80/docs/assets/images/icons.png -------------------------------------------------------------------------------- /docs/assets/images/icons@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cyclejs-community/cyclejs-modal/84b46618652dc0e2076da166800ba4db63664b80/docs/assets/images/icons@2x.png -------------------------------------------------------------------------------- /docs/assets/images/widgets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cyclejs-community/cyclejs-modal/84b46618652dc0e2076da166800ba4db63664b80/docs/assets/images/widgets.png -------------------------------------------------------------------------------- /docs/assets/images/widgets@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cyclejs-community/cyclejs-modal/84b46618652dc0e2076da166800ba4db63664b80/docs/assets/images/widgets@2x.png -------------------------------------------------------------------------------- /docs/assets/js/search.js: -------------------------------------------------------------------------------- 1 | var typedoc = typedoc || {}; 2 | typedoc.search = typedoc.search || {}; 3 | typedoc.search.data = { 4 | kinds: { 5 | '1': 'External module', 6 | '64': 'Function', 7 | '128': 'Class', 8 | '256': 'Interface', 9 | '512': 'Constructor', 10 | '1024': 'Property', 11 | '2048': 'Method', 12 | '65536': 'Type literal', 13 | '4194304': 'Type alias' 14 | }, 15 | rows: [ 16 | { 17 | id: 0, 18 | kind: 1, 19 | name: '"modalify"', 20 | url: 'modules/_modalify_.html', 21 | classes: 'tsd-kind-external-module' 22 | }, 23 | { 24 | id: 1, 25 | kind: 256, 26 | name: 'Open', 27 | url: 'interfaces/_modalify_.open.html', 28 | classes: 'tsd-kind-interface tsd-parent-kind-external-module', 29 | parent: '"modalify"' 30 | }, 31 | { 32 | id: 2, 33 | kind: 1024, 34 | name: 'type', 35 | url: 'interfaces/_modalify_.open.html#type', 36 | classes: 'tsd-kind-property tsd-parent-kind-interface', 37 | parent: '"modalify".Open' 38 | }, 39 | { 40 | id: 3, 41 | kind: 1024, 42 | name: 'component', 43 | url: 'interfaces/_modalify_.open.html#component', 44 | classes: 'tsd-kind-property tsd-parent-kind-interface', 45 | parent: '"modalify".Open' 46 | }, 47 | { 48 | id: 4, 49 | kind: 1024, 50 | name: 'sources', 51 | url: 'interfaces/_modalify_.open.html#sources', 52 | classes: 'tsd-kind-property tsd-parent-kind-interface', 53 | parent: '"modalify".Open' 54 | }, 55 | { 56 | id: 5, 57 | kind: 1024, 58 | name: 'backgroundOverlayClose', 59 | url: 'interfaces/_modalify_.open.html#backgroundoverlayclose', 60 | classes: 'tsd-kind-property tsd-parent-kind-interface', 61 | parent: '"modalify".Open' 62 | }, 63 | { 64 | id: 6, 65 | kind: 1024, 66 | name: 'id', 67 | url: 'interfaces/_modalify_.open.html#id', 68 | classes: 'tsd-kind-property tsd-parent-kind-interface', 69 | parent: '"modalify".Open' 70 | }, 71 | { 72 | id: 7, 73 | kind: 1024, 74 | name: 'namespace', 75 | url: 'interfaces/_modalify_.open.html#namespace', 76 | classes: 'tsd-kind-property tsd-parent-kind-interface', 77 | parent: '"modalify".Open' 78 | }, 79 | { 80 | id: 8, 81 | kind: 256, 82 | name: 'Close', 83 | url: 'interfaces/_modalify_.close.html', 84 | classes: 'tsd-kind-interface tsd-parent-kind-external-module', 85 | parent: '"modalify"' 86 | }, 87 | { 88 | id: 9, 89 | kind: 1024, 90 | name: 'type', 91 | url: 'interfaces/_modalify_.close.html#type', 92 | classes: 'tsd-kind-property tsd-parent-kind-interface', 93 | parent: '"modalify".Close' 94 | }, 95 | { 96 | id: 10, 97 | kind: 1024, 98 | name: 'count', 99 | url: 'interfaces/_modalify_.close.html#count', 100 | classes: 'tsd-kind-property tsd-parent-kind-interface', 101 | parent: '"modalify".Close' 102 | }, 103 | { 104 | id: 11, 105 | kind: 1024, 106 | name: 'namespace', 107 | url: 'interfaces/_modalify_.close.html#namespace', 108 | classes: 'tsd-kind-property tsd-parent-kind-interface', 109 | parent: '"modalify".Close' 110 | }, 111 | { 112 | id: 12, 113 | kind: 256, 114 | name: 'Options', 115 | url: 'interfaces/_modalify_.options.html', 116 | classes: 'tsd-kind-interface tsd-parent-kind-external-module', 117 | parent: '"modalify"' 118 | }, 119 | { 120 | id: 13, 121 | kind: 1024, 122 | name: 'name', 123 | url: 'interfaces/_modalify_.options.html#name', 124 | classes: 'tsd-kind-property tsd-parent-kind-interface', 125 | parent: '"modalify".Options' 126 | }, 127 | { 128 | id: 14, 129 | kind: 1024, 130 | name: 'DOMDriverKey', 131 | url: 'interfaces/_modalify_.options.html#domdriverkey', 132 | classes: 'tsd-kind-property tsd-parent-kind-interface', 133 | parent: '"modalify".Options' 134 | }, 135 | { 136 | id: 15, 137 | kind: 1024, 138 | name: 'center', 139 | url: 'interfaces/_modalify_.options.html#center', 140 | classes: 'tsd-kind-property tsd-parent-kind-interface', 141 | parent: '"modalify".Options' 142 | }, 143 | { 144 | id: 16, 145 | kind: 1024, 146 | name: 'modalContainerClass', 147 | url: 'interfaces/_modalify_.options.html#modalcontainerclass', 148 | classes: 'tsd-kind-property tsd-parent-kind-interface', 149 | parent: '"modalify".Options' 150 | }, 151 | { 152 | id: 17, 153 | kind: 1024, 154 | name: 'wrapperClass', 155 | url: 'interfaces/_modalify_.options.html#wrapperclass', 156 | classes: 'tsd-kind-property tsd-parent-kind-interface', 157 | parent: '"modalify".Options' 158 | }, 159 | { 160 | id: 18, 161 | kind: 1024, 162 | name: 'background', 163 | url: 'interfaces/_modalify_.options.html#background', 164 | classes: 'tsd-kind-property tsd-parent-kind-interface', 165 | parent: '"modalify".Options' 166 | }, 167 | { 168 | id: 19, 169 | kind: 1024, 170 | name: 'zIndex', 171 | url: 'interfaces/_modalify_.options.html#zindex', 172 | classes: 'tsd-kind-property tsd-parent-kind-interface', 173 | parent: '"modalify".Options' 174 | }, 175 | { 176 | id: 20, 177 | kind: 256, 178 | name: 'SinksObject', 179 | url: 'interfaces/_modalify_.sinksobject.html', 180 | classes: 'tsd-kind-interface tsd-parent-kind-external-module', 181 | parent: '"modalify"' 182 | }, 183 | { 184 | id: 21, 185 | kind: 1024, 186 | name: 'id', 187 | url: 'interfaces/_modalify_.sinksobject.html#id', 188 | classes: 'tsd-kind-property tsd-parent-kind-interface', 189 | parent: '"modalify".SinksObject' 190 | }, 191 | { 192 | id: 22, 193 | kind: 1024, 194 | name: 'namespace', 195 | url: 'interfaces/_modalify_.sinksobject.html#namespace', 196 | classes: 'tsd-kind-property tsd-parent-kind-interface', 197 | parent: '"modalify".SinksObject' 198 | }, 199 | { 200 | id: 23, 201 | kind: 1024, 202 | name: 'sinks$', 203 | url: 'interfaces/_modalify_.sinksobject.html#sinks_', 204 | classes: 'tsd-kind-property tsd-parent-kind-interface', 205 | parent: '"modalify".SinksObject' 206 | }, 207 | { 208 | id: 24, 209 | kind: 128, 210 | name: 'ModalSource', 211 | url: 'classes/_modalify_.modalsource.html', 212 | classes: 'tsd-kind-class tsd-parent-kind-external-module', 213 | parent: '"modalify"' 214 | }, 215 | { 216 | id: 25, 217 | kind: 512, 218 | name: 'constructor', 219 | url: 'classes/_modalify_.modalsource.html#constructor', 220 | classes: 'tsd-kind-constructor tsd-parent-kind-class', 221 | parent: '"modalify".ModalSource' 222 | }, 223 | { 224 | id: 26, 225 | kind: 1024, 226 | name: '_namespace', 227 | url: 'classes/_modalify_.modalsource.html#_namespace', 228 | classes: 'tsd-kind-property tsd-parent-kind-class tsd-is-private', 229 | parent: '"modalify".ModalSource' 230 | }, 231 | { 232 | id: 27, 233 | kind: 1024, 234 | name: '_sinks$$', 235 | url: 'classes/_modalify_.modalsource.html#_sinks__', 236 | classes: 'tsd-kind-property tsd-parent-kind-class tsd-is-private', 237 | parent: '"modalify".ModalSource' 238 | }, 239 | { 240 | id: 28, 241 | kind: 2048, 242 | name: 'select', 243 | url: 'classes/_modalify_.modalsource.html#select', 244 | classes: 'tsd-kind-method tsd-parent-kind-class', 245 | parent: '"modalify".ModalSource' 246 | }, 247 | { 248 | id: 29, 249 | kind: 2048, 250 | name: 'sinks', 251 | url: 'classes/_modalify_.modalsource.html#sinks', 252 | classes: 'tsd-kind-method tsd-parent-kind-class', 253 | parent: '"modalify".ModalSource' 254 | }, 255 | { 256 | id: 30, 257 | kind: 2048, 258 | name: 'isolateSource', 259 | url: 'classes/_modalify_.modalsource.html#isolatesource', 260 | classes: 'tsd-kind-method tsd-parent-kind-class', 261 | parent: '"modalify".ModalSource' 262 | }, 263 | { 264 | id: 31, 265 | kind: 2048, 266 | name: 'isolateSink', 267 | url: 'classes/_modalify_.modalsource.html#isolatesink', 268 | classes: 'tsd-kind-method tsd-parent-kind-class', 269 | parent: '"modalify".ModalSource' 270 | }, 271 | { 272 | id: 32, 273 | kind: 4194304, 274 | name: 'Sinks', 275 | url: 'modules/_modalify_.html#sinks', 276 | classes: 'tsd-kind-type-alias tsd-parent-kind-external-module', 277 | parent: '"modalify"' 278 | }, 279 | { 280 | id: 33, 281 | kind: 4194304, 282 | name: 'Sources', 283 | url: 'modules/_modalify_.html#sources', 284 | classes: 'tsd-kind-type-alias tsd-parent-kind-external-module', 285 | parent: '"modalify"' 286 | }, 287 | { 288 | id: 34, 289 | kind: 4194304, 290 | name: 'Component', 291 | url: 'modules/_modalify_.html#component', 292 | classes: 'tsd-kind-type-alias tsd-parent-kind-external-module', 293 | parent: '"modalify"' 294 | }, 295 | { 296 | id: 35, 297 | kind: 65536, 298 | name: '__type', 299 | url: 'modules/_modalify_.html#component.__type', 300 | classes: 301 | 'tsd-kind-type-literal tsd-parent-kind-type-alias tsd-is-not-exported', 302 | parent: '"modalify".Component' 303 | }, 304 | { 305 | id: 36, 306 | kind: 4194304, 307 | name: 'ModalAction', 308 | url: 'modules/_modalify_.html#modalaction', 309 | classes: 'tsd-kind-type-alias tsd-parent-kind-external-module', 310 | parent: '"modalify"' 311 | }, 312 | { 313 | id: 37, 314 | kind: 4194304, 315 | name: 'Scope', 316 | url: 'modules/_modalify_.html#scope', 317 | classes: 'tsd-kind-type-alias tsd-parent-kind-external-module', 318 | parent: '"modalify"' 319 | }, 320 | { 321 | id: 38, 322 | kind: 4194304, 323 | name: 'ModalStack', 324 | url: 'modules/_modalify_.html#modalstack', 325 | classes: 326 | 'tsd-kind-type-alias tsd-parent-kind-external-module tsd-is-not-exported', 327 | parent: '"modalify"' 328 | }, 329 | { 330 | id: 39, 331 | kind: 64, 332 | name: 'modalify', 333 | url: 'modules/_modalify_.html#modalify', 334 | classes: 'tsd-kind-function tsd-parent-kind-external-module', 335 | parent: '"modalify"' 336 | }, 337 | { 338 | id: 40, 339 | kind: 64, 340 | name: 'centerHTML', 341 | url: 'modules/_modalify_.html#centerhtml', 342 | classes: 'tsd-kind-function tsd-parent-kind-external-module', 343 | parent: '"modalify"' 344 | }, 345 | { 346 | id: 41, 347 | kind: 64, 348 | name: 'displayModals', 349 | url: 'modules/_modalify_.html#displaymodals', 350 | classes: 351 | 'tsd-kind-function tsd-parent-kind-external-module tsd-is-not-exported', 352 | parent: '"modalify"' 353 | }, 354 | { 355 | id: 42, 356 | kind: 64, 357 | name: 'wrapModals', 358 | url: 'modules/_modalify_.html#wrapmodals', 359 | classes: 360 | 'tsd-kind-function tsd-parent-kind-external-module tsd-is-not-exported', 361 | parent: '"modalify"' 362 | }, 363 | { 364 | id: 43, 365 | kind: 64, 366 | name: 'addStyles', 367 | url: 'modules/_modalify_.html#addstyles', 368 | classes: 369 | 'tsd-kind-function tsd-parent-kind-external-module tsd-is-not-exported', 370 | parent: '"modalify"' 371 | } 372 | ] 373 | }; 374 | -------------------------------------------------------------------------------- /docs/classes/_modalify_.modalsource.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | ModalSource | cyclejs-modal 7 | 8 | 9 | 10 | 11 | 12 |
13 |
14 |
15 |
16 | 27 |
28 |
29 | Options 30 |
31 |
32 | All 33 |
    34 |
  • Public
  • 35 |
  • Public/Protected
  • 36 |
  • All
  • 37 |
38 |
39 | 40 | 41 | 42 | 43 | 44 | 45 |
46 |
47 | Menu 48 |
49 |
50 |
51 |
52 |
53 |
54 | 65 |

Class ModalSource

66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |

Hierarchy

74 |
    75 |
  • 76 | ModalSource 77 |
  • 78 |
79 |
80 |
81 |

Index

82 |
83 |
84 |
85 |

Constructors

86 | 89 |
90 |
91 |

Properties

92 | 96 |
97 |
98 |

Methods

99 | 105 |
106 |
107 |
108 |
109 |
110 |

Constructors

111 |
112 | 113 |

constructor

114 | 117 |
    118 |
  • 119 | 124 |

    Parameters

    125 |
      126 |
    • 127 |
      _namespace: Scope[]
      128 |
    • 129 |
    • 130 |
      Default value _sinks$$: Stream<SinksObject> = xs.create<SinksObject>()
      131 |
    • 132 |
    133 |

    Returns ModalSource

    134 |
  • 135 |
136 |
137 |
138 |
139 |

Properties

140 |
141 | 142 |

Private _namespace

143 |
_namespace: Scope[]
144 | 149 |
150 |
151 | 152 |

Private _sinks$$

153 |
_sinks$$: Stream<SinksObject>
154 | 159 |
160 |
161 |
162 |

Methods

163 |
164 | 165 |

isolateSink

166 |
    167 |
  • isolateSink(modal$: Stream<ModalAction>, scope: Scope): Stream<object | object>
  • 168 |
169 |
    170 |
  • 171 | 176 |

    Parameters

    177 |
      178 |
    • 179 |
      modal$: Stream<ModalAction>
      180 |
    • 181 |
    • 182 |
      scope: Scope
      183 |
    • 184 |
    185 |

    Returns Stream<object | object>

    186 |
  • 187 |
188 |
189 |
190 | 191 |

isolateSource

192 | 195 | 214 |
215 |
216 | 217 |

select

218 | 221 |
    222 |
  • 223 | 228 |

    Parameters

    229 |
      230 |
    • 231 |
      id: string
      232 |
    • 233 |
    234 |

    Returns ModalSource

    235 |
  • 236 |
237 |
238 |
239 | 240 |

sinks

241 |
    242 |
  • sinks(): Stream<any>
  • 243 |
  • sinks(driverNames: string[]): any
  • 244 |
245 |
    246 |
  • 247 | 252 |

    Returns Stream<any>

    253 |
  • 254 |
  • 255 | 260 |

    Parameters

    261 |
      262 |
    • 263 |
      driverNames: string[]
      264 |
    • 265 |
    266 |

    Returns any

    267 |
  • 268 |
269 |
270 |
271 |
272 | 363 |
364 |
365 | 424 |
425 |

Generated using TypeDoc

426 |
427 |
428 | 429 | 430 | 431 | -------------------------------------------------------------------------------- /docs/globals.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | cyclejs-modal 7 | 8 | 9 | 10 | 11 | 12 |
13 |
14 |
15 |
16 | 27 |
28 |
29 | Options 30 |
31 |
32 | All 33 |
    34 |
  • Public
  • 35 |
  • Public/Protected
  • 36 |
  • All
  • 37 |
38 |
39 | 40 | 41 | 42 | 43 | 44 | 45 |
46 |
47 | Menu 48 |
49 |
50 |
51 |
52 |
53 |
54 | 59 |

cyclejs-modal

60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |

Index

68 |
69 |
70 |
71 |

External modules

72 | 75 |
76 |
77 |
78 |
79 |
80 | 96 |
97 |
98 | 157 |
158 |

Generated using TypeDoc

159 |
160 |
161 | 162 | 163 | 164 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | cyclejs-modal 7 | 8 | 9 | 10 | 11 | 12 |
13 |
14 |
15 |
16 | 27 |
28 |
29 | Options 30 |
31 |
32 | All 33 |
    34 |
  • Public
  • 35 |
  • Public/Protected
  • 36 |
  • All
  • 37 |
38 |
39 | 40 | 41 | 42 | 43 | 44 | 45 |
46 |
47 | Menu 48 |
49 |
50 |
51 |
52 |
53 |
54 | 59 |

cyclejs-modal

60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |

cyclejs-modal

68 |

An easy way to open custom modals in a cyclejs app

69 |

Documentation is hosted on Github Pages

70 |

Use it

71 |

npm install --save cyclejs-modal

72 |

Example

73 |

You can find the examples in the examples/ folder

74 |

Since Version 5.2.0 you can also pass the sources to the created modal. This allows the modal to access the isolation scope of its creation place. Take a look at the onionify example to see this in action.

75 |

Since Version 5.3.0 modals can be closed by clicking on the gray overlay. You can disable that in the open message:

76 |
{
 77 |     type: 'open',
 78 |     component: MyModal,
 79 |     backgroundOverlayClose: false
 80 | }
81 |
function main({ DOM }) {
 82 |     return {
 83 |         DOM: xs.of(button('.button', ['open modal'])),
 84 |         modal: DOM.select('.button').events('click')
 85 |             .mapTo({
 86 |                 type: 'open',
 87 |                 component: isolate(modal, 'myscope')
 88 |             } as ModalAction)
 89 |     };
 90 | }
 91 | 
 92 | function modal({ DOM }) {
 93 |     return {
 94 |         DOM: xs.of(div('.div', [
 95 |             span('.span', ['This is a modal. Yeah? :)']),
 96 |             button('.button', ['close'])
 97 |         ])),
 98 |         modal: DOM.select('.button').events('click')
 99 |             .mapTo({ type: 'close' } as ModalAction)
100 |     };
101 | }
102 |

Try it

103 |

Clone it, run npm i && npm run examples

104 |
105 |
106 | 122 |
123 |
124 | 183 |
184 |

Generated using TypeDoc

185 |
186 |
187 | 188 | 189 | 190 | -------------------------------------------------------------------------------- /docs/interfaces/_modalify_.close.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Close | cyclejs-modal 7 | 8 | 9 | 10 | 11 | 12 |
13 |
14 |
15 |
16 | 27 |
28 |
29 | Options 30 |
31 |
32 | All 33 |
    34 |
  • Public
  • 35 |
  • Public/Protected
  • 36 |
  • All
  • 37 |
38 |
39 | 40 | 41 | 42 | 43 | 44 | 45 |
46 |
47 | Menu 48 |
49 |
50 |
51 |
52 |
53 |
54 | 65 |

Interface Close

66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |

Hierarchy

74 |
    75 |
  • 76 | Close 77 |
  • 78 |
79 |
80 |
81 |

Index

82 |
83 |
84 |
85 |

Properties

86 | 91 |
92 |
93 |
94 |
95 |
96 |

Properties

97 |
98 | 99 |

Optional count

100 |
count: number
101 | 106 |
107 |
108 | 109 |

Optional namespace

110 |
namespace: Scope[]
111 | 116 |
117 |
118 | 119 |

type

120 |
type: "close"
121 | 126 |
127 |
128 |
129 | 208 |
209 |
210 | 269 |
270 |

Generated using TypeDoc

271 |
272 |
273 | 274 | 275 | 276 | -------------------------------------------------------------------------------- /docs/interfaces/_modalify_.open.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Open | cyclejs-modal 7 | 8 | 9 | 10 | 11 | 12 |
13 |
14 |
15 |
16 | 27 |
28 |
29 | Options 30 |
31 |
32 | All 33 |
    34 |
  • Public
  • 35 |
  • Public/Protected
  • 36 |
  • All
  • 37 |
38 |
39 | 40 | 41 | 42 | 43 | 44 | 45 |
46 |
47 | Menu 48 |
49 |
50 |
51 |
52 |
53 |
54 | 65 |

Interface Open

66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |

Hierarchy

74 |
    75 |
  • 76 | Open 77 |
  • 78 |
79 |
80 |
81 |

Index

82 |
83 |
84 |
85 |

Properties

86 | 94 |
95 |
96 |
97 |
98 |
99 |

Properties

100 |
101 | 102 |

Optional backgroundOverlayClose

103 |
backgroundOverlayClose: boolean
104 | 109 |
110 |
111 | 112 |

component

113 |
component: Component
114 | 119 |
120 |
121 | 122 |

Optional id

123 |
id: string
124 | 129 |
130 |
131 | 132 |

Optional namespace

133 |
namespace: Scope[]
134 | 139 |
140 |
141 | 142 |

Optional sources

143 |
sources: Sources
144 | 149 |
150 |
151 | 152 |

type

153 |
type: "open"
154 | 159 |
160 |
161 |
162 | 250 |
251 |
252 | 311 |
312 |

Generated using TypeDoc

313 |
314 |
315 | 316 | 317 | 318 | -------------------------------------------------------------------------------- /docs/interfaces/_modalify_.options.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Options | cyclejs-modal 7 | 8 | 9 | 10 | 11 | 12 |
13 |
14 |
15 |
16 | 27 |
28 |
29 | Options 30 |
31 |
32 | All 33 |
    34 |
  • Public
  • 35 |
  • Public/Protected
  • 36 |
  • All
  • 37 |
38 |
39 | 40 | 41 | 42 | 43 | 44 | 45 |
46 |
47 | Menu 48 |
49 |
50 |
51 |
52 |
53 |
54 | 65 |

Interface Options

66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |

Hierarchy

74 |
    75 |
  • 76 | Options 77 |
  • 78 |
79 |
80 |
81 |

Index

82 |
83 |
84 |
85 |

Properties

86 | 95 |
96 |
97 |
98 |
99 |
100 |

Properties

101 |
102 | 103 |

Optional DOMDriverKey

104 |
DOMDriverKey: string
105 | 110 |
111 |
112 | 113 |

Optional background

114 |
background: string
115 | 120 |
121 |
122 | 123 |

Optional center

124 |
center: boolean
125 | 130 |
131 |
132 | 133 |

Optional modalContainerClass

134 |
modalContainerClass: string
135 | 140 |
141 |
142 | 143 |

Optional name

144 |
name: string
145 | 150 |
151 |
152 | 153 |

Optional wrapperClass

154 |
wrapperClass: string
155 | 160 |
161 |
162 | 163 |

Optional zIndex

164 |
zIndex: number
165 | 170 |
171 |
172 |
173 | 264 |
265 |
266 | 325 |
326 |

Generated using TypeDoc

327 |
328 |
329 | 330 | 331 | 332 | -------------------------------------------------------------------------------- /docs/interfaces/_modalify_.sinksobject.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | SinksObject | cyclejs-modal 7 | 8 | 9 | 10 | 11 | 12 |
13 |
14 |
15 |
16 | 27 |
28 |
29 | Options 30 |
31 |
32 | All 33 |
    34 |
  • Public
  • 35 |
  • Public/Protected
  • 36 |
  • All
  • 37 |
38 |
39 | 40 | 41 | 42 | 43 | 44 | 45 |
46 |
47 | Menu 48 |
49 |
50 |
51 |
52 |
53 |
54 | 65 |

Interface SinksObject

66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |

Hierarchy

74 |
    75 |
  • 76 | SinksObject 77 |
  • 78 |
79 |
80 |
81 |

Index

82 |
83 |
84 |
85 |

Properties

86 | 91 |
92 |
93 |
94 |
95 |
96 |

Properties

97 |
98 | 99 |

id

100 |
id: string | undefined
101 | 106 |
107 |
108 | 109 |

namespace

110 |
namespace: Scope[]
111 | 116 |
117 |
118 | 119 |

sinks$

120 |
sinks$: Stream<any>
121 | 126 |
127 |
128 |
129 | 208 |
209 |
210 | 269 |
270 |

Generated using TypeDoc

271 |
272 |
273 | 274 | 275 | 276 | -------------------------------------------------------------------------------- /docs/modules/_modalify_.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | "modalify" | cyclejs-modal 7 | 8 | 9 | 10 | 11 | 12 |
13 |
14 |
15 |
16 | 27 |
28 |
29 | Options 30 |
31 |
32 | All 33 |
    34 |
  • Public
  • 35 |
  • Public/Protected
  • 36 |
  • All
  • 37 |
38 |
39 | 40 | 41 | 42 | 43 | 44 | 45 |
46 |
47 | Menu 48 |
49 |
50 |
51 |
52 |
53 |
54 | 62 |

External module "modalify"

63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |

Index

71 |
72 |
73 |
74 |

Classes

75 | 78 |
79 |
80 |

Interfaces

81 | 87 |
88 |
89 |

Type aliases

90 | 98 |
99 |
100 |

Functions

101 | 108 |
109 |
110 |
111 |
112 |
113 |

Type aliases

114 |
115 | 116 |

Component

117 |
Component: function
118 | 123 |
124 |

Type declaration

125 |
    126 |
  • 127 | 130 |
      131 |
    • 132 |

      Parameters

      133 |
        134 |
      • 135 |
        s: Sources
        136 |
      • 137 |
      138 |

      Returns Sinks

      139 |
    • 140 |
    141 |
  • 142 |
143 |
144 |
145 |
146 | 147 |

ModalAction

148 |
ModalAction: Open | Close
149 | 154 |
155 |
156 | 157 |

ModalStack

158 |
ModalStack: Array<[string | undefined, Scope[], Sinks]>
159 | 164 |
165 |
166 | 167 |

Scope

168 |
Scope: string | number
169 | 174 |
175 |
176 | 177 |

Sinks

178 |
Sinks: any
179 | 184 |
185 |
186 | 187 |

Sources

188 |
Sources: any
189 | 194 |
195 |
196 |
197 |

Functions

198 |
199 | 200 |

addStyles

201 |
    202 |
  • addStyles(styles: object, vnode: VNode): VNode
  • 203 |
204 |
    205 |
  • 206 | 211 |

    Parameters

    212 |
      213 |
    • 214 |
      styles: object
      215 |
        216 |
      • 217 |
        [k: string]: any
        218 |
      • 219 |
      220 |
    • 221 |
    • 222 |
      vnode: VNode
      223 |
    • 224 |
    225 |

    Returns VNode

    226 |
  • 227 |
228 |
229 |
230 | 231 |

centerHTML

232 |
    233 |
  • centerHTML(children: VNode[]): VNode
  • 234 |
235 |
    236 |
  • 237 | 242 |

    Parameters

    243 |
      244 |
    • 245 |
      children: VNode[]
      246 |
    • 247 |
    248 |

    Returns VNode

    249 |
  • 250 |
251 |
252 |
253 | 254 |

displayModals

255 |
    256 |
  • displayModals(modals: VNode[], background?: string, zIndex?: number): VNode
  • 257 |
258 |
    259 |
  • 260 | 265 |

    Parameters

    266 |
      267 |
    • 268 |
      modals: VNode[]
      269 |
    • 270 |
    • 271 |
      Default value background: string = "rgba(0,0,0,0.8)"
      272 |
    • 273 |
    • 274 |
      Default value zIndex: number = 500
      275 |
    • 276 |
    277 |

    Returns VNode

    278 |
  • 279 |
280 |
281 |
282 | 283 |

modalify

284 | 287 |
    288 |
  • 289 | 294 |

    Parameters

    295 |
      296 |
    • 297 |
      main: Component
      298 |
    • 299 |
    • 300 |
      Default value __namedParameters: object = {}
      301 |
        302 |
      • 303 |
        DOMDriverKey: string
        304 |
      • 305 |
      • 306 |
        background: string
        307 |
      • 308 |
      • 309 |
        center: boolean
        310 |
      • 311 |
      • 312 |
        modalContainerClass: string
        313 |
      • 314 |
      • 315 |
        name: string
        316 |
      • 317 |
      • 318 |
        wrapperClass: string
        319 |
      • 320 |
      • 321 |
        zIndex: number
        322 |
      • 323 |
      324 |
    • 325 |
    326 |

    Returns Component

    327 |
  • 328 |
329 |
330 |
331 | 332 |

wrapModals

333 |
    334 |
  • wrapModals(modals: VNode[], containerClass?: string | null): VNode[]
  • 335 |
336 |
    337 |
  • 338 | 343 |

    Parameters

    344 |
      345 |
    • 346 |
      modals: VNode[]
      347 |
    • 348 |
    • 349 |
      Default value containerClass: string | null = null
      350 |
    • 351 |
    352 |

    Returns VNode[]

    353 |
  • 354 |
355 |
356 |
357 |
358 | 422 |
423 |
424 | 483 |
484 |

Generated using TypeDoc

485 |
486 |
487 | 488 | 489 | 490 | -------------------------------------------------------------------------------- /examples/animated/css/main.css: -------------------------------------------------------------------------------- 1 | #app { 2 | font-size: 35px; 3 | } 4 | 5 | body, html { 6 | max-height: 100%; 7 | margin: 0; 8 | } 9 | 10 | body { 11 | padding: 20px; 12 | } 13 | 14 | .modal-container { 15 | position: fixed; 16 | top: 0; 17 | left: 0; 18 | width: 100%; 19 | height: 100%; 20 | background-color: rgba(0, 0, 0, 0.5); 21 | display: flex; 22 | } 23 | 24 | .modal-content { 25 | margin: auto; 26 | } 27 | -------------------------------------------------------------------------------- /examples/animated/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Cycle.js example - Modal 9 | 10 | 11 |
12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /examples/animated/src/index.ts: -------------------------------------------------------------------------------- 1 | import xs, { Stream } from 'xstream'; 2 | import { run } from '@cycle/run'; 3 | import { button, div, span, makeDOMDriver, DOMSource, VNode } from '@cycle/dom'; 4 | 5 | import { modalify, ModalAction } from '../../../src/modalify'; 6 | 7 | interface Sources { 8 | DOM: DOMSource; 9 | } 10 | 11 | interface Sinks { 12 | DOM?: Stream; 13 | modal?: Stream; 14 | } 15 | 16 | /** 17 | * modalAnimationWrapper - wraps the component embed in the modal 18 | * will handle the enter and leave animation of the modal 19 | * 20 | */ 21 | function modalAnimationWrapper(component: (s: Sources) => Sinks) { 22 | return function(sources: Sources) { 23 | const instance = component(sources); 24 | 25 | const animation = { 26 | transition: 'transform 1s', 27 | transform: 'translateY(-100%)', 28 | delayed: { 29 | transform: 'translateY(0)' 30 | }, 31 | remove: { 32 | transform: 'translateY(-100%)' 33 | } 34 | }; 35 | 36 | return { 37 | ...instance, 38 | DOM: instance.DOM.map((vnode: VNode) => 39 | div( 40 | '.modal-container', 41 | { style: animation }, 42 | div('.modal-content', vnode) 43 | ) 44 | ) 45 | }; 46 | }; 47 | } 48 | 49 | function main({ DOM }: Sources): Sinks { 50 | return { 51 | DOM: xs.of(button('.button', ['open modal'])), 52 | modal: DOM.select('.button') 53 | .events('click') 54 | .mapTo({ 55 | type: 'open', 56 | component: modalAnimationWrapper(modal) 57 | } as ModalAction) 58 | }; 59 | } 60 | 61 | function modal({ DOM }: Sources): Sinks { 62 | return { 63 | DOM: xs.of( 64 | div('.div', [ 65 | span('.span', ['This is a modal. Yeah? :)']), 66 | button('.close', ['close']) 67 | ]) 68 | ), 69 | modal: DOM.select('.close') 70 | .events('click') 71 | .mapTo({ type: 'close' } as ModalAction) 72 | }; 73 | } 74 | 75 | const modalifiedMain = modalify(main, { 76 | name: 'modal', 77 | DOMDriverKey: 'DOM', 78 | center: false 79 | }); 80 | 81 | run(modalifiedMain, { 82 | DOM: makeDOMDriver('#app') 83 | }); 84 | -------------------------------------------------------------------------------- /examples/onionify/css/main.css: -------------------------------------------------------------------------------- 1 | #app { 2 | font-size: 35px; 3 | } 4 | 5 | body, html { 6 | max-height: 100%; 7 | margin: 0; 8 | } 9 | 10 | body { 11 | padding: 20px; 12 | } 13 | -------------------------------------------------------------------------------- /examples/onionify/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Cycle.js example - Modal 9 | 10 | 11 |
12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /examples/onionify/src/index.ts: -------------------------------------------------------------------------------- 1 | import xs, { Stream } from 'xstream'; 2 | import { run } from '@cycle/run'; 3 | import { button, div, span, makeDOMDriver, DOMSource, VNode } from '@cycle/dom'; 4 | import onionify, { StateSource } from 'cycle-onionify'; 5 | import isolate from '@cycle/isolate'; 6 | 7 | import { modalify, ModalSource, ModalAction } from '../../../src/modalify'; 8 | 9 | interface State { 10 | i: number; 11 | child: { 12 | foo?: string; 13 | }; 14 | } 15 | type Reducer = (s: State) => State; 16 | 17 | interface Sources { 18 | DOM: DOMSource; 19 | modal: ModalSource; 20 | onion: StateSource; 21 | } 22 | 23 | interface Sinks { 24 | DOM?: Stream; 25 | modal?: Stream; 26 | onion?: Stream; 27 | } 28 | 29 | function main(sources: Sources): Sinks { 30 | const { DOM, onion, modal } = sources; 31 | const isolatedModal = isolate(Modal, 'child'); 32 | 33 | const modalSinks: Sinks = modal.sinks(['onion', 'modal']); 34 | 35 | return { 36 | DOM: onion.state$.map(state => 37 | div([ 38 | span(`My state: ${JSON.stringify(state)}`), 39 | button('.button', ['open modal']) 40 | ]) 41 | ), 42 | onion: xs.merge( 43 | xs.of(() => ({ i: 7, child: { foo: 'something' } })), 44 | modalSinks.onion 45 | ), 46 | modal: xs.merge( 47 | DOM.select('.button') 48 | .events('click') 49 | .mapTo({ 50 | type: 'open', 51 | component: isolatedModal, 52 | sources, 53 | id: 'myModal' 54 | } as ModalAction), 55 | modalSinks.modal 56 | ) 57 | }; 58 | } 59 | 60 | function Modal({ DOM, onion }: Sources): any { 61 | return { 62 | DOM: onion.state$.map(state => 63 | div('.div', [ 64 | span('.span', [ 65 | `This is a modal. My state: ${JSON.stringify(state)} :)` 66 | ]), 67 | button('.set', ['Set to "SOMETHING"']), 68 | button('.button', ['close']) 69 | ]) 70 | ), 71 | modal: DOM.select('.button') 72 | .events('click') 73 | .mapTo({ type: 'close' } as ModalAction), 74 | onion: DOM.select('.set') 75 | .events('click') 76 | .mapTo(() => ({ foo: 'SOMETHING' })) 77 | }; 78 | } 79 | 80 | const wrappedMain = onionify(modalify(main, { background: 'rgba(0,0,0,0.2)' })); 81 | 82 | run(wrappedMain, { 83 | DOM: makeDOMDriver('#app') 84 | }); 85 | -------------------------------------------------------------------------------- /examples/rxjs/css/main.css: -------------------------------------------------------------------------------- 1 | #app { 2 | font-size: 35px; 3 | } 4 | 5 | body, html { 6 | max-height: 100%; 7 | margin: 0; 8 | } 9 | 10 | body { 11 | padding: 20px; 12 | } 13 | -------------------------------------------------------------------------------- /examples/rxjs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Cycle.js example - Modal 9 | 10 | 11 |
12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /examples/rxjs/src/index.ts: -------------------------------------------------------------------------------- 1 | import { run } from '@cycle/rxjs-run'; 2 | import { Observable, of as observableOf } from 'rxjs'; 3 | import { mapTo } from 'rxjs/operators'; 4 | import { button, div, span, makeDOMDriver, VNode } from '@cycle/dom'; 5 | import { DOMSource } from '@cycle/dom/lib/cjs/rxjs'; 6 | import isolate from '@cycle/isolate'; 7 | 8 | import { modalify, ModalAction } from '../../../src/modalify'; 9 | 10 | interface Sources { 11 | DOM: DOMSource; 12 | } 13 | 14 | interface Sinks { 15 | DOM?: Observable; 16 | modal?: Observable; 17 | } 18 | 19 | function main({ DOM }: Sources): Sinks { 20 | return { 21 | DOM: observableOf(button('.button', ['open modal'])), 22 | modal: DOM.select('.button') 23 | .events('click') 24 | .pipe( 25 | mapTo({ 26 | type: 'open', 27 | component: isolate(modal) 28 | } as ModalAction) 29 | ) 30 | }; 31 | } 32 | 33 | function modal({ DOM }: Sources): Sinks { 34 | return { 35 | DOM: observableOf( 36 | div('.div', [ 37 | span('.span', ['This is an rxjs modal! :)']), 38 | button('.button', ['close']) 39 | ]) 40 | ), 41 | modal: DOM.select('.button') 42 | .events('click') 43 | .pipe(mapTo({ type: 'close' } as ModalAction)) 44 | }; 45 | } 46 | 47 | run(modalify(main), { 48 | DOM: makeDOMDriver('#app') 49 | }); 50 | -------------------------------------------------------------------------------- /examples/simple/css/main.css: -------------------------------------------------------------------------------- 1 | #app { 2 | font-size: 35px; 3 | } 4 | 5 | body, html { 6 | max-height: 100%; 7 | margin: 0; 8 | } 9 | 10 | body { 11 | padding: 20px; 12 | } 13 | -------------------------------------------------------------------------------- /examples/simple/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Cycle.js example - Modal 9 | 10 | 11 |
12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /examples/simple/src/index.ts: -------------------------------------------------------------------------------- 1 | import xs, { Stream } from 'xstream'; 2 | import { run } from '@cycle/run'; 3 | import { button, div, span, makeDOMDriver, DOMSource, VNode } from '@cycle/dom'; 4 | import isolate from '@cycle/isolate'; 5 | 6 | import { modalify, ModalAction } from '../../../src/modalify'; 7 | 8 | interface Sources { 9 | DOM: DOMSource; 10 | } 11 | 12 | interface Sinks { 13 | DOM?: Stream; 14 | modal?: Stream; 15 | } 16 | 17 | function main({ DOM }: Sources): Sinks { 18 | return { 19 | DOM: xs.of(button('.button', ['open modal'])), 20 | modal: DOM.select('.button') 21 | .events('click') 22 | .mapTo({ 23 | type: 'open', 24 | component: isolate(modal) 25 | } as ModalAction) 26 | }; 27 | } 28 | 29 | function modal({ DOM }: Sources): Sinks { 30 | return { 31 | DOM: xs.of( 32 | div('.div', [ 33 | span('.span', ['This is a modal. Yeah? :)']), 34 | button('.button', ['close']) 35 | ]) 36 | ), 37 | modal: DOM.select('.button') 38 | .events('click') 39 | .mapTo({ type: 'close' } as ModalAction) 40 | }; 41 | } 42 | 43 | const modalifiedMain = modalify(main, { 44 | name: 'modal', 45 | DOMDriverKey: 'DOM', 46 | center: true, 47 | modalContainerClass: null, 48 | background: 'rgba(0,0,0,0.8)', 49 | zIndex: 500 50 | }); 51 | 52 | run(modalifiedMain, { 53 | DOM: makeDOMDriver('#app') 54 | }); 55 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cyclejs-modal", 3 | "version": "7.0.0", 4 | "description": "An easy way to open custom modals in a cyclejs app", 5 | "main": "build/cjs/src/modalify.js", 6 | "module": "build/es6/src/modalify.js", 7 | "typings": "build/es6/src/modalify.d.ts", 8 | "scripts": { 9 | "precommit": "lint-staged", 10 | "format": "prettier --write './{src,examples}/**/*.{ts,tsx}'", 11 | "build": "rimraf build/* && tsc -d --module ES6 --outDir build/es6 && tsc -d && rimraf build/examples", 12 | "documentation": "typedoc --out docs src && touch docs/.nojekyll", 13 | "prepublishOnly": "npm run build && npm run documentation", 14 | "examples": "npm run build && npm run examples:simple && npm run examples:rxjs && npm run examples:onionify && npm run examples:animated", 15 | "examples:simple": "browserify build/cjs/examples/simple/src/index.js -o examples/simple/build/index.js && opn examples/simple/index.html", 16 | "examples:onionify": "browserify build/cjs/examples/onionify/src/index.js -o examples/onionify/build/index.js && opn examples/onionify/index.html", 17 | "examples:animated": "browserify build/cjs/examples/animated/src/index.js -o examples/animated/build/index.js && opn examples/animated/index.html", 18 | "examples:rxjs": "browserify build/cjs/examples/rxjs/src/index.js -o examples/rxjs/build/index.js && opn examples/rxjs/index.html" 19 | }, 20 | "prettier": { 21 | "tabWidth": 4, 22 | "singleQuote": true 23 | }, 24 | "lint-staged": { 25 | "*.{js,jsx,jsx,ts,tsx}": [ 26 | "npm run format", 27 | "git add" 28 | ] 29 | }, 30 | "repository": { 31 | "type": "git", 32 | "url": "git+https://github.com/cyclejs-community/cyclejs-modal.git" 33 | }, 34 | "keywords": [ 35 | "cyclejs", 36 | "sortable" 37 | ], 38 | "author": "Jan van Brügge", 39 | "license": "MIT", 40 | "bugs": { 41 | "url": "https://github.com/cyclejs-community/cyclejs-modal/issues" 42 | }, 43 | "homepage": "https://github.com/cyclejs-community/cyclejs-modal#readme", 44 | "dependencies": { 45 | "@cycle/dom": "^22.0.0", 46 | "@cycle/isolate": "^4.1.0", 47 | "@cycle/run": "^5.1.0", 48 | "cyclejs-utils": "^4.0.2", 49 | "xstream": "^11.7.0" 50 | }, 51 | "devDependencies": { 52 | "@cycle/rxjs-run": "^10.1.0", 53 | "@cycle/state": "^1.0.0", 54 | "babel-preset-env": "^1.7.0", 55 | "babelify": "^10.0.0", 56 | "browserify": "^16.2.3", 57 | "cp-cli": "^1.1.2", 58 | "cycle-onionify": "^6.1.0", 59 | "husky": "^1.2.0", 60 | "lint-staged": "^8.1.0", 61 | "mkdirp": "^0.5.1", 62 | "opn-cli": "^4.0.0", 63 | "prettier": "^1.15.3", 64 | "release-it": "^8.2.0", 65 | "rimraf": "^2.6.2", 66 | "rxjs": "^6.3.3", 67 | "snabbdom": "^0.7.2", 68 | "typedoc": "^0.13.0", 69 | "typescript": "^3.2.1" 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /src/modalify.ts: -------------------------------------------------------------------------------- 1 | import xs, { Stream } from 'xstream'; 2 | import { VNode, h } from '@cycle/dom'; 3 | import isolate from '@cycle/isolate'; 4 | import { adapt } from '@cycle/run/lib/adapt'; 5 | import { mergeSinks, extractSinks } from 'cyclejs-utils'; 6 | 7 | export type Sinks = any; 8 | export type Sources = any; 9 | export type Component = (s: Sources) => Sinks; 10 | 11 | export interface Open { 12 | type: 'open'; 13 | component: Component; 14 | sources?: Sources; //To use proper isolation scopes 15 | backgroundOverlayClose?: boolean; //Default is true 16 | id?: string; //To allow for `select(id)` on the source, will not merge sinks at top level 17 | namespace?: Scope[]; //used internally 18 | } 19 | 20 | export interface Close { 21 | type: 'close'; 22 | count?: number; //Default is one 23 | namespace?: Scope[]; //used internally 24 | } 25 | 26 | export type ModalAction = Open | Close; 27 | 28 | export interface Options { 29 | name?: string; 30 | DOMDriverKey?: string; 31 | center?: boolean; 32 | modalContainerClass?: string; 33 | wrapperClass?: string; 34 | background?: string; 35 | zIndex?: number; 36 | } 37 | 38 | export type Scope = string | number; 39 | 40 | export interface SinksObject { 41 | id: string | undefined; 42 | namespace: Scope[]; 43 | sinks$: Stream; 44 | } 45 | 46 | export class ModalSource { 47 | constructor( 48 | private _namespace: Scope[], 49 | private _sinks$$: Stream = xs.create() 50 | ) {} 51 | 52 | public select(id: string): ModalSource { 53 | return new ModalSource( 54 | this._namespace, 55 | this._sinks$$.filter(o => o.id !== undefined && o.id === id) 56 | ); 57 | } 58 | 59 | public sinks(): Stream; 60 | public sinks(driverNames: string[]): any; 61 | public sinks(driverNames?: string[]): any | Stream { 62 | if (driverNames) { 63 | return extractSinks(this.sinks(), driverNames); 64 | } 65 | return this._sinks$$.map(o => o.sinks$).flatten(); 66 | } 67 | 68 | public isolateSource(source: ModalSource, scope: Scope) { 69 | return new ModalSource( 70 | (source as any)._namespace.concat(scope), 71 | (source as any)._sinks$$ 72 | .filter(o => o.namespace[0] === scope) 73 | .map(o => ({ ...o, namespace: o.namespace.slice(1) })) 74 | ); 75 | } 76 | 77 | public isolateSink(modal$: Stream, scope: Scope) { 78 | return modal$.map(action => ({ 79 | ...action, 80 | namespace: action.namespace 81 | ? action.namespace 82 | : this._namespace.concat(scope) 83 | })); 84 | } 85 | } 86 | 87 | type ModalStack = Array<[string | undefined, Scope[], Sinks]>; 88 | 89 | export function modalify( 90 | main: Component, 91 | { 92 | name = 'modal', 93 | DOMDriverKey = 'DOM', 94 | center = true, 95 | wrapperClass = null, 96 | modalContainerClass = null, 97 | background = 'rgba(0,0,0,0.8)', 98 | zIndex = 500 99 | }: Options = {} 100 | ): Component { 101 | return function(sources: Sources): Sinks { 102 | const modalSource = new ModalSource([]); 103 | 104 | const parentSinks: Sinks = main({ 105 | ...sources, 106 | [name]: modalSource 107 | }); 108 | 109 | const sinks: Sinks = Object.keys(parentSinks) 110 | .map(k => ({ [k]: xs.fromObservable(parentSinks[k]) })) 111 | .reduce((prev, curr) => Object.assign(prev, curr), {}); 112 | 113 | if (sinks[name]) { 114 | const modalProxy$: Stream = xs.create(); 115 | const modalStack$: Stream = xs 116 | .merge(sinks[name] as Stream, modalProxy$) 117 | .fold((acc, curr) => { 118 | if (curr.type === 'close') { 119 | const count: number = curr.count || 1; 120 | for (let i = 0; i < Math.min(acc.length, count); i++) { 121 | const [id, namespace, _] = acc[acc.length - i - 1]; 122 | (modalSource as any)._sinks$$.shamefullySendNext({ 123 | id, 124 | namespace, 125 | sinks$: xs.never() 126 | }); 127 | } 128 | return acc.slice(0, Math.max(acc.length - count, 0)); 129 | } else if (curr.type === 'open') { 130 | const _sources: Sources = 131 | curr.sources !== undefined ? curr.sources : sources; 132 | 133 | let overlayClose$ = xs.never(); 134 | 135 | if (curr.backgroundOverlayClose !== false) { 136 | overlayClose$ = xs 137 | .fromObservable( 138 | sources[DOMDriverKey].select( 139 | 'div.cyclejs-modal' 140 | ).events('click') 141 | ) 142 | .map((ev: any) => { 143 | ev.stopPropagation(); 144 | return ev; 145 | }) 146 | .filter( 147 | (e: any) => 148 | e.target === 149 | (e.currentTarget || e.ownerTarget) 150 | ) 151 | .mapTo({ type: 'close' }); 152 | } 153 | 154 | const componentSinks: Sinks = curr.component(_sources); 155 | const xsComponentSinks: Sinks = Object.keys( 156 | componentSinks 157 | ) 158 | .map(k => ({ 159 | [k]: xs.fromObservable(componentSinks[k]) 160 | })) 161 | .reduce( 162 | (prev, curr) => Object.assign(prev, curr), 163 | {} 164 | ); 165 | 166 | const domlessSinks: Sinks = { ...componentSinks }; 167 | delete domlessSinks[DOMDriverKey]; 168 | 169 | (modalSource as any)._sinks$$.shamefullySendNext({ 170 | id: curr.id, 171 | namespace: curr.namespace || [], 172 | sinks$: xs.never().startWith(domlessSinks) 173 | }); 174 | 175 | return acc.concat([ 176 | [ 177 | curr.id, 178 | curr.namespace || [], 179 | { 180 | ...xsComponentSinks, 181 | modal: xs.merge( 182 | xsComponentSinks[name] || xs.never(), 183 | overlayClose$ 184 | ) 185 | } 186 | ] 187 | ]); 188 | } 189 | return acc; 190 | }, []); 191 | 192 | const modalVDom$: Stream = modalStack$ 193 | .map[]>(arr => arr.map(s => s[2][DOMDriverKey])) 194 | .map>(arr => xs.combine(...arr)) 195 | .flatten(); 196 | 197 | const mergedVDom$: Stream = xs 198 | .combine(sinks[DOMDriverKey] as Stream, modalVDom$) 199 | .map(([vdom, modals]) => 200 | h('div', { attrs: { class: wrapperClass || '' } }, [ 201 | vdom, 202 | center && modals.length > 0 203 | ? displayModals( 204 | wrapModals(modals, modalContainerClass), 205 | background, 206 | zIndex 207 | ) 208 | : h( 209 | 'div', 210 | { 211 | attrs: { 212 | class: modalContainerClass || '' 213 | } 214 | }, 215 | modals 216 | ) 217 | ]) 218 | ); 219 | 220 | const extractedSinks: Sinks = extractSinks( 221 | modalStack$ 222 | .map(arr => 223 | arr.filter(s => s[0] === undefined).map(s => s[2]) 224 | ) 225 | .map(mergeSinks as any), 226 | Object.keys(sinks) 227 | ); 228 | 229 | modalProxy$.imitate(extractedSinks[name]); 230 | const newSinks = { 231 | ...mergeSinks([extractedSinks, sinks]), 232 | [DOMDriverKey]: mergedVDom$ 233 | }; 234 | 235 | return Object.keys(newSinks) 236 | .map(k => ({ [k]: adapt(newSinks[k]) })) 237 | .reduce((prev, curr) => Object.assign(prev, curr), {}); 238 | } 239 | return sinks; 240 | }; 241 | } 242 | 243 | export function centerHTML(children: VNode[]): VNode { 244 | return h( 245 | 'div', 246 | { 247 | style: { 248 | width: '100%', 249 | height: '100%', 250 | position: 'relative', 251 | 'pointer-events': 'none' 252 | } 253 | }, 254 | children.map(child => 255 | h( 256 | 'div', 257 | { 258 | style: { 259 | position: 'absolute', 260 | top: '50%', 261 | left: '50%', 262 | '-ms-transform': 'translate(-50%, -50%)', 263 | '-webkit-transform': 'translate(-50%, -50%)', 264 | transform: 'translate(-50%, -50%)', 265 | 'pointer-events': 'auto' 266 | } 267 | }, 268 | [child] 269 | ) 270 | ) 271 | ); 272 | } 273 | 274 | function displayModals( 275 | modals: VNode[], 276 | background: string = 'rgba(0,0,0,0.8)', 277 | zIndex = 500 278 | ): VNode { 279 | const processedModals: VNode[] = modals.map((m, i) => 280 | addStyles( 281 | { 282 | 'z-index': i * 5 + 10 + zIndex 283 | }, 284 | m 285 | ) 286 | ); 287 | 288 | return addStyles( 289 | { 290 | background, 291 | 'z-index': zIndex, 292 | top: '0px', 293 | left: '0px', 294 | position: 'fixed', 295 | width: '100%', 296 | height: '100%' 297 | }, 298 | h('div.cyclejs-modal', {}, [centerHTML(processedModals)]) 299 | ); 300 | } 301 | 302 | function wrapModals( 303 | modals: VNode[], 304 | containerClass: string | null = null 305 | ): VNode[] { 306 | const wrapper = child => 307 | h( 308 | 'div', 309 | containerClass 310 | ? { 311 | attrs: { 312 | class: containerClass 313 | } 314 | } 315 | : { 316 | style: { 317 | display: 'block', 318 | padding: '10px', 319 | background: 'white', 320 | width: 'auto', 321 | height: 'auto', 322 | 'border-radius': '5px' 323 | } 324 | }, 325 | [child] 326 | ); 327 | 328 | return modals.map(wrapper); 329 | } 330 | 331 | function addStyles(styles: { [k: string]: any }, vnode: VNode): VNode { 332 | return { 333 | ...vnode, 334 | data: { 335 | ...(vnode.data || {}), 336 | style: { 337 | ...(vnode.data.style || {}), 338 | ...styles 339 | } 340 | } 341 | }; 342 | } 343 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": 4 | { 5 | "module": "commonjs", 6 | "moduleResolution": "node", 7 | "sourceMap": true, 8 | "target": "ES5", 9 | "outDir": "build/cjs", 10 | "lib": ["DOM", "ES6", "ES5"] 11 | }, 12 | "exclude": [ 13 | "node_modules", 14 | "build" 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "rules": { 3 | "align": [ 4 | false, 5 | "parameters", 6 | "arguments", 7 | "statements" 8 | ], 9 | "ban": false, 10 | "class-name": true, 11 | "comment-format": [ 12 | false 13 | ], 14 | "curly": true, 15 | "eofline": true, 16 | "forin": true, 17 | "indent": [ 18 | true, 19 | "spaces" 20 | ], 21 | "interface-name": false, 22 | "jsdoc-format": true, 23 | "label-position": true, 24 | "label-undefined": true, 25 | "max-line-length": [ 26 | false, 27 | 100 28 | ], 29 | "member-access": true, 30 | "member-ordering": [ 31 | true, 32 | "public-before-private", 33 | "static-before-instance", 34 | "variables-before-functions" 35 | ], 36 | "no-any": false, 37 | "no-arg": true, 38 | "no-bitwise": true, 39 | "no-conditional-assignment": true, 40 | "no-consecutive-blank-lines": true, 41 | "no-console": [ 42 | true, 43 | "debug", 44 | "info", 45 | "time", 46 | "timeEnd", 47 | "trace" 48 | ], 49 | "no-construct": true, 50 | "no-constructor-vars": false, 51 | "no-debugger": true, 52 | "no-duplicate-key": true, 53 | "no-duplicate-variable": true, 54 | "no-empty": false, 55 | "no-eval": true, 56 | "no-inferrable-types": false, 57 | "no-internal-module": true, 58 | "no-null-keyword": true, 59 | "no-require-imports": false, 60 | "no-shadowed-variable": true, 61 | "no-string-literal": false, 62 | "no-switch-case-fall-through": true, 63 | "no-trailing-whitespace": true, 64 | "no-unreachable": true, 65 | "no-unused-expression": true, 66 | "no-unused-variable": false, 67 | "no-use-before-declare": true, 68 | "no-var-keyword": true, 69 | "no-var-requires": false, 70 | "object-literal-sort-keys": false, 71 | "one-line": [ 72 | true, 73 | "check-catch", 74 | "check-finally" 75 | ], 76 | "quotemark": [ 77 | true, 78 | "single", 79 | "avoid-escape" 80 | ], 81 | "radix": false, 82 | "semicolon": [true, "always"], 83 | "switch-default": true, 84 | "trailing-comma": [ 85 | true, 86 | { 87 | "singleline": "never" 88 | } 89 | ], 90 | "triple-equals": [ 91 | true, 92 | "allow-null-check" 93 | ], 94 | "typedef": [ 95 | true, 96 | "call-signature", 97 | "parameter", 98 | "property-declaration", 99 | "variable-declaration", 100 | "member-variable-declaration" 101 | ], 102 | "typedef-whitespace": [ 103 | true, 104 | { 105 | "call-signature": "space", 106 | "index-signature": "nospace", 107 | "parameter": "onespace", 108 | "property-declaration": "onespace", 109 | "variable-declaration": "onespace" 110 | }, 111 | { 112 | "call-signature": "onespace", 113 | "index-signature": "onespace", 114 | "parameter": "onespace", 115 | "property-declaration": "onespace", 116 | "variable-declaration": "onespace" 117 | } 118 | ], 119 | "use-strict": [ 120 | false, 121 | "check-module", 122 | "check-function" 123 | ], 124 | "variable-name": [ 125 | true, 126 | "check-format", 127 | "ban-keywords" 128 | ], 129 | "whitespace": [ 130 | true, 131 | "check-branch", 132 | "check-decl", 133 | "check-operator", 134 | "check-separator", 135 | "check-type" 136 | ] 137 | } 138 | } 139 | --------------------------------------------------------------------------------