@emuanalytics/flow-rdf-ui 4.1.5 → 4.1.7

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.
@@ -2,7 +2,7 @@ import { html, nothing } from 'lit';
2
2
  import { FlowRdfFormControl } from '../../internal/flow-ui-rdf-element.mjs';
3
3
  import { property, state, query } from 'lit/decorators.js';
4
4
  import { FormControlController } from '../../internal/form.mjs';
5
- import { debounce } from '@emuanalytics/flow-rdf-core/utils';
5
+ import { debounce, isStringFull } from '@emuanalytics/flow-rdf-core/utils';
6
6
  import { watch } from '../../internal/watch.mjs';
7
7
  import { boolean } from '../../internal/boolean.mjs';
8
8
  import { classMap } from 'lit-html/directives/class-map.js';
@@ -56,6 +56,7 @@ class FlowUiAutocomplete extends FlowRdfFormControl {
56
56
  this.displayWith = (value) => value;
57
57
  this.debounceDelay = 0;
58
58
  this.clearable = false;
59
+ this.clearOnFocus = false;
59
60
  this.inputText = "";
60
61
  this.open = false;
61
62
  this.selectedOption = null;
@@ -78,6 +79,8 @@ class FlowUiAutocomplete extends FlowRdfFormControl {
78
79
  this.inline = boolean(this.inline, true);
79
80
  this.divider = boolean(this.divider, true);
80
81
  this.clearable = boolean(this.clearable, true);
82
+ this.hoist = boolean(this.hoist, true);
83
+ this.clearOnFocus = boolean(this.clearOnFocus, true);
81
84
  }
82
85
  /** Gets the associated form, if one exists. */
83
86
  getForm() {
@@ -187,10 +190,12 @@ class FlowUiAutocomplete extends FlowRdfFormControl {
187
190
  event.preventDefault();
188
191
  }
189
192
  /** @internal Handle the `mousedown` event from the clear button */
190
- handleClearMouseDown(event) {
193
+ async handleClearMouseDown(event) {
191
194
  event.stopPropagation();
192
195
  event.preventDefault();
193
- this.setValue("", { emitInputEvent: true });
196
+ this.setValue("", { emitInputEvent: true, emitChangeEvent: true });
197
+ await waitForEvent(this, "flow-ui-input");
198
+ this.hasOptions = false;
194
199
  this.input.focus({ preventScroll: true });
195
200
  }
196
201
  /** @internal Handle option selection when an option is clicked on */
@@ -328,6 +333,14 @@ class FlowUiAutocomplete extends FlowRdfFormControl {
328
333
  this.hasFocus = true;
329
334
  this.input.focus({ preventScroll: true });
330
335
  this.emit("flow-ui-focus");
336
+ if (this.clearOnFocus) {
337
+ if (isStringFull(this.value)) {
338
+ this.setValue("", { emitInputEvent: true, emitChangeEvent: true });
339
+ } else {
340
+ this.inputText = "";
341
+ }
342
+ this.hasOptions = false;
343
+ }
331
344
  this.toggleListbox();
332
345
  this.addListenersForDropdown();
333
346
  }
@@ -374,8 +387,8 @@ class FlowUiAutocomplete extends FlowRdfFormControl {
374
387
  const hasHelpTextSlot = this.hasSlotController.test("help-text");
375
388
  const hasLabel = !!this.label || !!hasLabelSlot;
376
389
  const hasHelpText = !!this.helpText || !!hasHelpTextSlot;
377
- const hasClearIcon = this.clearable && this.value.length > 0;
378
- const isPlaceholderVisible = this.placeholder && this.inputText.length === 0;
390
+ const hasClearIcon = this.clearable && isStringFull(this.value) && !this.disabled;
391
+ const isPlaceholderVisible = this.placeholder && isStringFull(this.inputText) === false;
379
392
  const horizontalPlacement = this.inline ? "end" : "start";
380
393
  const placement = `${this.placement}-${horizontalPlacement}`;
381
394
  const strategy = this.inline || this.hoist ? "fixed" : "absolute";
@@ -398,12 +411,7 @@ class FlowUiAutocomplete extends FlowRdfFormControl {
398
411
  "form-control--pill": this.pill
399
412
  })}
400
413
  >
401
- <label
402
- id="label"
403
- part="label"
404
- class="form-control__label"
405
- aria-hidden=${hasLabel ? "false" : "true"}
406
- >
414
+ <label id="label" part="label" class="form-control__label" aria-hidden=${hasLabel ? "false" : "true"}>
407
415
  <slot name="label">${this.label}</slot>
408
416
  </label>
409
417
 
@@ -416,10 +424,7 @@ class FlowUiAutocomplete extends FlowRdfFormControl {
416
424
  <slot name="help-text">${this.helpText}</slot>
417
425
  </div>
418
426
 
419
- <div
420
- part="control"
421
- class="form-control__input"
422
- >
427
+ <div part="control" class="form-control__input">
423
428
  <flow-ui-popup
424
429
  class=${classMap({
425
430
  autocomplete: true,
@@ -475,7 +480,7 @@ class FlowUiAutocomplete extends FlowRdfFormControl {
475
480
  .value=${this.inputText}
476
481
  ?disabled=${this.disabled}
477
482
  @focus=${this.handleInputFocus}
478
- @blur=${this.handleInputBlur}
483
+ @blur=${this.handleInputBlur}
479
484
  @input=${this.handleInput}
480
485
  @change=${this.handleInputChange}
481
486
  />
@@ -483,36 +488,36 @@ class FlowUiAutocomplete extends FlowRdfFormControl {
483
488
  </div>
484
489
 
485
490
  ${hasClearIcon ? html`
486
- <button
487
- part="clear-button"
488
- class="autocomplete__clear"
489
- type="button"
490
- aria-label=${this.localize.term("clearEntry")}
491
- @mousedown=${this.handleClearMouseDown}
492
- @click=${this.handleClearClick}
493
- tabindex="-1"
494
- >
495
- <slot name="clear-icon">
496
- <flow-ui-icon name="x-circle-fill" library="system"></flow-ui-icon>
497
- </slot>
498
- </button>
499
- ` : nothing}
500
-
491
+ <button
492
+ part="clear-button"
493
+ class="autocomplete__clear"
494
+ type="button"
495
+ aria-label=${this.localize.term("clearEntry")}
496
+ @mousedown=${this.handleClearMouseDown}
497
+ @click=${this.handleClearClick}
498
+ tabindex="-1"
499
+ >
500
+ <slot name="clear-icon">
501
+ <flow-ui-icon name="x-circle-fill" library="system"></flow-ui-icon>
502
+ </slot>
503
+ </button>
504
+ ` : nothing}
505
+
501
506
  <slot part="suffix" name="suffix" class="autocomplete__suffix"></slot>
502
507
  </div>
503
508
 
504
509
  <div
505
- id="listbox"
506
- role="listbox"
507
- part="listbox"
508
- class="autocomplete__listbox"
509
- aria-labelledby="label"
510
- aria-expanded=${this.open ? "true" : "false"}
511
- aria-multiselectable="false"
512
- @mouseup=${this.handleListboxClick}
513
- @slotchange=${this.handleDefaultSlotChange}
510
+ id="listbox"
511
+ role="listbox"
512
+ part="listbox"
513
+ class="autocomplete__listbox"
514
+ aria-labelledby="label"
515
+ aria-expanded=${this.open ? "true" : "false"}
516
+ aria-multiselectable="false"
517
+ @mouseup=${this.handleListboxClick}
518
+ @slotchange=${this.handleDefaultSlotChange}
514
519
  >
515
- <slot></slot>
520
+ <slot></slot>
516
521
  </div>
517
522
  </flow-ui-popup>
518
523
  </div>
@@ -578,6 +583,9 @@ __decorateClass([
578
583
  __decorateClass([
579
584
  property({ type: Boolean, reflect: true })
580
585
  ], FlowUiAutocomplete.prototype, "clearable", 2);
586
+ __decorateClass([
587
+ property({ type: Boolean, reflect: true, attribute: "clear-on-focus" })
588
+ ], FlowUiAutocomplete.prototype, "clearOnFocus", 2);
581
589
  __decorateClass([
582
590
  state()
583
591
  ], FlowUiAutocomplete.prototype, "inputText", 2);
@@ -177,7 +177,7 @@ const styles = css`
177
177
  border: none;
178
178
  background: none;
179
179
  padding: 0;
180
- margin-inline-start: var(--control-spacing);
180
+ margin-inline-end: var(--control-spacing);
181
181
  transition: var(--flow-ui-transition-fast) color;
182
182
  cursor: pointer;
183
183
  }
@@ -46,10 +46,10 @@ function predicateFromRule(rule, config) {
46
46
  const caseInsensitive = isStringType(fieldConfig) && fieldConfig.caseInsensitive;
47
47
  switch (rule.operator) {
48
48
  case "=":
49
- operator = "$eq";
49
+ operator = caseInsensitive ? "$iEq" : "$eq";
50
50
  break;
51
51
  case "!=":
52
- operator = "$ne";
52
+ operator = caseInsensitive ? "$iNe" : "$ne";
53
53
  break;
54
54
  case "<":
55
55
  operator = "$lt";
@@ -957,7 +957,7 @@
957
957
  "kind": "field",
958
958
  "name": "debouncedInput",
959
959
  "type": {
960
- "text": "((displayValue: string) => void)"
960
+ "text": "(displayValue: string) => void"
961
961
  },
962
962
  "privacy": "private"
963
963
  },
@@ -1148,7 +1148,6 @@
1148
1148
  "type": {
1149
1149
  "text": "((value: string) => string) | ((value: string) => Promise<string>)"
1150
1150
  },
1151
- "default": "(value => value)",
1152
1151
  "description": "Function for determining the `displayValue` for a given `value`.\nBy default, it will show the `value` itself.",
1153
1152
  "attribute": "displayWith"
1154
1153
  },
@@ -1174,6 +1173,17 @@
1174
1173
  "attribute": "clearable",
1175
1174
  "reflects": true
1176
1175
  },
1176
+ {
1177
+ "kind": "field",
1178
+ "name": "clearOnFocus",
1179
+ "type": {
1180
+ "text": "boolean"
1181
+ },
1182
+ "default": "false",
1183
+ "description": "Clear the value when the autocomplete is focused on",
1184
+ "attribute": "clear-on-focus",
1185
+ "reflects": true
1186
+ },
1177
1187
  {
1178
1188
  "kind": "field",
1179
1189
  "name": "inputText",
@@ -1514,7 +1524,6 @@
1514
1524
  "type": {
1515
1525
  "text": "((value: string) => string) | ((value: string) => Promise<string>)"
1516
1526
  },
1517
- "default": "(value => value)",
1518
1527
  "description": "Function for determining the `displayValue` for a given `value`.\nBy default, it will show the `value` itself.",
1519
1528
  "fieldName": "displayWith"
1520
1529
  },
@@ -1535,6 +1544,15 @@
1535
1544
  "default": "false",
1536
1545
  "description": "Show the option to clear input",
1537
1546
  "fieldName": "clearable"
1547
+ },
1548
+ {
1549
+ "name": "clear-on-focus",
1550
+ "type": {
1551
+ "text": "boolean"
1552
+ },
1553
+ "default": "false",
1554
+ "description": "Clear the value when the autocomplete is focused on",
1555
+ "fieldName": "clearOnFocus"
1538
1556
  }
1539
1557
  ],
1540
1558
  "superclass": {
@@ -1586,12 +1604,12 @@
1586
1604
  },
1587
1605
  {
1588
1606
  "kind": "javascript-module",
1589
- "path": "components/badge/badge.component.js",
1607
+ "path": "components/breadcrumb/breadcrumb.component.js",
1590
1608
  "declarations": [
1591
1609
  {
1592
1610
  "kind": "class",
1593
1611
  "description": "",
1594
- "name": "FlowUiBadge",
1612
+ "name": "FlowUiBreadcrumb",
1595
1613
  "cssParts": [
1596
1614
  {
1597
1615
  "description": "The component's base wrapper.",
@@ -1600,100 +1618,84 @@
1600
1618
  ],
1601
1619
  "slots": [
1602
1620
  {
1603
- "description": "The badge's content.",
1621
+ "description": "One or more breadcrumb items to display.",
1604
1622
  "name": ""
1623
+ },
1624
+ {
1625
+ "description": "The separator to use between breadcrumb items. Works best with `<flow-ui-icon>`.",
1626
+ "name": "separator"
1605
1627
  }
1606
1628
  ],
1607
1629
  "members": [
1608
1630
  {
1609
1631
  "kind": "field",
1610
- "name": "variant",
1611
- "type": {
1612
- "text": "'primary' | 'secondary' | 'success' | 'neutral' | 'warning' | 'danger'"
1613
- },
1614
- "default": "'primary'",
1615
- "description": "The badge's theme variant.",
1616
- "attribute": "variant",
1617
- "reflects": true
1632
+ "name": "localize",
1633
+ "privacy": "private",
1634
+ "readonly": true,
1635
+ "default": "new LocalizeController(this)"
1618
1636
  },
1619
1637
  {
1620
1638
  "kind": "field",
1621
- "name": "size",
1622
- "type": {
1623
- "text": "'small' | 'medium' | 'large'"
1624
- },
1625
- "default": "'medium'",
1626
- "description": "The badge size.",
1627
- "attribute": "size",
1628
- "reflects": true
1639
+ "name": "separatorDir",
1640
+ "privacy": "private"
1629
1641
  },
1630
1642
  {
1631
1643
  "kind": "field",
1632
- "name": "pill",
1644
+ "name": "defaultSlot",
1633
1645
  "type": {
1634
- "text": "boolean"
1646
+ "text": "HTMLSlotElement"
1635
1647
  },
1636
- "default": "false",
1637
- "description": "Draws a pill-style badge with rounded edges.",
1638
- "attribute": "pill",
1639
- "reflects": true
1648
+ "privacy": "private"
1640
1649
  },
1641
1650
  {
1642
1651
  "kind": "field",
1643
- "name": "pulse",
1644
- "type": {
1645
- "text": "boolean"
1646
- },
1647
- "default": "false",
1648
- "description": "Makes the badge pulsate to draw attention.",
1649
- "attribute": "pulse",
1650
- "reflects": true
1651
- }
1652
- ],
1653
- "attributes": [
1654
- {
1655
- "name": "variant",
1652
+ "name": "separatorSlot",
1656
1653
  "type": {
1657
- "text": "'primary' | 'secondary' | 'success' | 'neutral' | 'warning' | 'danger'"
1654
+ "text": "HTMLSlotElement"
1658
1655
  },
1659
- "default": "'primary'",
1660
- "description": "The badge's theme variant.",
1661
- "fieldName": "variant"
1656
+ "privacy": "private"
1662
1657
  },
1663
1658
  {
1664
- "name": "size",
1659
+ "kind": "field",
1660
+ "name": "label",
1665
1661
  "type": {
1666
- "text": "'small' | 'medium' | 'large'"
1662
+ "text": "string"
1667
1663
  },
1668
- "default": "'medium'",
1669
- "description": "The badge size.",
1670
- "fieldName": "size"
1664
+ "default": "''",
1665
+ "description": "The label to use for the breadcrumb control. This will not be shown on the screen, but it will be announced by\nscreen readers and other assistive devices to provide more context for users.",
1666
+ "attribute": "label"
1671
1667
  },
1672
1668
  {
1673
- "name": "pill",
1674
- "type": {
1675
- "text": "boolean"
1676
- },
1677
- "default": "false",
1678
- "description": "Draws a pill-style badge with rounded edges.",
1679
- "fieldName": "pill"
1669
+ "kind": "method",
1670
+ "name": "getSeparator",
1671
+ "privacy": "private"
1680
1672
  },
1681
1673
  {
1682
- "name": "pulse",
1674
+ "kind": "method",
1675
+ "name": "handleSlotChange",
1676
+ "privacy": "private"
1677
+ }
1678
+ ],
1679
+ "attributes": [
1680
+ {
1681
+ "name": "label",
1683
1682
  "type": {
1684
- "text": "boolean"
1683
+ "text": "string"
1685
1684
  },
1686
- "default": "false",
1687
- "description": "Makes the badge pulsate to draw attention.",
1688
- "fieldName": "pulse"
1685
+ "default": "''",
1686
+ "description": "The label to use for the breadcrumb control. This will not be shown on the screen, but it will be announced by\nscreen readers and other assistive devices to provide more context for users.",
1687
+ "fieldName": "label"
1689
1688
  }
1690
1689
  ],
1691
1690
  "superclass": {
1692
1691
  "name": "FlowRdfElement",
1693
1692
  "module": "/src/internal/flow-ui-rdf-element"
1694
1693
  },
1695
- "tagName": "flow-ui-badge",
1696
- "summary": "Badges are used to draw attention and display statuses or counts.",
1694
+ "tagName": "flow-ui-breadcrumb",
1695
+ "summary": "Breadcrumbs provide a group of links so users can easily navigate a website's hierarchy.",
1696
+ "dependencies": [
1697
+ "flow-ui-icon"
1698
+ ],
1697
1699
  "customElement": true
1698
1700
  }
1699
1701
  ],
@@ -1702,23 +1704,23 @@
1702
1704
  "kind": "js",
1703
1705
  "name": "default",
1704
1706
  "declaration": {
1705
- "name": "FlowUiBadge",
1706
- "module": "components/badge/badge.component.js"
1707
+ "name": "FlowUiBreadcrumb",
1708
+ "module": "components/breadcrumb/breadcrumb.component.js"
1707
1709
  }
1708
1710
  }
1709
1711
  ]
1710
1712
  },
1711
1713
  {
1712
1714
  "kind": "javascript-module",
1713
- "path": "components/badge/badge.js",
1715
+ "path": "components/breadcrumb/breadcrumb.js",
1714
1716
  "declarations": [],
1715
1717
  "exports": [
1716
1718
  {
1717
1719
  "kind": "js",
1718
1720
  "name": "default",
1719
1721
  "declaration": {
1720
- "name": "FlowUiBadge",
1721
- "module": "components/badge/badge.js"
1722
+ "name": "FlowUiBreadcrumb",
1723
+ "module": "components/breadcrumb/breadcrumb.js"
1722
1724
  }
1723
1725
  }
1724
1726
  ]
@@ -2186,122 +2188,114 @@
2186
2188
  },
2187
2189
  {
2188
2190
  "kind": "javascript-module",
2189
- "path": "components/breadcrumb-item/breadcrumb-item.component.js",
2191
+ "path": "components/badge/badge.component.js",
2190
2192
  "declarations": [
2191
2193
  {
2192
2194
  "kind": "class",
2193
2195
  "description": "",
2194
- "name": "FlowUiBreadcrumbItem",
2196
+ "name": "FlowUiBadge",
2195
2197
  "cssParts": [
2196
2198
  {
2197
2199
  "description": "The component's base wrapper.",
2198
2200
  "name": "base"
2199
- },
2200
- {
2201
- "description": "The breadcrumb item's label.",
2202
- "name": "label"
2203
- },
2204
- {
2205
- "description": "The container that wraps the prefix.",
2206
- "name": "prefix"
2207
- },
2208
- {
2209
- "description": "The container that wraps the suffix.",
2210
- "name": "suffix"
2211
- },
2212
- {
2213
- "description": "The container that wraps the separator.",
2214
- "name": "separator"
2215
2201
  }
2216
2202
  ],
2217
2203
  "slots": [
2218
2204
  {
2219
- "description": "The breadcrumb item's label.",
2205
+ "description": "The badge's content.",
2220
2206
  "name": ""
2221
- },
2222
- {
2223
- "description": "An optional prefix, usually an icon or icon button.",
2224
- "name": "prefix"
2225
- },
2226
- {
2227
- "description": "An optional suffix, usually an icon or icon button.",
2228
- "name": "suffix"
2229
- },
2230
- {
2231
- "description": "The separator to use for the breadcrumb item. This will only change the separator for this item. If you want to change it for all items in the group, set the separator on `<flow-ui-breadcrumb>` instead.",
2232
- "name": "separator"
2233
2207
  }
2234
2208
  ],
2235
2209
  "members": [
2236
2210
  {
2237
2211
  "kind": "field",
2238
- "name": "hasSlotController",
2239
- "privacy": "private",
2240
- "readonly": true,
2241
- "default": "new HasSlotController(this, 'prefix', 'suffix')"
2212
+ "name": "variant",
2213
+ "type": {
2214
+ "text": "'primary' | 'secondary' | 'success' | 'neutral' | 'warning' | 'danger'"
2215
+ },
2216
+ "default": "'primary'",
2217
+ "description": "The badge's theme variant.",
2218
+ "attribute": "variant",
2219
+ "reflects": true
2242
2220
  },
2243
2221
  {
2244
2222
  "kind": "field",
2245
- "name": "href",
2223
+ "name": "size",
2246
2224
  "type": {
2247
- "text": "string | undefined"
2225
+ "text": "'small' | 'medium' | 'large'"
2248
2226
  },
2249
- "description": "Optional URL to direct the user to when the breadcrumb item is activated. When set, a link will be rendered\ninternally. When unset, a button will be rendered instead.",
2250
- "attribute": "href"
2227
+ "default": "'medium'",
2228
+ "description": "The badge size.",
2229
+ "attribute": "size",
2230
+ "reflects": true
2251
2231
  },
2252
2232
  {
2253
2233
  "kind": "field",
2254
- "name": "target",
2234
+ "name": "pill",
2255
2235
  "type": {
2256
- "text": "'_blank' | '_parent' | '_self' | '_top' | undefined"
2236
+ "text": "boolean"
2257
2237
  },
2258
- "description": "Tells the browser where to open the link. Only used when `href` is set.",
2259
- "attribute": "target"
2238
+ "default": "false",
2239
+ "description": "Draws a pill-style badge with rounded edges.",
2240
+ "attribute": "pill",
2241
+ "reflects": true
2260
2242
  },
2261
2243
  {
2262
2244
  "kind": "field",
2263
- "name": "rel",
2245
+ "name": "pulse",
2264
2246
  "type": {
2265
- "text": "string"
2247
+ "text": "boolean"
2266
2248
  },
2267
- "default": "'noreferrer noopener'",
2268
- "description": "The `rel` attribute to use on the link. Only used when `href` is set.",
2269
- "attribute": "rel"
2249
+ "default": "false",
2250
+ "description": "Makes the badge pulsate to draw attention.",
2251
+ "attribute": "pulse",
2252
+ "reflects": true
2270
2253
  }
2271
2254
  ],
2272
2255
  "attributes": [
2273
2256
  {
2274
- "name": "href",
2257
+ "name": "variant",
2275
2258
  "type": {
2276
- "text": "string | undefined"
2259
+ "text": "'primary' | 'secondary' | 'success' | 'neutral' | 'warning' | 'danger'"
2277
2260
  },
2278
- "description": "Optional URL to direct the user to when the breadcrumb item is activated. When set, a link will be rendered\ninternally. When unset, a button will be rendered instead.",
2279
- "fieldName": "href"
2261
+ "default": "'primary'",
2262
+ "description": "The badge's theme variant.",
2263
+ "fieldName": "variant"
2280
2264
  },
2281
2265
  {
2282
- "name": "target",
2266
+ "name": "size",
2283
2267
  "type": {
2284
- "text": "'_blank' | '_parent' | '_self' | '_top' | undefined"
2268
+ "text": "'small' | 'medium' | 'large'"
2285
2269
  },
2286
- "description": "Tells the browser where to open the link. Only used when `href` is set.",
2287
- "fieldName": "target"
2270
+ "default": "'medium'",
2271
+ "description": "The badge size.",
2272
+ "fieldName": "size"
2288
2273
  },
2289
2274
  {
2290
- "name": "rel",
2275
+ "name": "pill",
2291
2276
  "type": {
2292
- "text": "string"
2277
+ "text": "boolean"
2293
2278
  },
2294
- "default": "'noreferrer noopener'",
2295
- "description": "The `rel` attribute to use on the link. Only used when `href` is set.",
2296
- "fieldName": "rel"
2279
+ "default": "false",
2280
+ "description": "Draws a pill-style badge with rounded edges.",
2281
+ "fieldName": "pill"
2282
+ },
2283
+ {
2284
+ "name": "pulse",
2285
+ "type": {
2286
+ "text": "boolean"
2287
+ },
2288
+ "default": "false",
2289
+ "description": "Makes the badge pulsate to draw attention.",
2290
+ "fieldName": "pulse"
2297
2291
  }
2298
2292
  ],
2299
2293
  "superclass": {
2300
2294
  "name": "FlowRdfElement",
2301
2295
  "module": "/src/internal/flow-ui-rdf-element"
2302
2296
  },
2303
- "tagName": "flow-ui-breadcrumb-item",
2304
- "summary": "Breadcrumb Items are used inside [breadcrumbs](./flow-ui-breadcrumb) to represent different links.",
2297
+ "tagName": "flow-ui-badge",
2298
+ "summary": "Badges are used to draw attention and display statuses or counts.",
2305
2299
  "customElement": true
2306
2300
  }
2307
2301
  ],
@@ -2310,121 +2304,145 @@
2310
2304
  "kind": "js",
2311
2305
  "name": "default",
2312
2306
  "declaration": {
2313
- "name": "FlowUiBreadcrumbItem",
2314
- "module": "components/breadcrumb-item/breadcrumb-item.component.js"
2307
+ "name": "FlowUiBadge",
2308
+ "module": "components/badge/badge.component.js"
2315
2309
  }
2316
2310
  }
2317
2311
  ]
2318
2312
  },
2319
2313
  {
2320
2314
  "kind": "javascript-module",
2321
- "path": "components/breadcrumb-item/breadcrumb-item.js",
2315
+ "path": "components/badge/badge.js",
2322
2316
  "declarations": [],
2323
2317
  "exports": [
2324
2318
  {
2325
2319
  "kind": "js",
2326
2320
  "name": "default",
2327
2321
  "declaration": {
2328
- "name": "FlowUiBreadcrumbItem",
2329
- "module": "components/breadcrumb-item/breadcrumb-item.js"
2322
+ "name": "FlowUiBadge",
2323
+ "module": "components/badge/badge.js"
2330
2324
  }
2331
2325
  }
2332
2326
  ]
2333
2327
  },
2334
2328
  {
2335
2329
  "kind": "javascript-module",
2336
- "path": "components/breadcrumb/breadcrumb.component.js",
2330
+ "path": "components/breadcrumb-item/breadcrumb-item.component.js",
2337
2331
  "declarations": [
2338
2332
  {
2339
2333
  "kind": "class",
2340
2334
  "description": "",
2341
- "name": "FlowUiBreadcrumb",
2335
+ "name": "FlowUiBreadcrumbItem",
2342
2336
  "cssParts": [
2343
2337
  {
2344
2338
  "description": "The component's base wrapper.",
2345
2339
  "name": "base"
2340
+ },
2341
+ {
2342
+ "description": "The breadcrumb item's label.",
2343
+ "name": "label"
2344
+ },
2345
+ {
2346
+ "description": "The container that wraps the prefix.",
2347
+ "name": "prefix"
2348
+ },
2349
+ {
2350
+ "description": "The container that wraps the suffix.",
2351
+ "name": "suffix"
2352
+ },
2353
+ {
2354
+ "description": "The container that wraps the separator.",
2355
+ "name": "separator"
2346
2356
  }
2347
2357
  ],
2348
2358
  "slots": [
2349
2359
  {
2350
- "description": "One or more breadcrumb items to display.",
2360
+ "description": "The breadcrumb item's label.",
2351
2361
  "name": ""
2352
2362
  },
2353
2363
  {
2354
- "description": "The separator to use between breadcrumb items. Works best with `<flow-ui-icon>`.",
2364
+ "description": "An optional prefix, usually an icon or icon button.",
2365
+ "name": "prefix"
2366
+ },
2367
+ {
2368
+ "description": "An optional suffix, usually an icon or icon button.",
2369
+ "name": "suffix"
2370
+ },
2371
+ {
2372
+ "description": "The separator to use for the breadcrumb item. This will only change the separator for this item. If you want to change it for all items in the group, set the separator on `<flow-ui-breadcrumb>` instead.",
2355
2373
  "name": "separator"
2356
2374
  }
2357
2375
  ],
2358
2376
  "members": [
2359
2377
  {
2360
2378
  "kind": "field",
2361
- "name": "localize",
2379
+ "name": "hasSlotController",
2362
2380
  "privacy": "private",
2363
2381
  "readonly": true,
2364
- "default": "new LocalizeController(this)"
2365
- },
2366
- {
2367
- "kind": "field",
2368
- "name": "separatorDir",
2369
- "privacy": "private"
2382
+ "default": "new HasSlotController(this, 'prefix', 'suffix')"
2370
2383
  },
2371
2384
  {
2372
2385
  "kind": "field",
2373
- "name": "defaultSlot",
2386
+ "name": "href",
2374
2387
  "type": {
2375
- "text": "HTMLSlotElement"
2388
+ "text": "string | undefined"
2376
2389
  },
2377
- "privacy": "private"
2390
+ "description": "Optional URL to direct the user to when the breadcrumb item is activated. When set, a link will be rendered\ninternally. When unset, a button will be rendered instead.",
2391
+ "attribute": "href"
2378
2392
  },
2379
2393
  {
2380
2394
  "kind": "field",
2381
- "name": "separatorSlot",
2395
+ "name": "target",
2382
2396
  "type": {
2383
- "text": "HTMLSlotElement"
2397
+ "text": "'_blank' | '_parent' | '_self' | '_top' | undefined"
2384
2398
  },
2385
- "privacy": "private"
2399
+ "description": "Tells the browser where to open the link. Only used when `href` is set.",
2400
+ "attribute": "target"
2386
2401
  },
2387
2402
  {
2388
2403
  "kind": "field",
2389
- "name": "label",
2404
+ "name": "rel",
2390
2405
  "type": {
2391
2406
  "text": "string"
2392
2407
  },
2393
- "default": "''",
2394
- "description": "The label to use for the breadcrumb control. This will not be shown on the screen, but it will be announced by\nscreen readers and other assistive devices to provide more context for users.",
2395
- "attribute": "label"
2396
- },
2397
- {
2398
- "kind": "method",
2399
- "name": "getSeparator",
2400
- "privacy": "private"
2401
- },
2402
- {
2403
- "kind": "method",
2404
- "name": "handleSlotChange",
2405
- "privacy": "private"
2408
+ "default": "'noreferrer noopener'",
2409
+ "description": "The `rel` attribute to use on the link. Only used when `href` is set.",
2410
+ "attribute": "rel"
2406
2411
  }
2407
2412
  ],
2408
2413
  "attributes": [
2409
2414
  {
2410
- "name": "label",
2415
+ "name": "href",
2416
+ "type": {
2417
+ "text": "string | undefined"
2418
+ },
2419
+ "description": "Optional URL to direct the user to when the breadcrumb item is activated. When set, a link will be rendered\ninternally. When unset, a button will be rendered instead.",
2420
+ "fieldName": "href"
2421
+ },
2422
+ {
2423
+ "name": "target",
2424
+ "type": {
2425
+ "text": "'_blank' | '_parent' | '_self' | '_top' | undefined"
2426
+ },
2427
+ "description": "Tells the browser where to open the link. Only used when `href` is set.",
2428
+ "fieldName": "target"
2429
+ },
2430
+ {
2431
+ "name": "rel",
2411
2432
  "type": {
2412
2433
  "text": "string"
2413
2434
  },
2414
- "default": "''",
2415
- "description": "The label to use for the breadcrumb control. This will not be shown on the screen, but it will be announced by\nscreen readers and other assistive devices to provide more context for users.",
2416
- "fieldName": "label"
2435
+ "default": "'noreferrer noopener'",
2436
+ "description": "The `rel` attribute to use on the link. Only used when `href` is set.",
2437
+ "fieldName": "rel"
2417
2438
  }
2418
2439
  ],
2419
2440
  "superclass": {
2420
2441
  "name": "FlowRdfElement",
2421
2442
  "module": "/src/internal/flow-ui-rdf-element"
2422
2443
  },
2423
- "tagName": "flow-ui-breadcrumb",
2424
- "summary": "Breadcrumbs provide a group of links so users can easily navigate a website's hierarchy.",
2425
- "dependencies": [
2426
- "flow-ui-icon"
2427
- ],
2444
+ "tagName": "flow-ui-breadcrumb-item",
2445
+ "summary": "Breadcrumb Items are used inside [breadcrumbs](./flow-ui-breadcrumb) to represent different links.",
2428
2446
  "customElement": true
2429
2447
  }
2430
2448
  ],
@@ -2433,23 +2451,23 @@
2433
2451
  "kind": "js",
2434
2452
  "name": "default",
2435
2453
  "declaration": {
2436
- "name": "FlowUiBreadcrumb",
2437
- "module": "components/breadcrumb/breadcrumb.component.js"
2454
+ "name": "FlowUiBreadcrumbItem",
2455
+ "module": "components/breadcrumb-item/breadcrumb-item.component.js"
2438
2456
  }
2439
2457
  }
2440
2458
  ]
