Fix toggle field casting to boolean when field is hidden - #6348

Merged
jasonvarga merged 3 commits into
3.3from
fix/toggle-casting-to-boolean-when-hidden
Jul 21, 2022
Merged

Fix toggle field casting to boolean when field is hidden#6348
jasonvarga merged 3 commits into
3.3from
fix/toggle-casting-to-boolean-when-hidden

Conversation

@jesseleite

@jesseleitejesseleite commented Jul 19, 2022

Copy link
Copy Markdown
Contributor

Ensure the toggle fieldtype only casts to a saveable boolean when the value is submitted. When conditionally hidden, it should save neither true nor false, according to our docs on conditional field data flow.

Fixes#6347.

jesseleiteand others added 2 commits July 19, 2022 11:02
This reverts commit 9225d2a.
All the values _would_ be submitted in reality, but the test wasn't submitting what would actually be happening.
@jasonvarga
jasonvarga merged commit f5e0e8e into 3.3Jul 21, 2022
@jasonvarga
jasonvarga deleted the fix/toggle-casting-to-boolean-when-hidden branch July 21, 2022 18:33
@aerni

Copy link
Copy Markdown
Contributor

@jesseleite This issue still persists for me. I'm on the latest version. It might be due to nesting. My toggle field is in a Grid that's in a Grid that's in a Replicator.

@jesseleite

Copy link
Copy Markdown
ContributorAuthor

@aerni I can't reproduce this with a toggle in a grid in a replicator. Could you provide more details what is happening for you, with steps to reproduce?

In my test here... When the toggle is hidden, nothing is saved. If the toggle is visible, the proper value of the toggle gets saved. This is the expected behaviour, as described in description and docs link above.

@aerni

Copy link
Copy Markdown
Contributor

I'll try to reproduce the issue on a fresh site and share the repo with you.

@aerni

Copy link
Copy Markdown
Contributor

Alright. I was able to reproduce the issue.

  1. Clone this repo: https://github.com/aerni/toggle-issue
  2. Open the home page in the CP
  3. Open the Show more settings revealer in the button grid
  4. Notice that there is no Download toggle, so it shouldn't save anything. But download: false is still saved to file.
  5. The download toggle is only visible and should only be saved if you select Asset as the Link Type.

Let me know if you need more info.

@jasonvarga

Copy link
Copy Markdown
Member

Try taking out the default: false from the download field config.

@aerni

Copy link
Copy Markdown
Contributor

I actually need it to default: true when the toggle is visible. I just have it set to false now because I was testing if that made a difference.

@jesseleite

Copy link
Copy Markdown
ContributorAuthor

@aerni I notice you are hiding the download toggle using a revealer. Any time a field is hidden via a revealer, data flow behaviour changes to always submit those hidden-by-revealer fields.

CleanShot 2022-07-27 at 14 29 12

@aerni

Copy link
Copy Markdown
Contributor

Yeah, I understand that. However, the download toggle has multiple conditions. One condition is triggered by the link_type which is a select fieldtype. So in this case it should still be removed from the data flow.

@jesseleite

Copy link
Copy Markdown
ContributorAuthor

@aerni Yeah I hear you now. This has nothing to do with toggle field specifically, or nesting within grids for that matter. This would happen on any field hidden by a revealer when multiple field conditions are set.

Need to think about whether this might affect another use case negatively or not, but maybe I can improve revealer handling when multiple conditions are being evaluated 👍

Feel free to follow along here: #6385

@aerni

Copy link
Copy Markdown
Contributor

Ok, cool. Thanks for opening an issue 👍

@jesseleite

Copy link
Copy Markdown
ContributorAuthor

No problem, good find!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Conditionals on Toggle-Fieldtype save wrong default value

3 participants

@jesseleite@aerni@jasonvarga
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Fix toggle field casting to boolean when field is hidden - #6348

Merged
jasonvarga merged 3 commits into
3.3from
fix/toggle-casting-to-boolean-when-hidden
Jul 21, 2022
Merged

Fix toggle field casting to boolean when field is hidden#6348
jasonvarga merged 3 commits into
3.3from
fix/toggle-casting-to-boolean-when-hidden

Conversation

@jesseleite

@jesseleitejesseleite commented Jul 19, 2022

Copy link
Copy Markdown
Contributor

