@vectoriox/iox-ui 4.30.1 → 4.30.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vectoriox/iox-ui",
3
- "version": "4.30.1",
3
+ "version": "4.30.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=20.0.0",
6
6
  "@angular/core": ">=20.0.0",
@@ -16,27 +16,27 @@
16
16
  * visibility, the author owns everything else about the block.
17
17
  */
18
18
 
19
- /* ⚠️ SPECIFICITY IS LOAD-BEARING HERE, and getting it wrong is silent.
19
+ /* ⚠️ HIDE-ONLY, AND `!important` IS REQUIRED. Both parts are load-bearing.
20
20
  *
21
- * A node's own rule is `.iox-node-{id} { display: block }` — (0,1,0) — and it is injected into a
22
- * runtime <style> element that comes AFTER this file. So a bare `.iox-form-success { display: none }`
23
- * would TIE on specificity and lose on source order, leaving both state blocks permanently visible.
24
- * Scoping the hide to `.iox-form` makes it (0,2,0), and the reveal (0,3,0) beats that in turn. */
25
- .iox-form .iox-form-success,
26
- .iox-form .iox-form-error { display: none; }
27
-
28
- .iox-form[data-iox-state="success"] .iox-form-success { display: block; }
29
- .iox-form[data-iox-state="error"] .iox-form-error { display: block; }
21
+ * On the BUILDER canvas the author's `display` is applied as an INLINE style on the node host, and no
22
+ * stylesheet rule — at any specificity — beats an inline style. So the only way one mechanism can
23
+ * govern visibility in all three renderers is `!important`.
24
+ *
25
+ * But it is applied to HIDING only, never to revealing. A rule like
26
+ * `[data-iox-state="success"] .iox-form-success { display: block !important }` would also override an
27
+ * author who made their success block a flex container. Expressing the same thing as "hide unless the
28
+ * state matches" leaves the revealed block's own `display` untouched: the state machine decides
29
+ * WHETHER a block shows, the author decides HOW it shows.
30
+ */
31
+ .iox-form:not([data-iox-state="success"]) .iox-form-success { display: none !important; }
32
+ .iox-form:not([data-iox-state="error"]) .iox-form-error { display: none !important; }
30
33
 
31
34
  /* A submitted form hides its inputs: the success message REPLACES them, rather than sitting under a
32
35
  form the visitor might fill in and send a second time. An error leaves them alone — the visitor
33
36
  has to be able to fix and retry. */
34
37
  .iox-form[data-iox-state="success"] .iox-field,
35
38
  .iox-form[data-iox-state="success"] .iox-field-group,
36
- .iox-form[data-iox-state="success"] .iox-submit { display: none; }
37
-
38
- /* Same trap as above: the builder's canvas hosts carry `.container-root` too, and the node rule
39
- still wins a tie — these are (0,3,0), so they hold. */
39
+ .iox-form[data-iox-state="success"] .iox-submit { display: none !important; }
40
40
 
41
41
  /* Structural base styles, shared by the string-rendered markup and both component paths. */
42
42
  .iox-form { box-sizing: border-box; }