2441
2459
  },
2442
2460
  {
2443
2461
  "kind": "javascript-module",
2444
- "path": "components/breadcrumb/breadcrumb.js",
2462
+ "path": "components/breadcrumb-item/breadcrumb-item.js",
2445
2463
  "declarations": [],
2446
2464
  "exports": [
2447
2465
  {
2448
2466
  "kind": "js",
2449
2467
  "name": "default",
2450
2468
  "declaration": {
2451
- "name": "FlowUiBreadcrumb",
2452
- "module": "components/breadcrumb/breadcrumb.js"
2469
+ "name": "FlowUiBreadcrumbItem",
2470
+ "module": "components/breadcrumb-item/breadcrumb-item.js"
2453
2471
  }
2454
2472
  }
2455
2473
  ]
@@ -25718,6 +25736,6 @@
25718
25736
  ],
25719
25737
  "package": {
25720
25738
  "name": "@emuanalytics/flow-rdf-ui",
25721
- "version": "4.1.5"
25739
+ "version": "4.1.7"
25722
25740
  }
25723
25741
  }
package/dist/index.d.mts CHANGED
@@ -2032,6 +2032,8 @@ declare class FlowUiAutocomplete extends FlowRdfFormControl {
2032
2032
  debounceDelay: number;
2033
2033
  /** Show the option to clear input */
2034
2034
  clearable: boolean;
2035
+ /** Clear the value when the autocomplete is focused on */
2036
+ clearOnFocus: boolean;
2035
2037
  /** Current value displayed by the control; this can be what the user is typing or the label of the selected option */
2036
2038
  private inputText;
2037
2039
  /** @internal Is the listbox open or not */
@@ -2093,7 +2095,7 @@ declare class FlowUiAutocomplete extends FlowRdfFormControl {
2093
2095
  private handleInputBlur;
2094
2096
  handleClearClick(event: MouseEvent): void;
2095
2097
  /** @internal Handle the `mousedown` event from the clear button */
2096
- handleClearMouseDown(event: MouseEvent): void;
2098
+ handleClearMouseDown(event: MouseEvent): Promise<void>;
2097
2099
  /** @internal Handle option selection when an option is clicked on */
2098
2100
  private handleListboxClick;
2099
2101
  /** @internal Handle mouse and keyboard events in the document, outside the control. */
package/dist/index.d.ts CHANGED
@@ -2032,6 +2032,8 @@ declare class FlowUiAutocomplete extends FlowRdfFormControl {
2032
2032
  debounceDelay: number;
2033
2033
  /** Show the option to clear input */
2034
2034
  clearable: boolean;
2035
+ /** Clear the value when the autocomplete is focused on */
2036
+ clearOnFocus: boolean;
2035
2037
  /** Current value displayed by the control; this can be what the user is typing or the label of the selected option */
2036
2038
  private inputText;
2037
2039
  /** @internal Is the listbox open or not */
@@ -2093,7 +2095,7 @@ declare class FlowUiAutocomplete extends FlowRdfFormControl {
2093
2095
  private handleInputBlur;
2094
2096
  handleClearClick(event: MouseEvent): void;
2095
2097
  /** @internal Handle the `mousedown` event from the clear button */
2096
- handleClearMouseDown(event: MouseEvent): void;
2098
+ handleClearMouseDown(event: MouseEvent): Promise<void>;
2097
2099
  /** @internal Handle option selection when an option is clicked on */
2098
2100
  private handleListboxClick;
2099
2101
  /** @internal Handle mouse and keyboard events in the document, outside the control. */
@@ -1,3 +1,3 @@
1
- const version = "4.1.5";
1
+ const version = "4.1.7";
2
2
 
3
3
  export { version };
@@ -228,43 +228,22 @@
228
228
  "name": "clearable",
229
229
  "description": "Show the option to clear input",
230
230
  "values": []
231
+ },
232
+ {
233
+ "name": "clear-on-focus",
234
+ "description": "Clear the value when the autocomplete is focused on",
235
+ "values": []
231
236
  }
232
237
  ],
233
238
  "references": []
234
239
  },
235
240
  {
236
- "name": "flow-ui-badge",
237
- "description": "Badges are used to draw attention and display statuses or counts.\n\n\n---\n\n\n\n\n### **Slots:**\n - _default_ - The badge's content.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
241
+ "name": "flow-ui-breadcrumb",
242
+ "description": "Breadcrumbs provide a group of links so users can easily navigate a website's hierarchy.\n\n\n---\n\n\n\n\n### **Slots:**\n - _default_ - One or more breadcrumb items to display.\n- **separator** - The separator to use between breadcrumb items. Works best with `<flow-ui-icon>`.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
238
243
  "attributes": [
239
244
  {
240
- "name": "variant",
241
- "description": "The badge's theme variant.",
242
- "values": [
243
- { "name": "primary" },
244
- { "name": "secondary" },
245
- { "name": "success" },
246
- { "name": "neutral" },
247
- { "name": "warning" },
248
- { "name": "danger" }
249
- ]
250
- },
251
- {
252
- "name": "size",
253
- "description": "The badge size.",
254
- "values": [
255
- { "name": "small" },
256
- { "name": "medium" },
257
- { "name": "large" }
258
- ]
259
- },
260
- {
261
- "name": "pill",
262
- "description": "Draws a pill-style badge with rounded edges.",
263
- "values": []
264
- },
265
- {
266
- "name": "pulse",
267
- "description": "Makes the badge pulsate to draw attention.",
245
+ "name": "label",
246
+ "description": "The label to use for the breadcrumb control. This will not be shown on the screen, but it will be announced by\nscreen readers and other assistive devices to provide more context for users.",
268
247
  "values": []
269
248
  }
270
249
  ],
@@ -331,6 +310,44 @@
331
310
  ],
332
311
  "references": []
333
312
  },