Ensure the toggle fieldtype only casts to a saveable boolean when the value is submitted. When conditionally hidden, it should save neither true nor false, according to our docs on conditional field data flow.

Fixes#6347.

jesseleiteand others added 2 commits July 19, 2022 11:02
This reverts commit 9225d2a.
All the values _would_ be submitted in reality, but the test wasn't submitting what would actually be happening.
@jasonvarga
jasonvarga merged commit f5e0e8e into 3.3Jul 21, 2022
@jasonvarga
jasonvarga deleted the fix/toggle-casting-to-boolean-when-hidden branch July 21, 2022 18:33
@aerni

Copy link
Copy Markdown
Contributor

@jesseleite This issue still persists for me. I'm on the latest version. It might be due to nesting. My toggle field is in a Grid that's in a Grid that's in a Replicator.

@jesseleite

Copy link
Copy Markdown
ContributorAuthor

@aerni I can't reproduce this with a toggle in a grid in a replicator. Could you provide more details what is happening for you, with steps to reproduce?

In my test here... When the toggle is hidden, nothing is saved. If the toggle is visible, the proper value of the toggle gets saved. This is the expected behaviour, as described in description and docs link above.

@aerni

Copy link
Copy Markdown
Contributor

I'll try to reproduce the issue on a fresh site and share the repo with you.

@aerni

Copy link
Copy Markdown
Contributor

Alright. I was able to reproduce the issue.

  1. Clone this repo: https://github.com/aerni/toggle-issue
  2. Open the home page in the CP
  3. Open the Show more settings revealer in the button grid
  4. Notice that there is no Download toggle, so it shouldn't save anything. But download: false is still saved to file.
  5. The download toggle is only visible and should only be saved if you select Asset as the Link Type.

Let me know if you need more info.

@jasonvarga

Copy link
Copy Markdown
Member

Try taking out the default: false from the download field config.

@aerni

Copy link
Copy Markdown
Contributor

I actually need it to default: true when the toggle is visible. I just have it set to false now because I was testing if that made a difference.

@jesseleite

Copy link
Copy Markdown
ContributorAuthor

@aerni I notice you are hiding the download toggle using a revealer. Any time a field is hidden via a revealer, data flow behaviour changes to always submit those hidden-by-revealer fields.

CleanShot 2022-07-27 at 14 29 12

@aerni

Copy link
Copy Markdown
Contributor

Yeah, I understand that. However, the download toggle has multiple conditions. One condition is triggered by the link_type which is a select fieldtype. So in this case it should still be removed from the data flow.

@jesseleite

Copy link
Copy Markdown
ContributorAuthor

@aerni Yeah I hear you now. This has nothing to do with toggle field specifically, or nesting within grids for that matter. This would happen on any field hidden by a revealer when multiple field conditions are set.

Need to think about whether this might affect another use case negatively or not, but maybe I can improve revealer handling when multiple conditions are being evaluated 👍

Feel free to follow along here: #6385

@aerni

Copy link
Copy Markdown
Contributor

Ok, cool. Thanks for opening an issue 👍

@jesseleite

Copy link
Copy Markdown
ContributorAuthor

No problem, good find!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Conditionals on Toggle-Fieldtype save wrong default value

3 participants

@jesseleite@aerni@jasonvarga
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Fix toggle field casting to boolean when field is hidden - #6348

Merged
jasonvarga merged 3 commits into
3.3from
fix/toggle-casting-to-boolean-when-hidden
Jul 21, 2022
Merged

Fix toggle field casting to boolean when field is hidden#6348
jasonvarga merged 3 commits into
3.3from
fix/toggle-casting-to-boolean-when-hidden

Conversation

@jesseleite

@jesseleitejesseleite commented Jul 19, 2022

Copy link
Copy Markdown
Contributor

Ensure the toggle fieldtype only casts to a saveable boolean when the value is submitted. When conditionally hidden, it should save neither true nor false, according to our docs on conditional field data flow.

Fixes#6347.

jesseleiteand others added 2 commits July 19, 2022 11:02
This reverts commit 9225d2a.
All the values _would_ be submitted in reality, but the test wasn't submitting what would actually be happening.
@jasonvarga
jasonvarga merged commit f5e0e8e into 3.3Jul 21, 2022
@jasonvarga
jasonvarga deleted the fix/toggle-casting-to-boolean-when-hidden branch July 21, 2022 18:33
@aerni

