Fork me on GitHub
#clojurescript
<
2018-09-09
>
kwladyka08:09:25

According to https://clojurescript.org/guides/webpack I am trying to figure out how things like https://github.com/cljsjs/packages/tree/master/material-ui pack node dependencies to NOT require each file separately like: @material-ui/icons/Menu, @material-ui/icons/AccountCircle, @material-ui/icons/Terrain. Material-ui has also separate files for each colours etc. Dependencies like this will make webpack solution so huge with all files in only 1 dependency. Can I do something with this?

pesterhazy08:09:34

@kwladyka I don’t understand. Can’t you do what JS people do? Surely 90%+ of material-ui users rely on Webpack

kwladyka08:09:20

what do you mean by what JS people do?

kwladyka08:09:07

In shadow-cljs I can just use ["@material-ui/icons/Menu" :default Menu] for whatever file I need. But with https://clojurescript.org/guides/webpack I have to : add each file to src/js/index.js, project.clj, and then I can require it. With 30 files from 1 dependency it will be huge.

kwladyka08:09:13

Maybe I miss something

thheller08:09:25

@kwladyka no you are not missing anything. webpack is very manual at this point.

🍻 4
kwladyka08:09:31

How this https://github.com/cljsjs/packages/tree/master/material-ui work then? I don't see it import each file separately

thheller08:09:37

it just imports everything via the root require

thheller08:09:51

"@material-ui/core" or whatever the require is

thheller08:09:06

it was 1.2mb of JS the last time I checked

kwladyka08:09:45

oh so it is very not optimised

thheller08:09:56

not at all in fact (besides being minified)

kwladyka08:09:07

Whole file will be always downloaded in web browsers as I understand

thheller08:09:52

yes is you include the icons I think you get about 2mb of JS

kwladyka08:09:10

ok, that is not something what I would like to use, thx

pesterhazy09:09:40

@kwladyka yes it's a bit of work but you only have to do it once right?

pesterhazy09:09:57

Figwheel Main's new npm option (not to be confused with cljs compiler's npm-deps) autogenerates the foreign-libs stanza from your library.js. See e.g.: https://github.com/pesterhazy/cljs-spa-example/pull/4/files

pesterhazy09:09:15

So it reduces duplication down to 2x

pesterhazy09:09:40

Personally this bit of extra work is a cost I'm happy to pay for being 100% sure that any npm lib will work in my project

kwladyka12:09:07

@pesterhazy in theory once, but in practice during developing new project many times to find right solution and dependencies (files in dependencies also).

kwladyka12:09:59

I am more in consider shadow-cljs vs webpack solution, than cljsjs.

kwladyka12:09:11

I would like to check this figwheel npm solution

kwladyka12:09:09

I am trying to figure out right solution for a team. It is different then choose solution for me. People don't know all solutions and I have to be able to answer for all questions and be confident with it.

kwladyka12:09:38

Also I am doing it for myself 🙂

p4ulcristian12:09:31

Hello clojurians

p4ulcristian12:09:01

How would you store stateful JS calls like "(.dropdown js/UIkit "#id ")"

p4ulcristian12:09:27

I want to use .hide() or .show() on this method

p4ulcristian12:09:36

but the return value is undefined

p4ulcristian12:09:51

and the dropdown won't change because it's immutable

p4ulcristian12:09:44

but If I store it in an atom, how can I update it? using .show() on it only makes it undefined with (reset! the-dropdown (.show @the-dropdown))

p4ulcristian12:09:07

Any help appreciated

pvillegas1212:09:07

@paul931224 you might need to get a handle on the element #id to call those methods

p4ulcristian12:09:52

I can call it, but it works only once, here is my stackoverflow question https://stackoverflow.com/questions/52237173/reagent-uikit-dropdown-use/52237355#52237355

p4ulcristian12:09:07

what do you mean by getting a handle on it? @pvillegas12

pvillegas1212:09:42

Try to call (.dropdown js/UIkit "#id") when you initialize the component, apart from the show hide invocations

p4ulcristian12:09:31

that's what I did in the stackoverflow question, still it works only once

p4ulcristian12:09:52

I have three buttons, one initializes, second shows, third hides the element

pvillegas1212:09:32

The atom route is not the way

p4ulcristian12:09:49

I guess it's not, but what is the way? 😕

pvillegas1212:09:06

