@vectoriox/iox-ui 5.34.0 → 5.36.0
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/composite-core/index.d.ts +348 -2
- package/design-core/index.d.ts +417 -0
- package/fesm2022/vectoriox-iox-ui-composite-core.mjs +899 -2
- package/fesm2022/vectoriox-iox-ui-composite-core.mjs.map +1 -1
- package/fesm2022/vectoriox-iox-ui-design-core.mjs +489 -0
- package/fesm2022/vectoriox-iox-ui-design-core.mjs.map +1 -1
- package/fesm2022/vectoriox-iox-ui-forms-core.mjs +2 -1
- package/fesm2022/vectoriox-iox-ui-forms-core.mjs.map +1 -1
- package/fesm2022/vectoriox-iox-ui-generation-core.mjs +138 -33
- package/fesm2022/vectoriox-iox-ui-generation-core.mjs.map +1 -1
- package/fesm2022/vectoriox-iox-ui.mjs +122 -19
- package/fesm2022/vectoriox-iox-ui.mjs.map +1 -1
- package/generation-core/index.d.ts +53 -3
- package/index.d.ts +73 -10
- package/package.json +1 -1
- package/src/composite-core/accordion-runtime.ts +354 -0
- package/src/composite-core/accordion.ts +650 -0
- package/src/composite-core/composite-node.ts +5 -0
- package/src/composite-core/public-api.ts +4 -1
- package/src/composite-core/structure.ts +7 -0
- package/src/design-core/flavor-spec.generated.ts +489 -0
- package/src/forms-core/nesting.ts +2 -1
- package/src/generation-core/compose-site.ts +49 -1
- package/src/generation-core/node-baselines.generated.ts +31 -27
- package/src/generation-core/patterns.ts +10 -0
- package/src/generation-core/serialized-node.ts +4 -0
- package/src/generation-core/site-spec.generated.ts +46 -1
- package/src/generation-core/validate-site-plan.ts +5 -4
- package/styles/iox-design.css +30 -0
|
@@ -1042,12 +1042,12 @@ class BuilderHeadingComponent {
|
|
|
1042
1042
|
this.events.emit('elementselect', { node: this.node, componentRef: null, isCanvasUpdate: true });
|
|
1043
1043
|
}
|
|
1044
1044
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: BuilderHeadingComponent, deps: [{ token: IOX_BUILDER_EVENTS, optional: true }, { token: i0.ChangeDetectorRef }, { token: IS_PREVIEW, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1045
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.31", type: BuilderHeadingComponent, isStandalone: false, selector: "h1[iox-heading],h2[iox-heading],h3[iox-heading],h4[iox-heading],h5[iox-heading],h6[iox-heading]", inputs: { content: "content", level: "level", nodeId: "nodeId", node: "node", linkType: "linkType", url: "url", pageRoute: "pageRoute", target: "target" }, host: { listeners: { "mousedown": "onMouseDown($event)", "dblclick": "startEdit($event)", "blur": "commitEdit($event)", "keydown": "onKeyDown($event)" }, properties: { "class": "'iox-node-' + nodeId", "attr.contenteditable": "editing ? 'true' : null" } }, ngImport: i0, template: `@if (href) {<a [class]="linkClass" [attr.href]="href" [attr.target]="linkTarget" [attr.rel]="linkRel"
|
|
1045
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.31", type: BuilderHeadingComponent, isStandalone: false, selector: "h1[iox-heading],h2[iox-heading],h3[iox-heading],h4[iox-heading],h5[iox-heading],h6[iox-heading],span[iox-heading]", inputs: { content: "content", level: "level", nodeId: "nodeId", node: "node", linkType: "linkType", url: "url", pageRoute: "pageRoute", target: "target" }, host: { listeners: { "mousedown": "onMouseDown($event)", "dblclick": "startEdit($event)", "blur": "commitEdit($event)", "keydown": "onKeyDown($event)" }, properties: { "class": "'iox-node-' + nodeId", "attr.contenteditable": "editing ? 'true' : null" } }, ngImport: i0, template: `@if (href) {<a [class]="linkClass" [attr.href]="href" [attr.target]="linkTarget" [attr.rel]="linkRel"
|
|
1046
1046
|
[attr.data-iox-canvas]="isPreview ? null : ''" (click)="onLinkClick($event)" (auxclick)="onLinkClick($event)">{{ content }}</a>} @else {<ng-container>{{ content }}</ng-container>}`, isInline: true, styles: [":host{margin:0}:host[contenteditable]{outline:none;cursor:text}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1047
1047
|
}
|
|
1048
1048
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: BuilderHeadingComponent, decorators: [{
|
|
1049
1049
|
type: Component,
|
|
1050
|
-
args: [{ selector: 'h1[iox-heading],h2[iox-heading],h3[iox-heading],h4[iox-heading],h5[iox-heading],h6[iox-heading]', template: `@if (href) {<a [class]="linkClass" [attr.href]="href" [attr.target]="linkTarget" [attr.rel]="linkRel"
|
|
1050
|
+
args: [{ selector: 'h1[iox-heading],h2[iox-heading],h3[iox-heading],h4[iox-heading],h5[iox-heading],h6[iox-heading],span[iox-heading]', template: `@if (href) {<a [class]="linkClass" [attr.href]="href" [attr.target]="linkTarget" [attr.rel]="linkRel"
|
|
1051
1051
|
[attr.data-iox-canvas]="isPreview ? null : ''" (click)="onLinkClick($event)" (auxclick)="onLinkClick($event)">{{ content }}</a>} @else {<ng-container>{{ content }}</ng-container>}`, host: {
|
|
1052
1052
|
'[class]': "'iox-node-' + nodeId",
|
|
1053
1053
|
'[attr.contenteditable]': "editing ? 'true' : null",
|
|
@@ -1245,7 +1245,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImpo
|
|
|
1245
1245
|
|
|
1246
1246
|
/** `click` covers plain and modified clicks; a middle click opens a tab through `auxclick` alone. */
|
|
1247
1247
|
const NAVIGATING_CLICKS = ['click', 'auxclick'];
|
|
1248
|
-
/**
|
|
1248
|
+
/**
|
|
1249
|
+
* Directive-host linked container: the `<a>` IS the host — no wrapper, no inner/outer split. An Accordion's
|
|
1250
|
+
* HEADER (CC2, role `accordion.trigger`) is created on a `<button>` instead — a button that opens its item,
|
|
1251
|
+
* never a link; the engine puts it inside the `<hN>` its question's level names.
|
|
1252
|
+
*/
|
|
1249
1253
|
class LinkedContainerComponent {
|
|
1250
1254
|
constructor(elRef, isPreview) {
|
|
1251
1255
|
this.elRef = elRef;
|
|
@@ -1258,31 +1262,36 @@ class LinkedContainerComponent {
|
|
|
1258
1262
|
this.capturePreventDefault = (e) => e.preventDefault();
|
|
1259
1263
|
}
|
|
1260
1264
|
ngOnInit() {
|
|
1261
|
-
if (!this.isPreview) {
|
|
1265
|
+
if (!this.isPreview && !this.isButton) {
|
|
1262
1266
|
for (const type of NAVIGATING_CLICKS)
|
|
1263
1267
|
this.elRef.nativeElement.addEventListener(type, this.capturePreventDefault, true);
|
|
1264
1268
|
}
|
|
1265
1269
|
}
|
|
1266
1270
|
ngOnDestroy() {
|
|
1267
|
-
if (!this.isPreview) {
|
|
1271
|
+
if (!this.isPreview && !this.isButton) {
|
|
1268
1272
|
for (const type of NAVIGATING_CLICKS)
|
|
1269
1273
|
this.elRef.nativeElement.removeEventListener(type, this.capturePreventDefault, true);
|
|
1270
1274
|
}
|
|
1271
1275
|
}
|
|
1276
|
+
/** True when created on a <button> (an Accordion header) — it never navigates. */
|
|
1277
|
+
get isButton() {
|
|
1278
|
+
return this.elRef.nativeElement.tagName === 'BUTTON';
|
|
1279
|
+
}
|
|
1272
1280
|
get resolvedHref() {
|
|
1273
1281
|
if (this.linkType !== 'page')
|
|
1274
1282
|
return this.url || '#';
|
|
1275
1283
|
return this.pageRoute || '#';
|
|
1276
1284
|
}
|
|
1277
1285
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: LinkedContainerComponent, deps: [{ token: i0.ElementRef }, { token: IS_PREVIEW, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1278
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.31", type: LinkedContainerComponent, isStandalone: false, selector: "a[iox-linked-container]", inputs: { nodeId: "nodeId", linkType: "linkType", url: "url", pageRoute: "pageRoute", target: "target" }, host: { properties: { "attr.href": "resolvedHref", "attr.target": "target", "class": "'linked-container-root iox-node-' + nodeId" } }, viewQueries: [{ propertyName: "childrenHost", first: true, predicate: ["childrenHost"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: `<ng-container #childrenHost></ng-container>`, isInline: true, styles: [":host{box-sizing:border-box;text-decoration:none;cursor:pointer}\n"] }); }
|
|
1286
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.31", type: LinkedContainerComponent, isStandalone: false, selector: "a[iox-linked-container],button[iox-linked-container]", inputs: { nodeId: "nodeId", linkType: "linkType", url: "url", pageRoute: "pageRoute", target: "target" }, host: { properties: { "attr.href": "isButton ? null : resolvedHref", "attr.target": "isButton ? null : target", "attr.type": "isButton ? 'button' : null", "class": "'linked-container-root iox-node-' + nodeId + (isButton ? ' iox-accordion-button' : '')" } }, viewQueries: [{ propertyName: "childrenHost", first: true, predicate: ["childrenHost"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: `<ng-container #childrenHost></ng-container>`, isInline: true, styles: [":host{box-sizing:border-box;text-decoration:none;cursor:pointer}\n"] }); }
|
|
1279
1287
|
}
|
|
1280
1288
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: LinkedContainerComponent, decorators: [{
|
|
1281
1289
|
type: Component,
|
|
1282
|
-
args: [{ selector: 'a[iox-linked-container]', template: `<ng-container #childrenHost></ng-container>`, host: {
|
|
1283
|
-
'[attr.href]': 'resolvedHref',
|
|
1284
|
-
'[attr.target]': 'target',
|
|
1285
|
-
'[
|
|
1290
|
+
args: [{ selector: 'a[iox-linked-container],button[iox-linked-container]', template: `<ng-container #childrenHost></ng-container>`, host: {
|
|
1291
|
+
'[attr.href]': 'isButton ? null : resolvedHref',
|
|
1292
|
+
'[attr.target]': 'isButton ? null : target',
|
|
1293
|
+
'[attr.type]': "isButton ? 'button' : null",
|
|
1294
|
+
'[class]': "'linked-container-root iox-node-' + nodeId + (isButton ? ' iox-accordion-button' : '')",
|
|
1286
1295
|
}, standalone: false, styles: [":host{box-sizing:border-box;text-decoration:none;cursor:pointer}\n"] }]
|
|
1287
1296
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: undefined, decorators: [{
|
|
1288
1297
|
type: Optional
|
|
@@ -1480,6 +1489,34 @@ function migrateLegacyDirection(styleProps) {
|
|
|
1480
1489
|
rest[TEXT_DIRECTION_KEY] = legacy;
|
|
1481
1490
|
return rest;
|
|
1482
1491
|
}
|
|
1492
|
+
// ─── Text alignment ──────────────────────────────────────────────────────────────
|
|
1493
|
+
/** The Align trait's values: LOGICAL, so a text starts at the inline start of whatever direction it
|
|
1494
|
+
* reads in — the left in LTR, the right in RTL (vectoriox/iox-ui#16). */
|
|
1495
|
+
var TextAlign;
|
|
1496
|
+
(function (TextAlign) {
|
|
1497
|
+
TextAlign["Start"] = "start";
|
|
1498
|
+
TextAlign["Center"] = "center";
|
|
1499
|
+
TextAlign["End"] = "end";
|
|
1500
|
+
TextAlign["Justify"] = "justify";
|
|
1501
|
+
})(TextAlign || (TextAlign = {}));
|
|
1502
|
+
const TEXT_ALIGN_KEY = 'textAlign';
|
|
1503
|
+
/** Until iox-ui#16 the trait's default was the PHYSICAL `left`, serialised onto every node — so in a
|
|
1504
|
+
* node's own styleProps a stored `left` records no choice (the old panel showed Left already selected)
|
|
1505
|
+
* and compiles as `start`: identical in LTR, where it still overrides a centred parent as `left` did,
|
|
1506
|
+
* and the right edge in RTL. In a sparse layer (a state, a breakpoint) only an edit is stored, so there
|
|
1507
|
+
* `left` is the author's and stays physical. `right`, `center` and `justify` were always chosen. */
|
|
1508
|
+
const LEGACY_DEFAULT_TEXT_ALIGN = 'left';
|
|
1509
|
+
const isLegacyDefaultAlign = (v) => typeof v === 'string' && v.trim().toLowerCase() === LEGACY_DEFAULT_TEXT_ALIGN;
|
|
1510
|
+
/**
|
|
1511
|
+
* A saved node's own style map with the serialised default `textAlign: left` read as the logical
|
|
1512
|
+
* `start` it compiles to — so the builder's panel highlights Start, and the next save stores it.
|
|
1513
|
+
* Pure; returns the map unchanged (same reference) when there is nothing to move.
|
|
1514
|
+
*/
|
|
1515
|
+
function migrateLegacyTextAlign(styleProps) {
|
|
1516
|
+
if (!styleProps || !isLegacyDefaultAlign(styleProps[TEXT_ALIGN_KEY]))
|
|
1517
|
+
return styleProps;
|
|
1518
|
+
return { ...styleProps, [TEXT_ALIGN_KEY]: TextAlign.Start };
|
|
1519
|
+
}
|
|
1483
1520
|
// ─── Gradient backgrounds ──────────────────────────────────────────────────────
|
|
1484
1521
|
/** A Background value that is a gradient (the colour control offers one; the `media-scrim` element style
|
|
1485
1522
|
* writes one). `background-color` cannot hold an image, so it composes into `background-image`. */
|
|
@@ -1608,6 +1645,8 @@ function composeVirtualTraits(raw, base = raw) {
|
|
|
1608
1645
|
const direction = composeDirection(raw, base);
|
|
1609
1646
|
if (direction)
|
|
1610
1647
|
result[DIRECTION_OUTPUT] = direction;
|
|
1648
|
+
if (raw === base && isLegacyDefaultAlign(result[TEXT_ALIGN_KEY]))
|
|
1649
|
+
result[TEXT_ALIGN_KEY] = TextAlign.Start;
|
|
1611
1650
|
// A gradient Background is an IMAGE. A solid one over a wider/base gradient (a hover, a breakpoint)
|
|
1612
1651
|
// must cancel that image, or the gradient keeps showing through.
|
|
1613
1652
|
const background = result['backgroundColor'];
|
|
@@ -2558,6 +2597,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImpo
|
|
|
2558
2597
|
* onto its own transport. A single item is ALWAYS fetched by its id as a path segment — never a
|
|
2559
2598
|
* `?_id=` query — to match the builder's getContentById.
|
|
2560
2599
|
*/
|
|
2600
|
+
/** The order a query source returns its rows in (CC2, board 4 "Sort" — the data source popover). */
|
|
2601
|
+
var DataSourceSortDir;
|
|
2602
|
+
(function (DataSourceSortDir) {
|
|
2603
|
+
DataSourceSortDir["Asc"] = "asc";
|
|
2604
|
+
DataSourceSortDir["Desc"] = "desc";
|
|
2605
|
+
})(DataSourceSortDir || (DataSourceSortDir = {}));
|
|
2606
|
+
/** The query parameter carrying the order: `sort=order` ascending, `sort=-order` descending. A CONTROL like
|
|
2607
|
+
* `limit`, not a field filter — the public controllers split it out (iox-cms `query-controls.ts`). */
|
|
2608
|
+
const SORT_PARAM = 'sort';
|
|
2609
|
+
const SORT_FIELD = /^[A-Za-z_][A-Za-z0-9_]*(\.[A-Za-z_][A-Za-z0-9_]*)*$/;
|
|
2610
|
+
/** `sort`'s wire value, or null when the source sets no (valid) order. */
|
|
2611
|
+
function sortParamValue(sort) {
|
|
2612
|
+
const field = sort?.field?.trim();
|
|
2613
|
+
if (!field || !SORT_FIELD.test(field))
|
|
2614
|
+
return null;
|
|
2615
|
+
return sort?.dir === DataSourceSortDir.Desc ? `-${field}` : field;
|
|
2616
|
+
}
|
|
2561
2617
|
/**
|
|
2562
2618
|
* Match a page route template against an actual path and extract named params.
|
|
2563
2619
|
* matchRouteParams('/project/:projectId', 'project/68abc') → { projectId: '68abc' }
|
|
@@ -2640,6 +2696,9 @@ function planDataSource(ds, routeParams = {}, queryParams = {}) {
|
|
|
2640
2696
|
const plan = { kind: 'collection', domain, resource, filter, mode };
|
|
2641
2697
|
if (req?.limit)
|
|
2642
2698
|
plan.limit = req.limit;
|
|
2699
|
+
const sort = sortParamValue(req?.sort);
|
|
2700
|
+
if (sort)
|
|
2701
|
+
plan.sort = sort;
|
|
2643
2702
|
return plan;
|
|
2644
2703
|
}
|
|
2645
2704
|
case 'external-api': {
|
|
@@ -2812,6 +2871,8 @@ function dataSourcePlanToRequest(plan, endpoints) {
|
|
|
2812
2871
|
const params = { ...plan.filter };
|
|
2813
2872
|
if (plan.limit)
|
|
2814
2873
|
params['limit'] = plan.limit;
|
|
2874
|
+
if (plan.sort)
|
|
2875
|
+
params[SORT_PARAM] = plan.sort;
|
|
2815
2876
|
return { url: `${baseFor(plan.domain)}${plan.resource}`, params };
|
|
2816
2877
|
}
|
|
2817
2878
|
case 'external':
|
|
@@ -4030,7 +4091,8 @@ var InteractiveTag;
|
|
|
4030
4091
|
* rule. Pinned to the engine components' selectors by `interactive-hosts.spec.ts`.
|
|
4031
4092
|
*/
|
|
4032
4093
|
const INTERACTIVE_HOST_TAGS = Object.freeze({
|
|
4033
|
-
LinkedContainer
|
|
4094
|
+
// A LinkedContainer is an <a>, or — as an Accordion's header (CC2) — a <button>.
|
|
4095
|
+
LinkedContainer: [InteractiveTag.Anchor, InteractiveTag.Button],
|
|
4034
4096
|
Link: [InteractiveTag.Anchor],
|
|
4035
4097
|
Button: [InteractiveTag.Anchor],
|
|
4036
4098
|
ButtonBlock: [InteractiveTag.Anchor, InteractiveTag.Button],
|
|
@@ -5446,14 +5508,33 @@ function statePseudoClass(state) {
|
|
|
5446
5508
|
var ComponentState;
|
|
5447
5509
|
(function (ComponentState) {
|
|
5448
5510
|
ComponentState["Current"] = "current";
|
|
5511
|
+
/** A composite part that IS on — an open accordion item, its header, its panel (board 9 "Open"). */
|
|
5512
|
+
ComponentState["On"] = "on";
|
|
5513
|
+
/** A part INSIDE an item, styled by its item being open (board 9 "Item open") — a TARGETED state: its
|
|
5514
|
+
* trigger is the item (`stateTriggers['trigger-on']`), compiled through `targetedStateSelector`. */
|
|
5515
|
+
ComponentState["ItemOpen"] = "trigger-on";
|
|
5449
5516
|
})(ComponentState || (ComponentState = {}));
|
|
5450
|
-
/** The attribute selector each component state compiles to. */
|
|
5517
|
+
/** The attribute selector each (non-targeted) component state compiles to. */
|
|
5451
5518
|
const COMPONENT_STATE_SELECTOR = {
|
|
5452
5519
|
[ComponentState.Current]: '[aria-current="page"]',
|
|
5520
|
+
[ComponentState.On]: '[data-iox-on]',
|
|
5453
5521
|
};
|
|
5454
|
-
/** The
|
|
5455
|
-
|
|
5456
|
-
|
|
5522
|
+
/** The composite roles that are themselves "on" when their item is open (they carry `data-iox-on`). */
|
|
5523
|
+
const ON_STATE_ROLES = ['accordion.item', 'accordion.trigger', 'accordion.panel'];
|
|
5524
|
+
/**
|
|
5525
|
+
* The component states a node offers in the Style panel's "Component state" group: Current page (a link),
|
|
5526
|
+
* Open (an accordion's item, header or panel), Item open (any other part inside an item — `insideItem`).
|
|
5527
|
+
*/
|
|
5528
|
+
function componentStatesFor(type, role, insideItem = false) {
|
|
5529
|
+
// An accordion's header is a button that opens its item, never a link to a page: Open, not Current page.
|
|
5530
|
+
if (role && ON_STATE_ROLES.includes(role))
|
|
5531
|
+
return [ComponentState.On];
|
|
5532
|
+
const out = [];
|
|
5533
|
+
if (type && CURRENT_LINK_TYPES.includes(type))
|
|
5534
|
+
out.push(ComponentState.Current);
|
|
5535
|
+
if (insideItem)
|
|
5536
|
+
out.push(ComponentState.ItemOpen);
|
|
5537
|
+
return out;
|
|
5457
5538
|
}
|
|
5458
5539
|
/**
|
|
5459
5540
|
* What follows `.iox-node-<id>` in a stored state's rule: `:hover`, `:focus-visible`, or a component
|
|
@@ -5670,13 +5751,35 @@ function nearestCommonAncestorId(root, styledCssId, triggerCssId) {
|
|
|
5670
5751
|
* `scopeCssId` MUST be a value returned by `nearestCommonAncestorId` for the same pair.
|
|
5671
5752
|
*/
|
|
5672
5753
|
function buildTargetedStateSelector(scopeCssId, triggerCssId, styledCssId, base) {
|
|
5754
|
+
return buildTargetedSuffixSelector(scopeCssId, triggerCssId, styledCssId, `:${base}`);
|
|
5755
|
+
}
|
|
5756
|
+
/**
|
|
5757
|
+
* The same three topologies for any trigger SUFFIX — a pseudo-class (`:hover`) or an attribute the renderers
|
|
5758
|
+
* write (`[data-iox-on]`, CC2's "Item open").
|
|
5759
|
+
*/
|
|
5760
|
+
function buildTargetedSuffixSelector(scopeCssId, triggerCssId, styledCssId, suffix) {
|
|
5673
5761
|
if (scopeCssId === styledCssId) {
|
|
5674
|
-
return `iox-node-${styledCssId}:has(.iox-node-${triggerCssId}
|
|
5762
|
+
return `iox-node-${styledCssId}:has(.iox-node-${triggerCssId}${suffix})`;
|
|
5675
5763
|
}
|
|
5676
5764
|
if (scopeCssId === triggerCssId) {
|
|
5677
|
-
return `iox-node-${triggerCssId}
|
|
5765
|
+
return `iox-node-${triggerCssId}${suffix} .iox-node-${styledCssId}`;
|
|
5678
5766
|
}
|
|
5679
|
-
return `iox-node-${scopeCssId}:has(.iox-node-${triggerCssId}
|
|
5767
|
+
return `iox-node-${scopeCssId}:has(.iox-node-${triggerCssId}${suffix}) .iox-node-${styledCssId}`;
|
|
5768
|
+
}
|
|
5769
|
+
/**
|
|
5770
|
+
* The targeted states and what follows the TRIGGER's class in each: `trigger-hover` — the chosen element is
|
|
5771
|
+
* hovered; `trigger-on` — the chosen item is open (CC2: an Icon turns when ITS item opens; the trigger is the
|
|
5772
|
+
* item, an ancestor, so the rule is `.item[data-iox-on] .icon`). Shared by the builder canvas and both
|
|
5773
|
+
* engine paths.
|
|
5774
|
+
*/
|
|
5775
|
+
const TARGETED_STATE_SUFFIX = {
|
|
5776
|
+
'trigger-hover': ':hover',
|
|
5777
|
+
'trigger-on': '[data-iox-on]',
|
|
5778
|
+
};
|
|
5779
|
+
/** The selector body of a targeted state's rule, or null for a state that is not targeted. */
|
|
5780
|
+
function targetedStateSelector(state, scopeCssId, triggerCssId, styledCssId) {
|
|
5781
|
+
const suffix = TARGETED_STATE_SUFFIX[state];
|
|
5782
|
+
return suffix ? buildTargetedSuffixSelector(scopeCssId, triggerCssId, styledCssId, suffix) : null;
|
|
5680
5783
|
}
|
|
5681
5784
|
|
|
5682
5785
|
/**
|
|
@@ -7905,5 +8008,5 @@ function effectiveTransitionId(anim) {
|
|
|
7905
8008
|
* Generated bundle index. Do not edit.
|
|
7906
8009
|
*/
|
|
7907
8010
|
|
|
7908
|
-
export { A11yAttribute, A11yTrait, ACCESSIBLE_NAME_TYPES, AOSService, ARIA_CURRENT_PAGE, BACKDROP_TWIN_KEY, BACKDROP_WHOLE_KEY, BREAKPOINTS, Breakpoint, BreakpointQueryKind, BuilderButtonComponent, BuilderDividerComponent, BuilderHeadingComponent, BuilderIconComponent, BuilderImageComponent, BuilderLinkComponent, BuilderSpacerComponent, ButtonBlockComponent, COMPONENT_STATE_SELECTOR, CONTAINER_HTML_TAGS, CONTEXT_ACTION_TYPES, CURRENT_LINK_TYPES, CardComponent, ClientGalleryComponent, ClientListComponent, ClientListItemComponent, ClientRepeaterComponent, ClientSliderContainerComponent, ClientSliderSlideComponent, ComponentInstanceRegistryService, ComponentState, ContainerComponent, ContextStore, DECORATIVE_TYPES, DEFAULT_GALLERY_SCHEDULER, DEFAULT_PAGE_TRANSITION, DEFAULT_PAGE_TRANSITION_DURATION, DEFAULT_PAGE_TRANSITION_EASING, DEFAULT_PAGE_TRANSITION_PERSPECTIVE, DEFAULT_PHOSPHOR_WEIGHT, DEFAULT_WIDTH_BY_TYPE, DIALOG_CLOSE_ABOVE_ATTRIBUTE, DIALOG_NODE_TYPE, DeclarationContext, ENTRANCE_ACTION_TYPES, EXIT_ACTION_TYPES, FormRenderState, FormRuntimeService, GALLERY_EFFECTS, GALLERY_EFFECT_DESCRIPTORS, GalleryLoop, HOVER_DEFAULT_TRANSITION, HOVER_STATES, INTERACTION_HIDDEN_ATTRIBUTE, IOX_BUILDER_EVENTS, IOX_FORM_MESSAGES, IOX_FORM_NAVIGATOR, IOX_FORM_TRANSPORT, IS_PREVIEW, IoxAnimateContainer, IoxAosDirective, IoxAosModule, IoxBuilderComponentsModule, IoxComponentRegistryService, IoxDialogComponent, IoxFieldComponent, IoxFormComponent, IoxFormErrorComponent, IoxFormSuccessComponent, IoxPageComponent, IoxPageModule, IoxSubmitButtonComponent, IoxUiModule, LEGACY_DIRECTION_KEY, LEGACY_HOVER_TRANSITION, LinkedContainerComponent, MANAGED_A11Y_ATTRIBUTES, MAX_LINES_KEY, PAGE_STYLE_TOKENS, PAGE_TOKEN_FALLBACKS, PAGE_TRANSITION_CATEGORIES, PAGE_TRANSITION_PRESETS, PART_CLASS_NAMES, PIPE_DESCRIPTORS, PIPE_REGISTRY, PageScrollProvider, PageStyleField, PageStyleSource, REDUCED_MOTION_QUERY, RESERVED_ALIAS_PREFIX, STATE_PSEUDO_CLASS, SUPPRESSED_STYLE_PROPS_BY_TYPE, SWIPER_A11Y_OPTIONS, SWIPER_RESPONSIVE_TRAITS, SectionComponent, SwiperModuleName, TEXT_DIRECTION_KEY, TRANSITION_FEELS, TextBlockComponent, VALIDATION_STATES, VALIDATION_STATE_CLASS, VIRTUAL_TRAIT_GROUPS, VIRTUAL_TRAIT_KEYS, ViewPositionDirective, ViewPositionModule, VisibilityActionType, activeActions, applyBindingPipes, applyFeel, breakpointDef, breakpointForWidth, breakpointQueryFor, buildDataSourceFilter, buildInteractionKeyframes, buildPartSelector, buildRelatedFilter, buildSwiperBreakpoints, buildTargetedStateSelector, buildTransitionTimeline, cascadeChain, clearInputOverride, clearOverride, closeAboveMediaQuery, collectContextSlotKeys, collectReferencedAliases, compileDeclarations, compilePageStyle, componentStatesFor, composeVirtualTraits, computeRelative, containerHtmlTag, contextActionEffect, contextSlotKeys, countOverrides, dataSourcePlanToRequest, declaredInputNames, decomposeBackdropFilter, defaultHoverTransition, defaultMessageResolver, deriveSeoFromContent, describePageStyle, describeSeoFields, dialogCloseAboveMinWidth, effectiveActionType, effectiveTransitionId, entrancePreStateStyle, excludeSelf, feelFor, finalKeyframe, getByPath, getSeoValue, hasHoverState, hasOwnTransition, initialSlotValues, isActionEnabled, isContextAction, isCurrentLink, isExternalOrFragment, isGradientPaint, isInputOverriddenAt, isOverriddenAt, isReservedAlias, isValidSlotKey, isWholeBackdropSet, keyframePropertyName, keyframeStyleEntries, legacyEnterToTransition, matchRouteParams, mediaQueryFor, mergeSwiperBreakpoints, migrateLegacyDirection, motionAllowed, nearestCommonAncestorId, needsAccessibleName, nodeA11yAttributes, nodeCssId, nodeTraitValue, nodeUsesContext, normalizeAppPath, normalizeCollectionResult, normalizeGalleryImage, normalizeIconClass, parentBreakpoint, parseUrlList, partClassName, planDataSource, planResponsiveRules, prefersReducedMotion, referencedDataSources, referencedDataSourcesDeep, renderDefaultDeclarations, resetPageStyleField, resetSeoField, resolveBoundValue, resolveContextValue, resolveDerivedInto, resolveGalleryEffect, resolveGalleryUrls, resolveInputChain, resolveInputs, resolvePageTransition, resolvePath, resolveRelativeInto, resolveRepeaterItems, resolveSeo, resolveSiblings, resolveSingleItemId, resolveStateStyles, resolveStyleProps, resolveToggleVisibility, resolveValueChain, rewriteViewportUnits, safeSetInput, serializeA11yAttributes, setInputOverride, setOverride, setSeoAuto, setSeoBinding, setSeoOverride, setSeoValue, stateNamesIn, statePseudoClass, stateSelectorSuffix, stripSuppressedProps, swiperAutoplayAllowed, swiperModuleNames, syncNodeA11yAttributes, variableAliases, variableItemsFrom, withContextSlots, withDefaultHoverTransition, wrapInBreakpointQuery, wrapInMediaQuery };
|
|
8011
|
+
export { A11yAttribute, A11yTrait, ACCESSIBLE_NAME_TYPES, AOSService, ARIA_CURRENT_PAGE, BACKDROP_TWIN_KEY, BACKDROP_WHOLE_KEY, BREAKPOINTS, Breakpoint, BreakpointQueryKind, BuilderButtonComponent, BuilderDividerComponent, BuilderHeadingComponent, BuilderIconComponent, BuilderImageComponent, BuilderLinkComponent, BuilderSpacerComponent, ButtonBlockComponent, COMPONENT_STATE_SELECTOR, CONTAINER_HTML_TAGS, CONTEXT_ACTION_TYPES, CURRENT_LINK_TYPES, CardComponent, ClientGalleryComponent, ClientListComponent, ClientListItemComponent, ClientRepeaterComponent, ClientSliderContainerComponent, ClientSliderSlideComponent, ComponentInstanceRegistryService, ComponentState, ContainerComponent, ContextStore, DECORATIVE_TYPES, DEFAULT_GALLERY_SCHEDULER, DEFAULT_PAGE_TRANSITION, DEFAULT_PAGE_TRANSITION_DURATION, DEFAULT_PAGE_TRANSITION_EASING, DEFAULT_PAGE_TRANSITION_PERSPECTIVE, DEFAULT_PHOSPHOR_WEIGHT, DEFAULT_WIDTH_BY_TYPE, DIALOG_CLOSE_ABOVE_ATTRIBUTE, DIALOG_NODE_TYPE, DataSourceSortDir, DeclarationContext, ENTRANCE_ACTION_TYPES, EXIT_ACTION_TYPES, FormRenderState, FormRuntimeService, GALLERY_EFFECTS, GALLERY_EFFECT_DESCRIPTORS, GalleryLoop, HOVER_DEFAULT_TRANSITION, HOVER_STATES, INTERACTION_HIDDEN_ATTRIBUTE, IOX_BUILDER_EVENTS, IOX_FORM_MESSAGES, IOX_FORM_NAVIGATOR, IOX_FORM_TRANSPORT, IS_PREVIEW, IoxAnimateContainer, IoxAosDirective, IoxAosModule, IoxBuilderComponentsModule, IoxComponentRegistryService, IoxDialogComponent, IoxFieldComponent, IoxFormComponent, IoxFormErrorComponent, IoxFormSuccessComponent, IoxPageComponent, IoxPageModule, IoxSubmitButtonComponent, IoxUiModule, LEGACY_DIRECTION_KEY, LEGACY_HOVER_TRANSITION, LinkedContainerComponent, MANAGED_A11Y_ATTRIBUTES, MAX_LINES_KEY, ON_STATE_ROLES, PAGE_STYLE_TOKENS, PAGE_TOKEN_FALLBACKS, PAGE_TRANSITION_CATEGORIES, PAGE_TRANSITION_PRESETS, PART_CLASS_NAMES, PIPE_DESCRIPTORS, PIPE_REGISTRY, PageScrollProvider, PageStyleField, PageStyleSource, REDUCED_MOTION_QUERY, RESERVED_ALIAS_PREFIX, SORT_PARAM, STATE_PSEUDO_CLASS, SUPPRESSED_STYLE_PROPS_BY_TYPE, SWIPER_A11Y_OPTIONS, SWIPER_RESPONSIVE_TRAITS, SectionComponent, SwiperModuleName, TARGETED_STATE_SUFFIX, TEXT_ALIGN_KEY, TEXT_DIRECTION_KEY, TRANSITION_FEELS, TextAlign, TextBlockComponent, VALIDATION_STATES, VALIDATION_STATE_CLASS, VIRTUAL_TRAIT_GROUPS, VIRTUAL_TRAIT_KEYS, ViewPositionDirective, ViewPositionModule, VisibilityActionType, activeActions, applyBindingPipes, applyFeel, breakpointDef, breakpointForWidth, breakpointQueryFor, buildDataSourceFilter, buildInteractionKeyframes, buildPartSelector, buildRelatedFilter, buildSwiperBreakpoints, buildTargetedStateSelector, buildTargetedSuffixSelector, buildTransitionTimeline, cascadeChain, clearInputOverride, clearOverride, closeAboveMediaQuery, collectContextSlotKeys, collectReferencedAliases, compileDeclarations, compilePageStyle, componentStatesFor, composeVirtualTraits, computeRelative, containerHtmlTag, contextActionEffect, contextSlotKeys, countOverrides, dataSourcePlanToRequest, declaredInputNames, decomposeBackdropFilter, defaultHoverTransition, defaultMessageResolver, deriveSeoFromContent, describePageStyle, describeSeoFields, dialogCloseAboveMinWidth, effectiveActionType, effectiveTransitionId, entrancePreStateStyle, excludeSelf, feelFor, finalKeyframe, getByPath, getSeoValue, hasHoverState, hasOwnTransition, initialSlotValues, isActionEnabled, isContextAction, isCurrentLink, isExternalOrFragment, isGradientPaint, isInputOverriddenAt, isOverriddenAt, isReservedAlias, isValidSlotKey, isWholeBackdropSet, keyframePropertyName, keyframeStyleEntries, legacyEnterToTransition, matchRouteParams, mediaQueryFor, mergeSwiperBreakpoints, migrateLegacyDirection, migrateLegacyTextAlign, motionAllowed, nearestCommonAncestorId, needsAccessibleName, nodeA11yAttributes, nodeCssId, nodeTraitValue, nodeUsesContext, normalizeAppPath, normalizeCollectionResult, normalizeGalleryImage, normalizeIconClass, parentBreakpoint, parseUrlList, partClassName, planDataSource, planResponsiveRules, prefersReducedMotion, referencedDataSources, referencedDataSourcesDeep, renderDefaultDeclarations, resetPageStyleField, resetSeoField, resolveBoundValue, resolveContextValue, resolveDerivedInto, resolveGalleryEffect, resolveGalleryUrls, resolveInputChain, resolveInputs, resolvePageTransition, resolvePath, resolveRelativeInto, resolveRepeaterItems, resolveSeo, resolveSiblings, resolveSingleItemId, resolveStateStyles, resolveStyleProps, resolveToggleVisibility, resolveValueChain, rewriteViewportUnits, safeSetInput, serializeA11yAttributes, setInputOverride, setOverride, setSeoAuto, setSeoBinding, setSeoOverride, setSeoValue, sortParamValue, stateNamesIn, statePseudoClass, stateSelectorSuffix, stripSuppressedProps, swiperAutoplayAllowed, swiperModuleNames, syncNodeA11yAttributes, targetedStateSelector, variableAliases, variableItemsFrom, withContextSlots, withDefaultHoverTransition, wrapInBreakpointQuery, wrapInMediaQuery };
|
|
7909
8012
|
//# sourceMappingURL=vectoriox-iox-ui.mjs.map
|