Copy link
Copy Markdown
Contributor

@jesseleite This issue still persists for me. I'm on the latest version. It might be due to nesting. My toggle field is in a Grid that's in a Grid that's in a Replicator.

@jesseleite

Copy link
Copy Markdown
ContributorAuthor

@aerni I can't reproduce this with a toggle in a grid in a replicator. Could you provide more details what is happening for you, with steps to reproduce?

In my test here... When the toggle is hidden, nothing is saved. If the toggle is visible, the proper value of the toggle gets saved. This is the expected behaviour, as described in description and docs link above.

@aerni

Copy link
Copy Markdown
Contributor

I'll try to reproduce the issue on a fresh site and share the repo with you.

@aerni

Copy link
Copy Markdown
Contributor

Alright. I was able to reproduce the issue.

  1. Clone this repo: https://github.com/aerni/toggle-issue
  2. Open the home page in the CP
  3. Open the Show more settings revealer in the button grid
  4. Notice that there is no Download toggle, so it shouldn't save anything. But download: false is still saved to file.
  5. The download toggle is only visible and should only be saved if you select Asset as the Link Type.

Let me know if you need more info.

@jasonvarga

Copy link
Copy Markdown
Member

Try taking out the default: false from the download field config.

@aerni

Copy link
Copy Markdown
Contributor

I actually need it to default: true when the toggle is visible. I just have it set to false now because I was testing if that made a difference.

@jesseleite

Copy link
Copy Markdown
ContributorAuthor

@aerni I notice you are hiding the download toggle using a revealer. Any time a field is hidden via a revealer, data flow behaviour changes to always submit those hidden-by-revealer fields.

CleanShot 2022-07-27 at 14 29 12

@aerni

Copy link
Copy Markdown
Contributor

Yeah, I understand that. However, the download toggle has multiple conditions. One condition is triggered by the link_type which is a select fieldtype. So in this case it should still be removed from the data flow.

@jesseleite

Copy link
Copy Markdown
ContributorAuthor

@aerni Yeah I hear you now. This has nothing to do with toggle field specifically, or nesting within grids for that matter. This would happen on any field hidden by a revealer when multiple field conditions are set.

Need to think about whether this might affect another use case negatively or not, but maybe I can improve revealer handling when multiple conditions are being evaluated 👍

Feel free to follow along here: #6385

@aerni

Copy link
Copy Markdown
Contributor

Ok, cool. Thanks for opening an issue 👍

@jesseleite

Copy link
Copy Markdown
ContributorAuthor

No problem, good find!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Conditionals on Toggle-Fieldtype save wrong default value

3 participants

@jesseleite@aerni@jasonvarga
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Fix toggle field casting to boolean when field is hidden - #6348

Merged
jasonvarga merged 3 commits into
3.3from
fix/toggle-casting-to-boolean-when-hidden
Jul 21, 2022
Merged

Fix toggle field casting to boolean when field is hidden#6348
jasonvarga merged 3 commits into
3.3from
fix/toggle-casting-to-boolean-when-hidden

Conversation

@jesseleite

@jesseleitejesseleite commented Jul 19, 2022

Copy link
Copy Markdown
Contributor

Ensure the toggle fieldtype only casts to a saveable boolean when the value is submitted. When conditionally hidden, it should save neither true nor false, according to our docs on conditional field data flow.

Fixes#6347.

jesseleiteand others added 2 commits July 19, 2022 11:02
This reverts commit 9225d2a.
All the values _would_ be submitted in reality, but the test wasn't submitting what would actually be happening.
@jasonvarga
jasonvarga merged commit f5e0e8e into 3.3Jul 21, 2022
@jasonvarga
jasonvarga deleted the fix/toggle-casting-to-boolean-when-hidden branch July 21, 2022 18:33
@aerni

Copy link
Copy Markdown
Contributor

@jesseleite This issue still persists for me. I'm on the latest version. It might be due to nesting. My toggle field is in a Grid that's in a Grid that's in a Replicator.

@jesseleite

Copy link
Copy Markdown
ContributorAuthor

@aerni I can't reproduce this with a toggle in a grid in a replicator. Could you provide more details what is happening for you, with steps to reproduce?

In my test here... When the toggle is hidden, nothing is saved. If the toggle is visible, the proper value of the toggle gets saved. This is the expected behaviour, as described in description and docs link above.