313
+ {
314
+ "name": "flow-ui-badge",
315
+ "description": "Badges are used to draw attention and display statuses or counts.\n\n\n---\n\n\n\n\n### **Slots:**\n - _default_ - The badge's content.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
316
+ "attributes": [
317
+ {
318
+ "name": "variant",
319
+ "description": "The badge's theme variant.",
320
+ "values": [
321
+ { "name": "primary" },
322
+ { "name": "secondary" },
323
+ { "name": "success" },
324
+ { "name": "neutral" },
325
+ { "name": "warning" },
326
+ { "name": "danger" }
327
+ ]
328
+ },
329
+ {
330
+ "name": "size",
331
+ "description": "The badge size.",
332
+ "values": [
333
+ { "name": "small" },
334
+ { "name": "medium" },
335
+ { "name": "large" }
336
+ ]
337
+ },
338
+ {
339
+ "name": "pill",
340
+ "description": "Draws a pill-style badge with rounded edges.",
341
+ "values": []
342
+ },
343
+ {
344
+ "name": "pulse",
345
+ "description": "Makes the badge pulsate to draw attention.",
346
+ "values": []
347
+ }
348
+ ],
349
+ "references": []
350
+ },
334
351
  {
335
352
  "name": "flow-ui-breadcrumb-item",
336
353
  "description": "Breadcrumb Items are used inside [breadcrumbs](./flow-ui-breadcrumb) to represent different links.\n\n\n---\n\n\n\n\n### **Slots:**\n - _default_ - The breadcrumb item's label.\n- **prefix** - An optional prefix, usually an icon or icon button.\n- **suffix** - An optional suffix, usually an icon or icon button.\n- **separator** - The separator to use for the breadcrumb item. This will only change the separator for this item. If you want to change it for all items in the group, set the separator on `<flow-ui-breadcrumb>` instead.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **label** - The breadcrumb item's label.\n- **prefix** - The container that wraps the prefix.\n- **suffix** - The container that wraps the suffix.\n- **separator** - The container that wraps the separator.",
@@ -358,18 +375,6 @@
358
375
  ],
