@vectoriox/iox-builder 4.32.0 → 4.32.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.
@@ -920,6 +920,9 @@ var PanelEventTypes;
920
920
  /** Insert prebuilt node(s) as GLOBAL elements (data = ComponentNode[]) — the consent preset's
921
921
  * path (D-C5: site-wide by construction). Mirrors the MakeGlobal toolbar action. */
922
922
  PanelEventTypes["INSERT_GLOBAL"] = "insertglobal";
923
+ /** A click on a compound component's PART (Field label/control/help/…) — the style panel
924
+ * activates that part (data = { part }). Doron 2026-10-10: "both shall be selectable". */
925
+ PanelEventTypes["PART_SELECT"] = "partselect";
923
926
  /** A panel wants to select a NODE it already has a reference to (e.g. the Form's nested field
924
927
  * list). Carries `{ node }`. `OverlayService.setSelect()` alone only updates the overlay's own
925
928
  * visual state — `selectedItem`/`selectedPath` (breadcrumb) and every other panel's idea of
@@ -10075,18 +10078,6 @@ const QUIET = {
10075
10078
  backgroundColor: 'transparent', color: TOKEN$1('inkMuted', '#4a453f'),
10076
10079
  fontSize: '11px', fontWeight: '400', padding: '2px 4px', textDecoration: 'underline',
10077
10080
  };
10078
- const SMALL_ALLOW = {
10079
- backgroundColor: 'transparent', color: TOKEN$1('ink', '#1f1d1b'),
10080
- borderWidth: '1px', borderStyle: 'solid', borderColor: TOKEN$1('ink', '#1f1d1b'),
10081
- fontSize: '11px', fontWeight: '600', padding: '5px 10px',
10082
- borderRadius: TOKEN$1('radius-control', '4px'),
10083
- };
10084
- const SMALL_REFUSE = {
10085
- backgroundColor: 'transparent', color: TOKEN$1('inkMuted', '#6b6560'),
10086
- borderWidth: '1px', borderStyle: 'solid', borderColor: TOKEN$1('line', '#d8d4d1'),
10087
- fontSize: '11px', fontWeight: '600', padding: '5px 10px',
10088
- borderRadius: TOKEN$1('radius-control', '4px'),
10089
- };
10090
10081
  function row(createConfig, styles, children) {
10091
10082
  const container = createConfig('Container');
10092
10083
  if (!container || children.some(c => !c))
@@ -10166,15 +10157,19 @@ function buildConsentPreset(createConfig) {
10166
10157
  textColOf('Necessary', 'Keeps the site working: your session, your language, this very choice. Always on.'),
10167
10158
  alwaysOn,
10168
10159
  ]);
10160
+ // Board C2's switches, for real: a Field in switch clothing whose NAME carries the
10161
+ // category ('consent-<category>') — the engine's consent runtime binds checked-state to
10162
+ // the decision and records on change. State lives in the cookie, never in the tree.
10169
10163
  const categoryCard = (category, name, desc) => {
10170
- const allow = button('Allow', createConfig, click([
10171
- { type: 'setConsentCategory', params: { category, granted: true } },
10172
- ]), SMALL_ALLOW);
10173
- const refuse = button('Refuse', createConfig, click([
10174
- { type: 'setConsentCategory', params: { category, granted: false } },
10175
- ]), SMALL_REFUSE);
10176
- const pair = row(createConfig, { display: 'flex', gap: '6px' }, [allow, refuse]);
10177
- return row(createConfig, CARD, [textColOf(name, desc), pair]);
10164
+ const sw = createConfig('Field');
10165
+ if (!sw)
10166
+ return null;
10167
+ setTrait(sw, 'label', name);
10168
+ setTrait(sw, 'labelHidden', true); // the card's own texts carry the words
10169
+ setTrait(sw, 'control', 'switch');
10170
+ setTrait(sw, 'name', `consent-${category}`);
10171
+ setStyleTrait(sw, 'width', 'auto');
10172
+ return row(createConfig, CARD, [textColOf(name, desc), sw]);
10178
10173
  };
10179
10174
  const analyticsCard = categoryCard('analytics', 'Analytics', 'Anonymous counts of visits and pages. Off means the analytics script never loads.');
10180
10175
  const marketingCard = categoryCard('marketing', 'Marketing', 'Ads measurement and remarketing. Off means no ad cookies and no data shared.');