@aerni

Copy link
Copy Markdown
Contributor

I'll try to reproduce the issue on a fresh site and share the repo with you.

@aerni

Copy link
Copy Markdown
Contributor

Alright. I was able to reproduce the issue.

  1. Clone this repo: https://github.com/aerni/toggle-issue
  2. Open the home page in the CP
  3. Open the Show more settings revealer in the button grid
  4. Notice that there is no Download toggle, so it shouldn't save anything. But download: false is still saved to file.
  5. The download toggle is only visible and should only be saved if you select Asset as the Link Type.

Let me know if you need more info.

@jasonvarga

Copy link
Copy Markdown
Member

Try taking out the default: false from the download field config.

@aerni

Copy link
Copy Markdown
Contributor

I actually need it to default: true when the toggle is visible. I just have it set to false now because I was testing if that made a difference.

@jesseleite

Copy link
Copy Markdown
ContributorAuthor

@aerni I notice you are hiding the download toggle using a revealer. Any time a field is hidden via a revealer, data flow behaviour changes to always submit those hidden-by-revealer fields.

CleanShot 2022-07-27 at 14 29 12

@aerni

Copy link
Copy Markdown
Contributor

Yeah, I understand that. However, the download toggle has multiple conditions. One condition is triggered by the link_type which is a select fieldtype. So in this case it should still be removed from the data flow.

@jesseleite

Copy link
Copy Markdown
ContributorAuthor

@aerni Yeah I hear you now. This has nothing to do with toggle field specifically, or nesting within grids for that matter. This would happen on any field hidden by a revealer when multiple field conditions are set.

Need to think about whether this might affect another use case negatively or not, but maybe I can improve revealer handling when multiple conditions are being evaluated 👍

Feel free to follow along here: #6385

@aerni

Copy link
Copy Markdown
Contributor

Ok, cool. Thanks for opening an issue 👍

@jesseleite

Copy link
Copy Markdown
ContributorAuthor

No problem, good find!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Conditionals on Toggle-Fieldtype save wrong default value

3 participants

@jesseleite@aerni@jasonvarga
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Fix toggle field casting to boolean when field is hidden - #6348

Merged
jasonvarga merged 3 commits into
3.3from
fix/toggle-casting-to-boolean-when-hidden
Jul 21, 2022
Merged

Fix toggle field casting to boolean when field is hidden#6348
jasonvarga merged 3 commits into
3.3from
fix/toggle-casting-to-boolean-when-hidden

Conversation

@jesseleite

@jesseleitejesseleite commented Jul 19, 2022

Copy link
Copy Markdown
Contributor

Ensure the toggle fieldtype only casts to a saveable boolean when the value is submitted. When conditionally hidden, it should save neither true nor false, according to our docs on conditional field data flow.

Fixes#6347.

jesseleiteand others added 2 commits July 19, 2022 11:02
This reverts commit 9225d2a.
All the values _would_ be submitted in reality, but the test wasn't submitting what would actually be happening.
@jasonvarga
jasonvarga merged commit f5e0e8e into 3.3Jul 21, 2022
@jasonvarga
jasonvarga deleted the fix/toggle-casting-to-boolean-when-hidden branch July 21, 2022 18:33
@aerni

Copy link
Copy Markdown
Contributor

@jesseleite This issue still persists for me. I'm on the latest version. It might be due to nesting. My toggle field is in a Grid that's in a Grid that's in a Replicator.

@jesseleite

Copy link
Copy Markdown
ContributorAuthor

@aerni I can't reproduce this with a toggle in a grid in a replicator. Could you provide more details what is happening for you, with steps to reproduce?

In my test here... When the toggle is hidden, nothing is saved. If the toggle is visible, the proper value of the toggle gets saved. This is the expected behaviour, as described in description and docs link above.

@aerni

Copy link
Copy Markdown
Contributor

I'll try to reproduce the issue on a fresh site and share the repo with you.

@aerni

Copy link
Copy Markdown
Contributor

Alright. I was able to reproduce the issue.

  1. Clone this repo: https://github.com/aerni/toggle-issue
  2. Open the home page in the CP
  3. Open the Show more settings revealer in the button grid
  4. Notice that there is no Download toggle, so it shouldn't save anything. But download: false is still saved to file.
  5. The download toggle is only visible and should only be saved if you select Asset as the Link Type.