359
376
  "references": []
360
377
  },
361
- {
362
- "name": "flow-ui-breadcrumb",
363
- "description": "Breadcrumbs provide a group of links so users can easily navigate a website's hierarchy.\n\n\n---\n\n\n\n\n### **Slots:**\n - _default_ - One or more breadcrumb items to display.\n- **separator** - The separator to use between breadcrumb items. Works best with `<flow-ui-icon>`.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
364
- "attributes": [
365
- {
366
- "name": "label",
367
- "description": "The label to use for the breadcrumb control. This will not be shown on the screen, but it will be announced by\nscreen readers and other assistive devices to provide more context for users.",
368
- "values": []
369
- }
370
- ],
371
- "references": []
372
- },
373
378
  {
374
379
  "name": "flow-ui-busy-overlay",
375
380
  "description": "Busy overlay is used to indicate that a component which displays data is being currently updated.\n\n\n---\n\n\n\n\n### **Slots:**\n - _default_ - The component to overlay with when busy.\n- **busy-animation** - The indeterminate custom loading animation to display when busy.\n\n### **CSS Properties:**\n - **--transition-delay** - The delay after which the overlay is shown. _(default: undefined)_\n- **--transition-duration** - The duration of the overlay's fade-in/out transition. _(default: undefined)_\n- **--progress-ring-size** - The size of the default progress ring loading animation. _(default: undefined)_\n- **--progress-ring-track-width** - The width of the default progress ring's track. _(default: undefined)_\n- **--progress-ring-track-color** - The color of the default progress ring's track. _(default: undefined)_\n- **--overlay-background-color** - The background color of the overlay. _(default: undefined)_",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@emuanalytics/flow-rdf-ui",
3
- "version": "4.1.5",
3
+ "version": "4.1.7",
4
4
  "type": "module",
5
5
  "module": "dist/index.mjs",
6
6
  "types": "dist/index.d.ts",