Try using (reagent/create-class and implementing the :component-did-mount lifecycle hook

pvillegas1212:09:24

call (.dropdown js/UIkit "#id") there and in the buttons as you have it in SO

p4ulcristian12:09:38

I tried that also, still the same. And if I make it from :component-did-mount I still have to store it somewhere, so I can call .show() on it

pvillegas1212:09:35

@paul931224 the docs https://getuikit.com/docs/dropdown#javascript apparently do not require you to store a handle to the return value of (.dropdown js/UIkit "#id")

p4ulcristian12:09:48

well, that's right, and it works in chrome console, but somehow .show() makes some state changes, because from clojurescript it doesn't work only once.

michael_teter15:09:37

Hi All. I'm getting started with re-natal and Android (developing in Windows). After some minor struggles, I have the basic starter app running on my Android simulator. However, when I make a change to the db.cljs file (just changing the text of the :greeting), I see two warnings at the bottom of my app, instead of seeing the app contents change. I expected to see the text on the app change, but instead I got warnings like this: re-frame overwriting event handler for ...

michael_teter15:09:45

Since I'm completely new at this, and my Google searching for this isn't turning up explanations, I'm hoping someone can explain what's happening or what I'm doing wrong.

michael_teter15:09:44

If I close the app on the simulator and relaunch the app, I see the updated text in the greeting. But I was under the impression that I could save a code file and there would be an automatic recompile/update within the running app...

mfikes16:09:19

@michael_teter If you look at your namespace requires, you’ll probably see that your event handler namespace is being re-compiled because it directly or indirectly requires your db namespace. The “overwriting event handler” warning is from re-frame and is displayed as a consequence of this re-compilation. I’m speculating that the warning may be causing the other behavior your are seeing.

michael_teter16:09:44

@mfikes I'm just getting started, so I have only done the basic first steps from the re-frame github readme. Then I make one change in the text of the greeting, and I expect my app contents to change in my simulator. So I wouldn't even know yet which file I need to perhaps change to fix a namespace problem.

michael_teter16:09:45

This, plus the fact that the basic steps in that readme did not work, make me wish for a current tutorial or guide for doing this. I'm sure people are doing it in production (for a living even), but Google makes it look like nobody has cared about this stuff since 2016 for the most part. So I wonder if I'm facing a cliff to climb over before I can be modestly productive here...

john16:09:32

What about other files, like those involved in the view? When you change those, do the same errors occur? Or are you able to make a change any file and see an intended effect?

michael_teter16:09:29

@john interesting. In this basic app there are only 5 cljs files in total: 1 android specific, 1 ios, and 3 shared. It was the shared db.cjls I was changing that would cause warnings and not update the screen. However, changing the text of a button in the android specific core.cljs file did update the screen (button text)

michael_teter16:09:44

maybe the starter app generated by re-natal is incorrect

john16:09:42

It's possible that the place where you are changing something... doesn't expect to be changed at run time... How are you changing the text of the greeting?

michael_teter16:09:17

Like I said, it's such a simple app that there's almost no clojure code.

michael_teter16:09:02

It's a one page app with a text area on a view, and that text area gets its value from the db (state)

michael_teter16:09:22

so I change the db.cljs file where it defines the value for that :greeting key

john16:09:06

Is the db defined with a defonce?

michael_teter16:09:32

I'm so clueless here I may be wasting your time... because I find it quite odd that this appears to be setting up the views separately for iOS vs Android, and I thought surely something that's just structural view definition would be shared between both platforms.

michael_teter16:09:20

(ns new-app.db
  (:require [clojure.spec.alpha :as s]))

;; spec of app-db
(s/def ::greeting string?)
(s/def ::app-db
  (s/keys :req-un [::greeting]))

;; initial state of app-db
(def app-db {:greeting "Hello blah Clojure in Android!"})

michael_teter16:09:31

the whole db.cljs.

mfikes16:09:44

Does the events namespace require that one?

deliciousowl16:09:48

and you change the :greeting "hello blah" and it doesn't change?

mfikes16:09:16

So that would cause the events namespace to re-compile

michael_teter16:09:26

changing that greeting value results in two warnings in the app and no display change

john16:09:59

What are the exact warnings?

michael_teter16:09:28

sorry, can't copy/paste the text 😕

mfikes16:09:44

Yeah, that’s a consequence of Figwheel recompiling your event namespace

michael_teter16:09:58

wouldn't that be desired?

mfikes16:09:27

Generally, I would agree, but there is something subtle going on here…

michael_teter16:09:39

if I expand the stacktrace, it's quite long

michael_teter16:09:23

but the message I posted is the final part of the stacktrace, and the previous stuff appears to be .js stuff related to figwheel communication

michael_teter16:09:11

obviously my total lack of understanding about cljsrn is a problem here, but I have struggled to find any complete tutorial or guide

michael_teter16:09:03

and attempting to build some of the re-natal examples has been a challenge that I gave up on. too many version differences in tooling since those demo apps were created

john16:09:04

ns is null because it's a repl?

michael_teter16:09:31

I don't know. I haven't messed with the repl. it's just sitting there. I only changed a file and saved it

john16:09:43

I've never used re-natal

mfikes17:09:17

Nah, there is just an un-namespaced key :initialize-db

michael_teter17:09:40

I'm open to whatever works. It's just because some of the articles I've read that are fairly recent state that re-natal is a good way to get started with cljs and android

john17:09:59

yeah, I guess initialize-db will pass on every recompile

mfikes17:09:14

Well, normally you wouldn’t be repeatedly changing the initial state of your db during dev. So, while what you are experiencing is less than ideal, it is not the normal flow.

michael_teter17:09:35

ok. So the minimal example is setup in a way that is apparently atypical

john17:09:07

Normally, you stick your db on a defonce and you prevent your db from reloading on changes

michael_teter17:09:13

does anyone know anyone who writes about this stuff? I'd like to educate myself if I could find something... my search-fu has led me nowhere.

john17:09:14

so that you don't wipe out your data

mfikes17:09:56

Well, did you find something that suggested changing the initial state of the DB and expecting it to render it? (I don’t think that is part of the normal dev flow.)

michael_teter17:09:21

it just touted the wonders of being able to make changes to code and see them in the app without restarting the app 🙂

michael_teter17:09:37

and since there's so little code, I picked the only text field and attempted to change it.

mfikes17:09:06

Yeah, I think you discovered its Achilles heel. 🙂

john17:09:26

You'd usually change the db programmatically, via in app events

mfikes17:09:37

In the REPL upon startup it suggests making a DB change like this

(dispatch [:set-greeting "Hello Native World!"])

john17:09:02

But I think ya gotta stick that db in an atom behind a defonce

john17:09:24

maybe that gets done elsewhere

michael_teter17:09:52

@mfikes my repl didn't. it said plenty, but I don't believe it suggested that.

mfikes17:09:16

Oh, sorry not in the REPL, but when running re-natal init FutureApp

michael_teter17:09:58

could have been. that was long ago, and I didn't save the output of everything. I'll go make a new app and pay more attention

michael_teter17:09:41

Thanks. I did obviously read this line from the output: "Changes you make via the REPL or by changing your .cljs files should appear live."

mfikes17:09:01

Yeah, but not all changes evidently

mfikes17:09:03

It is not magic

john17:09:33

by some definitions of magic 😉

mfikes17:09:37

If you change the layout of the UI those changes will update in a live fashion

mfikes17:09:43

There are entities in the system that are hooked up to watch for changes in the DB and re-render.

michael_teter17:09:32

I'm going to have to do some research. I'm a little surprised already that the layout is defined twice - once for iOS and once for Android. I thought the primary benefit of RN was a great amount of code sharing (pushing the unique code to just the special hardware API access). This appears to have nearly the same code in two files - one for each platform.

michael_teter17:09:53

Anyway, I thank you gentlemen for getting me past this confusion. I should be able to stumble forward now.

mfikes17:09:55

Yeah, a lot of that can be factored into a single file

john17:09:32

Yeah, I'm guessing the react-native ecosystem partitions a bit, so they're giving you separate files to start off with

mfikes17:09:32

I have a fairly large app and most of it is shared code, and only a tiny bit is Android vs iOS.

michael_teter17:09:16

but apparently. no touching db

mfikes17:09:35

You can change the DB’s value. Just not replace it completely. (Then you end up with a new DB.)

michael_teter17:09:35

well, not permanently. I can dispatch in repl

mfikes17:09:16

As John suggested, defonce is often used to even protect against re-defining it

michael_teter17:09:36

that didn't seem to have any effect. same warnings as before. but now that I know not to change that file, I won't.

mfikes17:09:56

Ahh, the actual app-db atom is down in re-frame or reagent somewhere

mfikes17:09:39

Yeah, I would just set up some reasonable initial app-db state and run with that

john17:09:16

Maybe that's a limitation of re-natal? To get around it, you could potentially define an init namespace and function that fills up the db with some initial data after the app has loaded, then edit that fill data and it'll update your view. But it'll clobber your db if you don't structure things right.

mfikes17:09:30

@michael_teter There is a #cljsrn channel by the way, with folk who focus on that stack

michael_teter17:09:47

@mfikes Ahh, I didn't see that in my list. Thanks

michael_teter17:09:30

Thanks very much @john and @mfikes. I appreciate your time and guidance.

👍 4
john17:09:42

np let us know if you make anything cool!

michael_teter17:09:26

Willdo. It's going to be a stack-oriented task/activity tracker... something to help me remember everything else I was mid-process doing when I got interrupted and began a new task 🙂

👍 8
mfikes17:09:10

Yep, I hate it when something urgent happens and you have to unwind your entire stack.

mfikes17:09:26

At least that’s what it feels like to me, as my stack is ephemeral and short-lived 🙂 Maybe I need your app.

michael_teter17:09:08

well, I no longer work in corporate environments (offices) where I get as many interruptions. but it would be very useful when trying to show why so little gets done

michael_teter17:09:39

because most people that come to me with a "small thing" don't realize the models in my head that evaporate while I'm helping them find their archive folder in Outlook...

john17:09:07

damn pst files

michael_teter17:09:28

Eventually there will be bells and whistles, such as stack limitations - forcing me to cancel a task that was in progress if I wish to switch to a new one.

michael_teter17:09:41

as well as auto-canceling tasks

michael_teter17:09:44

lots of possibilities

john17:09:00

Here's a fun app challenge idea: Make a self-host clojurescript website that is capable of producing a downloadable static zip archive of itself, such that unzipping the archive and opening the index results in another version of itself.

john17:09:36

Bonus points for browserifying macchiato into a service worker and turning it into a static site generator that can self generate

john17:09:25

Extra extra bonus points for saving to github via authentication

p4ulcristian17:09:55

Guys, I really don't want to seem like a spammer but I put up my question again 😄 I have a javascript function which makes an object. I use a function on it which will change the state of the object, but the return value of the function is undefined. How do I let the function change the object so I can get the desired result? I tried to put the object in an atom, but if I want to swap! the value of it it will undefined, it is really important for my project, please help 🙂

john17:09:07

@paul931224 Sure, what's the code look like?

p4ulcristian17:09:23

It works fine from Chrome Console, but I can't make it usable in ClojureScript, because it shows the dropdown once, but because the state is not changed in the object, it won't work for the second time, neither show() or the hide() function 😕

p4ulcristian17:09:46

I insist on solving it because I feel like I will have this problem with a lot of third party javascript libraries. And because of the deadline of course 😄

john17:09:51

Have you thrown some printlns in those handlers, to see if they're firing every time you click?

p4ulcristian17:09:54

yes, and they do, I did (.log js/console "Try again"), and it got printed everytime

john17:09:25

Is UIKit a react thing?

pesterhazy17:09:51

You're not making things easier for yourself by learning React/Reagent and using a DOM-manipulation library at the same time - direct DOM manipulation and React are polar opposite in the UI philosophy spectrum

pesterhazy17:09:17

It's possible but more of an advanced topic (in React or Reagent)

p4ulcristian17:09:27

UIkit is a bootstrap library, the function what I use is to be found here: https://getuikit.com/docs/dropdown#javascript

pesterhazy17:09:47

React likes to have absolute authority over the dom elements it controls. Anything that uses an #id is a code smell in React.

p4ulcristian17:09:04

Yes, but I use both from a year now, and it works beautifully together, but there are some exceptions like my problem. And it works from Chrome Console also. I am not very good at CSS, that's why I need to use things like this for complex UI elements. Before UIkit I used http://Materializecss.com. I believe it's not bad using it on an isolated level, of course I don't delete nodes, or everwrite anything, just toggling things, making grids, animations with classes

p4ulcristian17:09:57

For example I use it on this page: https://ironrainbow.hu/coating on the left side panel, on the button called "Járművek", and I just want to show and hide the dropdown with javascript, so it is not bound to the button

john17:09:04

What happens when you just do (.show (.dropdown js/UIkit "#my-id")) from the repl?

p4ulcristian17:09:07

it works once, then I can't show it again. But the (.log js/console "Hello there") works everytime I push the button

john17:09:48

But, when you're at the repl, you can't programmatically .show and .hide the menu repeatedly?

p4ulcristian17:09:29

nope, only from the Chrome Console

john17:09:55

Maybe your problem isn't related to Reagent then

thiru17:09:57

Is it possible to change to a different namespace just after entering a clojurescript REPL? E.g. maybe via some option through a cljs.main CLI option?

p4ulcristian18:09:18

I guess my problem is related to the function not changing the object because it is immutable when I make it with (.dropdown js/UIkit "#id "). I don't think it is related to Reagent either, the comment on stackoverflow said it is related to .show() being a stateful method, and I didn't have to deal with things like this till now @john

thiru19:09:04

Hmm I don't see that option there

john19:09:23

initns rather

thiru19:09:53

not seeing that either

thiru19:09:03

from the link you sent anyway

john19:09:07

(defn repl*
  [repl-env {:keys [init inits need-prompt ...

john19:09:17

I'm not sure if the latest figwheel.main or cljs.main expose a method to pass in an init-ns though

john19:09:29

Oh, that's not initns 🙂

thiru19:09:33

no worries.. appreciate the effort 😉

john19:09:15

but basically, if you're willing to take some control of the repl launch process, you can control all those things

john19:09:57

looks hard coded in there

john19:09:28

But there appears to be a clue on how to override it further down in that namespace:

(comment
  (def cenv (env/default-compiler-env))
  (def aenv (assoc-in (ana/empty-env) [:ns :name] 'cljs.user))

  (binding [ana/*cljs-ns* 'cljs.user]
    (env/with-compiler-env cenv
      (comp/with-core-cljs {}
        (fn []
          (source-fn aenv 'cljs.core/first)))))
  )

john19:09:43

So you could spruce up your env and pass in a fixed init

john19:09:18

But it'd probably be easier to user @pesterhazy's method here https://github.com/bhauman/lein-figwheel/issues/614

deliciousowl18:09:31

I thought you would need to swap! myatom (.show)

deliciousowl18:09:36

or am i missing something

deliciousowl18:09:01

but then why would it work the first time

john18:09:04

@paul931224 yeah, I haven't seen much chatter about UIKit in here, so folks might not know what's going on with it.

john18:09:55

Are you defining either .show or .hide or .dropdown on the UIKit object?

p4ulcristian18:09:31

@coinedtalk.show() doesn't work only called on the object made by (.dropdown js/UIkit "#my-id"), and if I swap! to that, it will be undefined, because the return value of .show() is undefined 😕

p4ulcristian18:09:34

@john the (.dropdown js/UIkit "#my-id") makes the object, on which I can call the .show() method, which in javascript will change the object, but in clojurescript it won't because it is immutable 😕

john18:09:54

it's not immutable

john18:09:06

javascript objects are not immutable in clojurescript

deliciousowl18:09:35

what about (.show js/UIkit.dropdown("#category1")) 😄

john18:09:57

and you're calling a method on the js side anyway

deliciousowl18:09:13

my syntax is terrible but uh i think you know what i mean

john18:09:30

You're not really using any immutable constructs when doing (.show (.dropdown js/UIkit "#my-id"))

p4ulcristian18:09:38

@john my bad, so something else must be the problem 😕

p4ulcristian18:09:24

@coinedtalk , john already asked that, if you are thinking about (.show (.dropdown js/UIkit "#my-id")) 😄

john18:09:27

Assuming .show and .dropdown ship with UIKit and it's not some immutable system

p4ulcristian18:09:02

So what can be the problem? what is the difference between using Chrome Console, and Clojurescript Interop?

deliciousowl18:09:05

atom is reagent/atom ?

deliciousowl18:09:22

this really should work 😐

deliciousowl18:09:32

i've triggered elements like this

p4ulcristian18:09:11

@coinedtalk Yes it is, I made [reagent.core :as reagent :refer [atom]], forgot to mention 🙂

john18:09:43

what's this :data-uk-dropdown true about?

deliciousowl18:09:00

Data attribute	Description
data-uk-dropdown	Opens the dropdown on hover and adds a little delay, so the dropdown won't disappear immediately, once you stop hovering the toggle.
data-uk-dropdown="{mode:'click'}"	Opens the dropdown by clicking the toggle. The dropdown closes again on the next click.

p4ulcristian18:09:06

well it is an attribute made my UIkit, so on default it is hidden. I can also make [:div {:data-uk-toggle "target: #my-id"}]

p4ulcristian18:09:55

but I need javascript because I want to make more dropdowns, so when one closes, the other automatically will open, for better user experience

john18:09:20

Ah, I see. I don't think you can mix a React and UIkit component together like that

john18:09:49

At least, not with out some integration. Here's something https://github.com/otissv/react-uikit-dropdown

p4ulcristian18:09:18

but still, why does it work from Chrome Console then? 😕

p4ulcristian18:09:25

and the :data-uk-dropdown and :data-uk-toggle attributes work perfectly with react, only the javascript part is messy, and only from clojurescript 😕

p4ulcristian18:09:21

but it's okay, your help is appreciated anyway, at least I know it is not about immutability 😄

john18:09:30

Try defining your UIkit components outside of your React stuff

john18:09:59

React might be clobbering your classnames and whatnot

deliciousowl18:09:20

React sometimes ignores CSS and other stylings done outside of its scope

deliciousowl18:09:24

from what I've noticed

deliciousowl18:09:39

but it throws a warning

p4ulcristian18:09:49

I can't because they are bonded to the id, that's why I usually initiate them with :component-did-mount reagent lifecycle

john18:09:51

But regardless, (.show (.dropdown js/UIkit "#my-id")) should work repeatedly in a fresh repl. You gotta figure that out first.

p4ulcristian18:09:01

I just got there, and it works from the repl!

p4ulcristian18:09:22

so it just doesn't work from the :on-click event?

p4ulcristian18:09:30

what is the difference? 😕

p4ulcristian18:09:06

it has the desired result multiple times

john18:09:10

(defn uk-drop []
   [:div 
     [:div#my-id {:data-uk-dropdown true} "Some content"]
     [:button 
          {:on-click #(do (println "open") (.show (.dropdown js/UIkit "#my-id")))} 
          "Open"]
     [:button 
          {:on-click #(do (println "close") (.hide (.dropdown js/UIkit "#my-id")))} 
          "Close"])
And when you use that? ^

p4ulcristian18:09:27

After every browser refresh it works once, then it doesn't, in spite of the "open" string gets printed everytime

john18:09:37

Go to the element in your elements tab of your developer tools and go to the #my-id object and inspect what the structures do when you click

john18:09:14

If stuff is getting clobbered, you may have to take this route https://github.com/otissv/react-uikit-dropdown

p4ulcristian18:09:45

it works the same as from the repl, but it does it only once. one show(), then one hide(), then show() won't work again, unless I use it from repl

p4ulcristian18:09:53

@john okay, I will go with that, the only thing I don't understand now is the difference from starting a function from the repl, compared to an event 😄

deliciousowl18:09:17

does it change the class of the individual elements? Uikit seems to have things like class = "uk-dropdown-close" and "uk-open"

john18:09:36

It can sometimes clobber stuff. That's one downside of these big frameworks

p4ulcristian18:09:58

@coinedtalk yes it does, for the first time, at least from the :on-click handler

p4ulcristian18:09:03

@john well this project is one year old, I just got a bugfix list for user experience, so I have to stick to this, but I think I will write my own dropdown in clojurescript, it can't be that hard 😄

deliciousowl18:09:04

from the reagent tutorials they trigger elements like this, (.click (js/$ (reagent/dom-node this))

deliciousowl18:09:32

probably won't make a difference yeah at this point better to make your own 😄

john18:09:02

How about attaching your handlers to #my-id outside of the reagent component?

john18:09:37

Well, to the buttons rather

john18:09:09

Try to take the interaction out of the react lifecycle

john18:09:08

You know, in the top level of the namespace, rub some .getElementByIds and some .addEventListener "click" on it

john18:09:24

grabbin some grub. Catch y'all later!

p4ulcristian18:09:13

@john Thank you for your time, I will try it as well! Have a good night!

p4ulcristian18:09:44

@coinedtalk Well, it didn't make a difference, so I will make my own, after giving up in an hour 😄

deliciousowl19:09:08

you using uikit3?

deliciousowl19:09:58

let me know in case you figure it out, I'm working on react apps as well and want to avoid any pitfalls

p4ulcristian19:09:46

yes I use uikit3 and I will, deliciousowl now in my notes 😄

p4ulcristian22:09:23

@coinedtalk I solved it, by I don't know how and why. with re-frame, (dispatch [:dropdown-event]) it worked for unknows reasons

p4ulcristian22:09:50

here is also another approach which I didn't tried yet, also with re-frame https://github.com/Day8/re-frame/blob/master/docs/Using-Stateful-JS-Components.md