Let me know if you need more info.

@jasonvarga

Copy link
Copy Markdown
Member

Try taking out the default: false from the download field config.

@aerni

Copy link
Copy Markdown
Contributor

I actually need it to default: true when the toggle is visible. I just have it set to false now because I was testing if that made a difference.

@jesseleite

Copy link
Copy Markdown
ContributorAuthor

@aerni I notice you are hiding the download toggle using a revealer. Any time a field is hidden via a revealer, data flow behaviour changes to always submit those hidden-by-revealer fields.

CleanShot 2022-07-27 at 14 29 12

@aerni

Copy link
Copy Markdown
Contributor

Yeah, I understand that. However, the download toggle has multiple conditions. One condition is triggered by the link_type which is a select fieldtype. So in this case it should still be removed from the data flow.

@jesseleite

Copy link
Copy Markdown
ContributorAuthor

@aerni Yeah I hear you now. This has nothing to do with toggle field specifically, or nesting within grids for that matter. This would happen on any field hidden by a revealer when multiple field conditions are set.

Need to think about whether this might affect another use case negatively or not, but maybe I can improve revealer handling when multiple conditions are being evaluated 👍

Feel free to follow along here: #6385

@aerni

Copy link
Copy Markdown
Contributor

Ok, cool. Thanks for opening an issue 👍

@jesseleite

Copy link
Copy Markdown
ContributorAuthor

No problem, good find!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Conditionals on Toggle-Fieldtype save wrong default value

3 participants

@jesseleite@aerni@jasonvarga
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Fix toggle field casting to boolean when field is hidden - #6348

Merged
jasonvarga merged 3 commits into
3.3from
fix/toggle-casting-to-boolean-when-hidden
Jul 21, 2022
Merged

Fix toggle field casting to boolean when field is hidden#6348
jasonvarga merged 3 commits into
3.3from
fix/toggle-casting-to-boolean-when-hidden

Conversation

@jesseleite

@jesseleitejesseleite commented Jul 19, 2022

Copy link
Copy Markdown
Contributor

Ensure the toggle fieldtype only casts to a saveable boolean when the value is submitted. When conditionally hidden, it should save neither true nor false, according to our docs on conditional field data flow.

Fixes#6347.

jesseleiteand others added 2 commits July 19, 2022 11:02
This reverts commit 9225d2a.
All the values _would_ be submitted in reality, but the test wasn't submitting what would actually be happening.
@jasonvarga
jasonvarga merged commit f5e0e8e into 3.3Jul 21, 2022
@jasonvarga
jasonvarga deleted the fix/toggle-casting-to-boolean-when-hidden branch July 21, 2022 18:33
@aerni

Copy link
Copy Markdown
Contributor

@jesseleite This issue still persists for me. I'm on the latest version. It might be due to nesting. My toggle field is in a Grid that's in a Grid that's in a Replicator.

@jesseleite

Copy link
Copy Markdown
ContributorAuthor

@aerni I can't reproduce this with a toggle in a grid in a replicator. Could you provide more details what is happening for you, with steps to reproduce?

In my test here... When the toggle is hidden, nothing is saved. If the toggle is visible, the proper value of the toggle gets saved. This is the expected behaviour, as described in description and docs link above.

@aerni

Copy link
Copy Markdown
Contributor

I'll try to reproduce the issue on a fresh site and share the repo with you.

@aerni

Copy link
Copy Markdown
Contributor

Alright. I was able to reproduce the issue.

  1. Clone this repo: https://github.com/aerni/toggle-issue
  2. Open the home page in the CP
  3. Open the Show more settings revealer in the button grid
  4. Notice that there is no Download toggle, so it shouldn't save anything. But download: false is still saved to file.
  5. The download toggle is only visible and should only be saved if you select Asset as the Link Type.

Let me know if you need more info.

@jasonvarga

Copy link
Copy Markdown
Member

Try taking out the default: false from the download field config.

@aerni

Copy link
Copy Markdown
Contributor

I actually need it to default: true when the toggle is visible. I just have it set to false now because I was testing if that made a difference.

@jesseleite

Copy link
Copy Markdown
ContributorAuthor

@aerni I notice you are hiding the download toggle using a revealer. Any time a field is hidden via a revealer, data flow behaviour changes to always submit those hidden-by-revealer fields.

CleanShot 2022-07-27 at 14 29 12

@aerni

Copy link
Copy Markdown
Contributor

Yeah, I understand that. However, the download toggle has multiple conditions. One condition is triggered by the link_type which is a select fieldtype. So in this case it should still be removed from the data flow.

@jesseleite

Copy link
Copy Markdown
ContributorAuthor

@aerni Yeah I hear you now. This has nothing to do with toggle field specifically, or nesting within grids for that matter. This would happen on any field hidden by a revealer when multiple field conditions are set.

Need to think about whether this might affect another use case negatively or not, but maybe I can improve revealer handling when multiple conditions are being evaluated 👍

Feel free to follow along here: #6385

@aerni

Copy link
Copy Markdown
Contributor

Ok, cool. Thanks for opening an issue 👍

@jesseleite

Copy link
Copy Markdown
ContributorAuthor

No problem, good find!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Conditionals on Toggle-Fieldtype save wrong default value

3 participants

@jesseleite@aerni@jasonvarga
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Fix toggle field casting to boolean when field is hidden - #6348

Merged
jasonvarga merged 3 commits into
3.3from
fix/toggle-casting-to-boolean-when-hidden
Jul 21, 2022
Merged

Fix toggle field casting to boolean when field is hidden#6348
jasonvarga merged 3 commits into
3.3from
fix/toggle-casting-to-boolean-when-hidden

Conversation

@jesseleite

@jesseleitejesseleite commented Jul 19, 2022

Copy link
Copy Markdown
Contributor

Ensure the toggle fieldtype only casts to a saveable boolean when the value is submitted. When conditionally hidden, it should save neither true nor false, according to our docs on conditional field data flow.

Fixes#6347.

jesseleiteand others added 2 commits July 19, 2022 11:02
This reverts commit 9225d2a.
All the values _would_ be submitted in reality, but the test wasn't submitting what would actually be happening.
@jasonvarga
jasonvarga merged commit f5e0e8e into 3.3Jul 21, 2022
@jasonvarga
jasonvarga deleted the fix/toggle-casting-to-boolean-when-hidden branch July 21, 2022 18:33
@aerni

Copy link
Copy Markdown
Contributor

@jesseleite This issue still persists for me. I'm on the latest version. It might be due to nesting. My toggle field is in a Grid that's in a Grid that's in a Replicator.

@jesseleite

Copy link
Copy Markdown
ContributorAuthor

@aerni I can't reproduce this with a toggle in a grid in a replicator. Could you provide more details what is happening for you, with steps to reproduce?

In my test here... When the toggle is hidden, nothing is saved. If the toggle is visible, the proper value of the toggle gets saved. This is the expected behaviour, as described in description and docs link above.

@aerni

Copy link
Copy Markdown
Contributor

I'll try to reproduce the issue on a fresh site and share the repo with you.

@aerni

Copy link
Copy Markdown
Contributor

Alright. I was able to reproduce the issue.

  1. Clone this repo: https://github.com/aerni/toggle-issue
  2. Open the home page in the CP
  3. Open the Show more settings revealer in the button grid
  4. Notice that there is no Download toggle, so it shouldn't save anything. But download: false is still saved to file.
  5. The download toggle is only visible and should only be saved if you select Asset as the Link Type.

Let me know if you need more info.

@jasonvarga

Copy link
Copy Markdown
Member

Try taking out the default: false from the download field config.

@aerni

Copy link
Copy Markdown
Contributor

I actually need it to default: true when the toggle is visible. I just have it set to false now because I was testing if that made a difference.

@jesseleite

Copy link
Copy Markdown
ContributorAuthor

@aerni I notice you are hiding the download toggle using a revealer. Any time a field is hidden via a revealer, data flow behaviour changes to always submit those hidden-by-revealer fields.

CleanShot 2022-07-27 at 14 29 12

@aerni

Copy link
Copy Markdown
Contributor

Yeah, I understand that. However, the download toggle has multiple conditions. One condition is triggered by the link_type which is a select fieldtype. So in this case it should still be removed from the data flow.

@jesseleite

Copy link
Copy Markdown
ContributorAuthor

@aerni Yeah I hear you now. This has nothing to do with toggle field specifically, or nesting within grids for that matter. This would happen on any field hidden by a revealer when multiple field conditions are set.

Need to think about whether this might affect another use case negatively or not, but maybe I can improve revealer handling when multiple conditions are being evaluated 👍

Feel free to follow along here: #6385

@aerni

Copy link
Copy Markdown
Contributor

Ok, cool. Thanks for opening an issue 👍

@jesseleite

Copy link
Copy Markdown
ContributorAuthor

No problem, good find!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Conditionals on Toggle-Fieldtype save wrong default value

3 participants

@jesseleite@aerni@jasonvarga
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Fix toggle field casting to boolean when field is hidden - #6348

Merged
jasonvarga merged 3 commits into
3.3from
fix/toggle-casting-to-boolean-when-hidden
Jul 21, 2022
Merged

Fix toggle field casting to boolean when field is hidden#6348
jasonvarga merged 3 commits into
3.3from
fix/toggle-casting-to-boolean-when-hidden

Conversation

@jesseleite

@jesseleitejesseleite commented Jul 19, 2022

Copy link
Copy Markdown
Contributor

Ensure the toggle fieldtype only casts to a saveable boolean when the value is submitted. When conditionally hidden, it should save neither true nor false, according to our docs on conditional field data flow.

Fixes#6347.

jesseleiteand others added 2 commits July 19, 2022 11:02
This reverts commit 9225d2a.
All the values _would_ be submitted in reality, but the test wasn't submitting what would actually be happening.
@jasonvarga
jasonvarga merged commit f5e0e8e into 3.3Jul 21, 2022
@jasonvarga
jasonvarga deleted the fix/toggle-casting-to-boolean-when-hidden branch July 21, 2022 18:33
@aerni

Copy link
Copy Markdown
Contributor

@jesseleite This issue still persists for me. I'm on the latest version. It might be due to nesting. My toggle field is in a Grid that's in a Grid that's in a Replicator.

@jesseleite

Copy link
Copy Markdown
ContributorAuthor

@aerni I can't reproduce this with a toggle in a grid in a replicator. Could you provide more details what is happening for you, with steps to reproduce?

In my test here... When the toggle is hidden, nothing is saved. If the toggle is visible, the proper value of the toggle gets saved. This is the expected behaviour, as described in description and docs link above.

@aerni

Copy link
Copy Markdown
Contributor

I'll try to reproduce the issue on a fresh site and share the repo with you.

@aerni

Copy link
Copy Markdown
Contributor

Alright. I was able to reproduce the issue.

  1. Clone this repo: https://github.com/aerni/toggle-issue
  2. Open the home page in the CP
  3. Open the Show more settings revealer in the button grid
  4. Notice that there is no Download toggle, so it shouldn't save anything. But download: false is still saved to file.
  5. The download toggle is only visible and should only be saved if you select Asset as the Link Type.

Let me know if you need more info.

@jasonvarga

Copy link
Copy Markdown
Member

Try taking out the default: false from the download field config.

@aerni

Copy link
Copy Markdown
Contributor

I actually need it to default: true when the toggle is visible. I just have it set to false now because I was testing if that made a difference.

@jesseleite

Copy link
Copy Markdown
ContributorAuthor

@aerni I notice you are hiding the download toggle using a revealer. Any time a field is hidden via a revealer, data flow behaviour changes to always submit those hidden-by-revealer fields.

CleanShot 2022-07-27 at 14 29 12

@aerni

Copy link
Copy Markdown
Contributor

Yeah, I understand that. However, the download toggle has multiple conditions. One condition is triggered by the link_type which is a select fieldtype. So in this case it should still be removed from the data flow.

@jesseleite

Copy link
Copy Markdown
ContributorAuthor

@aerni Yeah I hear you now. This has nothing to do with toggle field specifically, or nesting within grids for that matter. This would happen on any field hidden by a revealer when multiple field conditions are set.

Need to think about whether this might affect another use case negatively or not, but maybe I can improve revealer handling when multiple conditions are being evaluated 👍

Feel free to follow along here: #6385

@aerni

Copy link
Copy Markdown
Contributor

Ok, cool. Thanks for opening an issue 👍

@jesseleite

Copy link
Copy Markdown
ContributorAuthor

No problem, good find!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Conditionals on Toggle-Fieldtype save wrong default value

3 participants

@jesseleite@aerni@jasonvarga