@api-client/ui 0.5.26 → 0.5.28

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.
Files changed (92) hide show
  1. package/build/src/elements/app-bar/internals/AppBar.d.ts +1 -1
  2. package/build/src/elements/app-bar/internals/AppBar.d.ts.map +1 -1
  3. package/build/src/elements/app-bar/internals/AppBar.js +5 -5
  4. package/build/src/elements/app-bar/internals/AppBar.js.map +1 -1
  5. package/build/src/elements/currency/internals/Picker.d.ts +2 -2
  6. package/build/src/elements/currency/internals/Picker.d.ts.map +1 -1
  7. package/build/src/elements/currency/internals/Picker.js +13 -12
  8. package/build/src/elements/currency/internals/Picker.js.map +1 -1
  9. package/build/src/elements/data-table/DataTable.d.ts +1 -3
  10. package/build/src/elements/data-table/DataTable.d.ts.map +1 -1
  11. package/build/src/elements/data-table/DataTable.js +2 -4
  12. package/build/src/elements/data-table/DataTable.js.map +1 -1
  13. package/build/src/elements/file-system/internals/Breadcrumbs.d.ts +1 -2
  14. package/build/src/elements/file-system/internals/Breadcrumbs.d.ts.map +1 -1
  15. package/build/src/elements/file-system/internals/Breadcrumbs.js +2 -3
  16. package/build/src/elements/file-system/internals/Breadcrumbs.js.map +1 -1
  17. package/build/src/elements/navigation/internals/NavigationItem.js +1 -1
  18. package/build/src/elements/navigation/internals/NavigationItem.js.map +1 -1
  19. package/build/src/md/list/internals/List.d.ts +4 -2
  20. package/build/src/md/list/internals/List.d.ts.map +1 -1
  21. package/build/src/md/list/internals/List.js +16 -6
  22. package/build/src/md/list/internals/List.js.map +1 -1
  23. package/build/src/md/list/internals/ListItem.d.ts +10 -1
  24. package/build/src/md/list/internals/ListItem.d.ts.map +1 -1
  25. package/build/src/md/list/internals/ListItem.js +74 -8
  26. package/build/src/md/list/internals/ListItem.js.map +1 -1
  27. package/build/src/md/list/internals/ListItem.styles.d.ts.map +1 -1
  28. package/build/src/md/list/internals/ListItem.styles.js +38 -28
  29. package/build/src/md/list/internals/ListItem.styles.js.map +1 -1
  30. package/build/src/md/menu/internal/MenuItem.js +4 -4
  31. package/build/src/md/menu/internal/MenuItem.js.map +1 -1
  32. package/build/src/md/progress/internals/CircularProgress.d.ts +93 -0
  33. package/build/src/md/progress/internals/CircularProgress.d.ts.map +1 -0
  34. package/build/src/md/progress/internals/CircularProgress.js +156 -0
  35. package/build/src/md/progress/internals/CircularProgress.js.map +1 -0
  36. package/build/src/md/progress/internals/CircularProgress.styles.d.ts +3 -0
  37. package/build/src/md/progress/internals/CircularProgress.styles.d.ts.map +1 -0
  38. package/build/src/md/progress/internals/CircularProgress.styles.js +220 -0
  39. package/build/src/md/progress/internals/CircularProgress.styles.js.map +1 -0
  40. package/build/src/md/progress/internals/Range.d.ts +6 -0
  41. package/build/src/md/progress/internals/Range.d.ts.map +1 -1
  42. package/build/src/md/progress/internals/Range.js +41 -3
  43. package/build/src/md/progress/internals/Range.js.map +1 -1
  44. package/build/src/md/progress/internals/UiProgress.d.ts +0 -7
  45. package/build/src/md/progress/internals/UiProgress.d.ts.map +1 -1
  46. package/build/src/md/progress/internals/UiProgress.js +2 -36
  47. package/build/src/md/progress/internals/UiProgress.js.map +1 -1
  48. package/build/src/md/progress/ui-circular-progress.d.ts +11 -0
  49. package/build/src/md/progress/ui-circular-progress.d.ts.map +1 -0
  50. package/build/src/md/progress/ui-circular-progress.js +27 -0
  51. package/build/src/md/progress/ui-circular-progress.js.map +1 -0
  52. package/build/src/md/select/internals/Option.js +2 -2
  53. package/build/src/md/select/internals/Option.js.map +1 -1
  54. package/build/src/md/select/internals/Option.styles.d.ts.map +1 -1
  55. package/build/src/md/select/internals/Option.styles.js +0 -127
  56. package/build/src/md/select/internals/Option.styles.js.map +1 -1
  57. package/build/src/md/select/internals/Select.d.ts +11 -1
  58. package/build/src/md/select/internals/Select.d.ts.map +1 -1
  59. package/build/src/md/select/internals/Select.js +21 -2
  60. package/build/src/md/select/internals/Select.js.map +1 -1
  61. package/demo/elements/currency/index.html +2 -2
  62. package/demo/elements/navigation/navigation-item.html +4 -0
  63. package/demo/elements/navigation/navigation-item.ts +19 -0
  64. package/demo/md/list/list.ts +9 -3
  65. package/demo/md/progress/progress.ts +24 -1
  66. package/demo/md/select/index.ts +5 -0
  67. package/demo/md/tabs/tabs.ts +0 -4
  68. package/package.json +1 -1
  69. package/src/elements/app-bar/internals/AppBar.ts +5 -5
  70. package/src/elements/currency/internals/Picker.ts +17 -16
  71. package/src/elements/data-table/DataTable.ts +2 -4
  72. package/src/elements/file-system/internals/Breadcrumbs.ts +2 -3
  73. package/src/elements/navigation/internals/NavigationItem.ts +1 -1
  74. package/src/md/list/internals/List.ts +19 -8
  75. package/src/md/list/internals/ListItem.styles.ts +38 -28
  76. package/src/md/list/internals/ListItem.ts +55 -8
  77. package/src/md/menu/internal/MenuItem.ts +4 -4
  78. package/src/md/progress/internals/CircularProgress.styles.ts +220 -0
  79. package/src/md/progress/internals/CircularProgress.ts +129 -0
  80. package/src/md/progress/internals/Range.ts +29 -1
  81. package/src/md/progress/internals/UiProgress.ts +1 -30
  82. package/src/md/progress/ui-circular-progress.ts +15 -0
  83. package/src/md/select/internals/Option.styles.ts +0 -127
  84. package/src/md/select/internals/Option.ts +2 -2
  85. package/src/md/select/internals/Select.ts +13 -1
  86. package/test/elements/currency/CurrencyPicker.accessibility.test.ts +14 -14
  87. package/test/elements/currency/CurrencyPicker.core.test.ts +6 -6
  88. package/test/elements/currency/CurrencyPicker.integration.test.ts +2 -2
  89. package/test/elements/currency/CurrencyPicker.test.ts +10 -10
  90. package/test/elements/data-table/DataTable.browser.test.ts +2 -2
  91. package/test/md/menu/MenuItem.test.ts +2 -3
  92. package/test/md/progress/UiCircularProgressElement.test.ts +481 -0
@@ -13,18 +13,13 @@ let UiProgress = (() => {
13
13
  let _secondaryProgress_decorators;
14
14
  let _secondaryProgress_initializers = [];
15
15
  let _secondaryProgress_extraInitializers = [];
16
- let _indeterminate_decorators;
17
- let _indeterminate_initializers = [];
18
- let _indeterminate_extraInitializers = [];
19
16
  return class UiProgress extends _classSuper {
20
17
  static {
21
18
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
22
19
  _set_disabled_decorators = [property({ reflect: true, type: Boolean })];
23
20
  _secondaryProgress_decorators = [property({ type: Number, converter: floatConverter })];
24
- _indeterminate_decorators = [property({ reflect: true, type: Boolean })];
25
21
  __esDecorate(this, null, _set_disabled_decorators, { kind: "setter", name: "disabled", static: false, private: false, access: { has: obj => "disabled" in obj, set: (obj, value) => { obj.disabled = value; } }, metadata: _metadata }, null, _instanceExtraInitializers);
26
22
  __esDecorate(this, null, _secondaryProgress_decorators, { kind: "accessor", name: "secondaryProgress", static: false, private: false, access: { has: obj => "secondaryProgress" in obj, get: obj => obj.secondaryProgress, set: (obj, value) => { obj.secondaryProgress = value; } }, metadata: _metadata }, _secondaryProgress_initializers, _secondaryProgress_extraInitializers);
27
- __esDecorate(this, null, _indeterminate_decorators, { kind: "accessor", name: "indeterminate", static: false, private: false, access: { has: obj => "indeterminate" in obj, get: obj => obj.indeterminate, set: (obj, value) => { obj.indeterminate = value; } }, metadata: _metadata }, _indeterminate_initializers, _indeterminate_extraInitializers);
28
23
  if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
29
24
  }
30
25
  secondaryRatioInternal = __runInitializers(this, _instanceExtraInitializers);
@@ -47,47 +42,18 @@ let UiProgress = (() => {
47
42
  */
48
43
  get secondaryProgress() { return this.#secondaryProgress_accessor_storage; }
49
44
  set secondaryProgress(value) { this.#secondaryProgress_accessor_storage = value; }
50
- #indeterminate_accessor_storage = (__runInitializers(this, _secondaryProgress_extraInitializers), __runInitializers(this, _indeterminate_initializers, void 0));
51
- /**
52
- * Use an indeterminate progress indicator.
53
- * @attr
54
- */
55
- get indeterminate() { return this.#indeterminate_accessor_storage; }
56
- set indeterminate(value) { this.#indeterminate_accessor_storage = value; }
57
45
  /**
58
46
  * @returns The ratio of the secondary progress.
59
47
  */
60
48
  get secondaryRatio() {
61
49
  return this.secondaryRatioInternal || 0;
62
50
  }
63
- connectedCallback() {
64
- super.connectedCallback();
65
- if (!this.hasAttribute('role')) {
66
- this.setAttribute('role', 'progressbar');
67
- }
68
- }
69
51
  willUpdate(cp) {
70
52
  super.willUpdate(cp);
71
- if (cp.has('secondaryProgress') || cp.has('indeterminate')) {
53
+ if (cp.has('secondaryProgress')) {
72
54
  this.rangeChanged();
73
55
  }
74
56
  }
75
- updated(cp) {
76
- if (cp.has('min')) {
77
- this.setAttribute('aria-valuemin', String(this.min));
78
- }
79
- if (cp.has('max')) {
80
- this.setAttribute('aria-valuemax', String(this.max));
81
- }
82
- if (cp.has('indeterminate') || cp.has('value')) {
83
- if (this.indeterminate) {
84
- this.removeAttribute('aria-valuenow');
85
- }
86
- else {
87
- this.setAttribute('aria-valuenow', String(this.value));
88
- }
89
- }
90
- }
91
57
  rangeChanged() {
92
58
  super.rangeChanged();
93
59
  const { secondaryProgress: sp } = this;
@@ -126,7 +92,7 @@ let UiProgress = (() => {
126
92
  }
127
93
  constructor() {
128
94
  super(...arguments);
129
- __runInitializers(this, _indeterminate_extraInitializers);
95
+ __runInitializers(this, _secondaryProgress_extraInitializers);
130
96
  }
131
97
  };
132
98
  })();
@@ -1 +1 @@
1
- {"version":3,"file":"UiProgress.js","sourceRoot":"","sources":["../../../../../src/md/progress/internals/UiProgress.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAkC,MAAM,KAAK,CAAA;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAa,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,EAAa,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAA;;sBAE5B,OAAO;;;;;;;;;iBAA1B,UAAW,SAAQ,WAAO;;;wCAW5C,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;6CAW1C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;yCAMrD,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YAhB3C,0LAAI,QAAQ,wEAIX;YAMsD,wMAAS,iBAAiB,6BAAjB,iBAAiB,6GAAoB;YAMzD,4LAAS,aAAa,6BAAb,aAAa,qGAAqB;;;QA3B7E,sBAAsB,GADb,mDAAU,CACY;QAEzC,IAAI,QAAQ;YACV,OAAO,UAAU,CAAC,IAAI,CAAC,CAAA;QACzB,CAAC;QAED;;;WAGG;QAEH,IAAI,QAAQ,CAAC,KAAc;YACzB,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;YAC5B,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YACxB,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;QACrC,CAAC;QAMsD,uGAA8C;QAJrG;;;WAGG;QACoD,IAAS,iBAAiB,uDAAoB;QAA9C,IAAS,iBAAiB,6DAAoB;QAMzD,gKAA2C;QAJvF;;;WAGG;QACyC,IAAS,aAAa,mDAAqB;QAA3C,IAAS,aAAa,yDAAqB;QAEvF;;WAEG;QACH,IAAI,cAAc;YAChB,OAAO,IAAI,CAAC,sBAAsB,IAAI,CAAC,CAAA;QACzC,CAAC;QAEQ,iBAAiB;YACxB,KAAK,CAAC,iBAAiB,EAAE,CAAA;YACzB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC/B,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;YAC1C,CAAC;QACH,CAAC;QAEkB,UAAU,CAAC,EAAwB;YACpD,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;YACpB,IAAI,EAAE,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;gBAC3D,IAAI,CAAC,YAAY,EAAE,CAAA;YACrB,CAAC;QACH,CAAC;QAEkB,OAAO,CAAC,EAAwB;YACjD,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClB,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;YACtD,CAAC;YACD,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClB,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;YACtD,CAAC;YACD,IAAI,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/C,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBACvB,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAA;gBACvC,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;gBACxD,CAAC;YACH,CAAC;QACH,CAAC;QAEkB,YAAY;YAC7B,KAAK,CAAC,YAAY,EAAE,CAAA;YACpB,MAAM,EAAE,iBAAiB,EAAE,EAAE,EAAE,GAAG,IAAI,CAAA;YACtC,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;gBAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;gBACrC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,GAAG,CAAA;YAClE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAA;YACzC,CAAC;QACH,CAAC;QAEQ,MAAM;YACb,MAAM,EAAE,cAAc,GAAG,CAAC,EAAE,aAAa,GAAG,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,QAAQ,GAAG,KAAK,EAAE,GAAG,IAAI,CAAA;YACvF,MAAM,cAAc,GAAG;gBACrB,OAAO,EAAE,IAAI;gBACb,aAAa,EAAE,CAAC,QAAQ,IAAI,aAAa;gBACzC,MAAM,EAAE,CAAC,aAAa;aACvB,CAAA;YACD,MAAM,YAAY,GAAc,EAAE,CAAA;YAClC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,YAAY,CAAC,SAAS,GAAG,UAAU,KAAK,GAAG,GAAG,GAAG,CAAA;YACnD,CAAC;YACD,MAAM,cAAc,GAAG;gBACrB,SAAS,EAAE,UAAU,cAAc,GAAG,GAAG,GAAG;aAC7C,CAAA;YACD,MAAM,gBAAgB,GAAc;gBAClC,SAAS,EAAE,IAAI;gBACf,QAAQ;aACT,CAAA;YACD,OAAO,IAAI,CAAA;oBACK,QAAQ,CAAC,gBAAgB,CAAC;0CACJ,cAAc,KAAK,CAAC,YAAY,QAAQ,CAAC,cAAc,CAAC;sBAC5E,QAAQ,CAAC,cAAc,CAAC,YAAY,QAAQ,CAAC,YAAY,CAAC;;KAE3E,CAAA;QACH,CAAC;;;;;;;AAtGH,0BAuGC","sourcesContent":["import { html, PropertyValues, TemplateResult } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport { ClassInfo, classMap } from 'lit/directives/class-map.js'\nimport { StyleInfo, styleMap } from 'lit/directives/style-map.js'\nimport { UiRange } from './Range.js'\nimport { isDisabled, setDisabled } from '../../../lib/disabled.js'\nimport { floatConverter } from '../../../lib/AttributeConverters.js'\n\nexport default class UiProgress extends UiRange {\n protected secondaryRatioInternal?: number\n\n get disabled(): boolean {\n return isDisabled(this)\n }\n\n /**\n * When set, the button is a disabled state.\n * @attribute\n */\n @property({ reflect: true, type: Boolean })\n set disabled(value: boolean) {\n const old = isDisabled(this)\n setDisabled(this, value)\n this.requestUpdate('disabled', old)\n }\n\n /**\n * The number that represents the current secondary progress.\n * @attr\n */\n @property({ type: Number, converter: floatConverter }) accessor secondaryProgress: number | undefined\n\n /**\n * Use an indeterminate progress indicator.\n * @attr\n */\n @property({ reflect: true, type: Boolean }) accessor indeterminate: boolean | undefined\n\n /**\n * @returns The ratio of the secondary progress.\n */\n get secondaryRatio(): number {\n return this.secondaryRatioInternal || 0\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'progressbar')\n }\n }\n\n protected override willUpdate(cp: PropertyValues<this>): void {\n super.willUpdate(cp)\n if (cp.has('secondaryProgress') || cp.has('indeterminate')) {\n this.rangeChanged()\n }\n }\n\n protected override updated(cp: PropertyValues<this>): void {\n if (cp.has('min')) {\n this.setAttribute('aria-valuemin', String(this.min))\n }\n if (cp.has('max')) {\n this.setAttribute('aria-valuemax', String(this.max))\n }\n if (cp.has('indeterminate') || cp.has('value')) {\n if (this.indeterminate) {\n this.removeAttribute('aria-valuenow')\n } else {\n this.setAttribute('aria-valuenow', String(this.value))\n }\n }\n }\n\n protected override rangeChanged(): void {\n super.rangeChanged()\n const { secondaryProgress: sp } = this\n if (typeof sp === 'number') {\n const secondary = this.clampValue(sp)\n this.secondaryRatioInternal = this.computeRatio(secondary) * 100\n } else {\n this.secondaryRatioInternal = undefined\n }\n }\n\n override render(): TemplateResult {\n const { secondaryRatio = 0, indeterminate = false, ratio = 0, disabled = false } = this\n const primaryClasses = {\n primary: true,\n indeterminate: !disabled && indeterminate,\n linear: !indeterminate,\n }\n const primaryStyle: StyleInfo = {}\n if (!indeterminate) {\n primaryStyle.transform = `scaleX(${ratio / 100})`\n }\n const secondaryStyle = {\n transform: `scaleX(${secondaryRatio / 100})`,\n }\n const containerClasses: ClassInfo = {\n container: true,\n disabled,\n }\n return html`\n <div class=\"${classMap(containerClasses)}\">\n <div class=\"secondary\" ?hidden=\"${secondaryRatio === 0}\" style=\"${styleMap(secondaryStyle)}\"></div>\n <div class=\"${classMap(primaryClasses)}\" style=\"${styleMap(primaryStyle)}\"></div>\n </div>\n `\n }\n}\n"]}
1
+ {"version":3,"file":"UiProgress.js","sourceRoot":"","sources":["../../../../../src/md/progress/internals/UiProgress.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, PropertyValues, TemplateResult } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport { ClassInfo, classMap } from 'lit/directives/class-map.js'\nimport { StyleInfo, styleMap } from 'lit/directives/style-map.js'\nimport { UiRange } from './Range.js'\nimport { isDisabled, setDisabled } from '../../../lib/disabled.js'\nimport { floatConverter } from '../../../lib/AttributeConverters.js'\n\nexport default class UiProgress extends UiRange {\n protected secondaryRatioInternal?: number\n\n get disabled(): boolean {\n return isDisabled(this)\n }\n\n /**\n * When set, the button is a disabled state.\n * @attribute\n */\n @property({ reflect: true, type: Boolean })\n set disabled(value: boolean) {\n const old = isDisabled(this)\n setDisabled(this, value)\n this.requestUpdate('disabled', old)\n }\n\n /**\n * The number that represents the current secondary progress.\n * @attr\n */\n @property({ type: Number, converter: floatConverter }) accessor secondaryProgress: number | undefined\n\n /**\n * @returns The ratio of the secondary progress.\n */\n get secondaryRatio(): number {\n return this.secondaryRatioInternal || 0\n }\n\n protected override willUpdate(cp: PropertyValues<this>): void {\n super.willUpdate(cp)\n if (cp.has('secondaryProgress')) {\n this.rangeChanged()\n }\n }\n\n protected override rangeChanged(): void {\n super.rangeChanged()\n const { secondaryProgress: sp } = this\n if (typeof sp === 'number') {\n const secondary = this.clampValue(sp)\n this.secondaryRatioInternal = this.computeRatio(secondary) * 100\n } else {\n this.secondaryRatioInternal = undefined\n }\n }\n\n override render(): TemplateResult {\n const { secondaryRatio = 0, indeterminate = false, ratio = 0, disabled = false } = this\n const primaryClasses = {\n primary: true,\n indeterminate: !disabled && indeterminate,\n linear: !indeterminate,\n }\n const primaryStyle: StyleInfo = {}\n if (!indeterminate) {\n primaryStyle.transform = `scaleX(${ratio / 100})`\n }\n const secondaryStyle = {\n transform: `scaleX(${secondaryRatio / 100})`,\n }\n const containerClasses: ClassInfo = {\n container: true,\n disabled,\n }\n return html`\n <div class=\"${classMap(containerClasses)}\">\n <div class=\"secondary\" ?hidden=\"${secondaryRatio === 0}\" style=\"${styleMap(secondaryStyle)}\"></div>\n <div class=\"${classMap(primaryClasses)}\" style=\"${styleMap(primaryStyle)}\"></div>\n </div>\n `\n }\n}\n"]}
@@ -0,0 +1,11 @@
1
+ import type { CSSResultOrNative } from 'lit';
2
+ import Element from './internals/CircularProgress.js';
3
+ export declare class UiCircularProgressElement extends Element {
4
+ static styles: CSSResultOrNative[];
5
+ }
6
+ declare global {
7
+ interface HTMLElementTagNameMap {
8
+ 'ui-circular-progress': UiCircularProgressElement;
9
+ }
10
+ }
11
+ //# sourceMappingURL=ui-circular-progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-circular-progress.d.ts","sourceRoot":"","sources":["../../../../src/md/progress/ui-circular-progress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,KAAK,CAAA;AAE5C,OAAO,OAAO,MAAM,iCAAiC,CAAA;AAGrD,qBACa,yBAA0B,SAAQ,OAAO;IACpD,OAAgB,MAAM,EAAE,iBAAiB,EAAE,CAAW;CACvD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,sBAAsB,EAAE,yBAAyB,CAAA;KAClD;CACF"}
@@ -0,0 +1,27 @@
1
+ import { __esDecorate, __runInitializers } from "tslib";
2
+ import { customElement } from 'lit/decorators.js';
3
+ import Element from './internals/CircularProgress.js';
4
+ import styles from './internals/CircularProgress.styles.js';
5
+ let UiCircularProgressElement = (() => {
6
+ let _classDecorators = [customElement('ui-circular-progress')];
7
+ let _classDescriptor;
8
+ let _classExtraInitializers = [];
9
+ let _classThis;
10
+ let _classSuper = Element;
11
+ var UiCircularProgressElement = class extends _classSuper {
12
+ static { _classThis = this; }
13
+ static {
14
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
15
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
16
+ UiCircularProgressElement = _classThis = _classDescriptor.value;
17
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
18
+ }
19
+ static styles = [styles];
20
+ static {
21
+ __runInitializers(_classThis, _classExtraInitializers);
22
+ }
23
+ };
24
+ return UiCircularProgressElement = _classThis;
25
+ })();
26
+ export { UiCircularProgressElement };
27
+ //# sourceMappingURL=ui-circular-progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-circular-progress.js","sourceRoot":"","sources":["../../../../src/md/progress/ui-circular-progress.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,OAAO,MAAM,iCAAiC,CAAA;AACrD,OAAO,MAAM,MAAM,wCAAwC,CAAA;IAG9C,yBAAyB;4BADrC,aAAa,CAAC,sBAAsB,CAAC;;;;sBACS,OAAO;yCAAf,SAAQ,WAAO;;;;YAAtD,6KAEC;;;;QADC,MAAM,CAAU,MAAM,GAAwB,CAAC,MAAM,CAAC,CAAA;;YAD3C,uDAAyB;;;;;SAAzB,yBAAyB","sourcesContent":["import type { CSSResultOrNative } from 'lit'\nimport { customElement } from 'lit/decorators.js'\nimport Element from './internals/CircularProgress.js'\nimport styles from './internals/CircularProgress.styles.js'\n\n@customElement('ui-circular-progress')\nexport class UiCircularProgressElement extends Element {\n static override styles: CSSResultOrNative[] = [styles]\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ui-circular-progress': UiCircularProgressElement\n }\n}\n"]}
@@ -171,7 +171,7 @@ let UiOption = (() => {
171
171
  item: this,
172
172
  value: this.value,
173
173
  },
174
- bubbles: true,
174
+ bubbles: false,
175
175
  composed: true,
176
176
  }));
177
177
  }
@@ -200,7 +200,7 @@ let UiOption = (() => {
200
200
  return html `
201
201
  <div class="end">
202
202
  ${this.selected ? html `<ui-icon icon="check" class="selection-icon"></ui-icon>` : ''}
203
- <slot name="end" @slotchange=${this.handleSlotChange}></slot>
203
+ <slot name="end" @slotchange=${this.handleEndSlotChange}></slot>
204
204
  <slot name="end-text" class="trailing-supporting-text"></slot>
205
205
  </div>
206
206
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"Option.js","sourceRoot":"","sources":["../../../../../src/md/select/internals/Option.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, PropertyValues, TemplateResult } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport UiListItem from '../../list/internals/ListItem.js'\nimport { nanoid } from 'nanoid'\n\n/**\n * Material Design 3 Select Option component.\n *\n * The `ui-option` component represents a selectable item within a `ui-select` dropdown.\n * It extends `UiListItem` to provide consistent styling and behavior with other list components.\n *\n * @slot - The option content (label, icon, etc.)\n * @slot start - Content to display at the start of the option (icon, avatar, etc.)\n * @slot end - Content to display at the end of the option\n * @slot supporting-text - Supporting text below the main content\n * @fires select - Dispatched when the option is selected. Contains `{ item: UiOption, value: string }` in detail\n *\n * @example\n * Basic option\n * ```html\n * <ui-option value=\"apple\">Apple</ui-option>\n * ```\n *\n * @example\n * Option with supporting text\n * ```html\n * <ui-option value=\"john\" lines=\"two\">\n * John Doe\n * <span slot=\"supporting-text\">john@example.com</span>\n * </ui-option>\n * ```\n */\nexport default class UiOption extends UiListItem {\n /**\n * The value associated with this option. Used to identify the option when selected.\n * This value is what gets set on the parent select element when this option is chosen.\n *\n * @example\n * ```html\n * <ui-option value=\"apple\">Apple</ui-option>\n * <ui-option value=\"banana\">Banana</ui-option>\n * ```\n */\n @property({ type: String, reflect: true }) accessor value: string | undefined\n\n /**\n * Whether this option is currently selected. This is typically managed automatically\n * by the parent select component, but can be set manually for styling purposes.\n *\n * @default false\n * @example\n * ```html\n * <ui-option value=\"apple\" selected>Apple</ui-option>\n * ```\n */\n @property({ type: Boolean, reflect: true }) accessor selected = false\n\n /**\n * Returns the text representation of this option for display purposes.\n * This method extracts and combines text content from all child nodes,\n * including special handling for ui-icon elements.\n *\n * @readonly\n * @returns {string} The rendered text value of the option\n * @example\n * ```javascript\n * const option = document.querySelector('ui-option');\n * console.log('Option text:', option.renderValue);\n * ```\n */\n get renderValue(): string {\n const slot = this.shadowRoot?.querySelector<HTMLSlotElement>('slot:not([name])')\n if (!slot) return this.value || ''\n const nodes = slot.assignedNodes({ flatten: true })\n const content: string[] = []\n for (const node of nodes) {\n if (node.nodeType === Node.TEXT_NODE) {\n content.push(node.textContent || '')\n } else if (node.nodeType === Node.ELEMENT_NODE) {\n const element = node as HTMLElement\n if (element.tagName.toLowerCase() === 'ui-icon') {\n content.push(element.getAttribute('icon') || '')\n } else {\n content.push(element.textContent || '')\n }\n }\n }\n return content.join(' ').trim() || this.value || ''\n }\n\n /**\n * Initializes the option when it's connected to the DOM. Sets up ARIA attributes\n * and generates a unique ID if one isn't provided.\n *\n * @protected\n */\n override connectedCallback(): void {\n super.connectedCallback()\n this.setAttribute('role', 'option')\n if (!this.id) {\n this.id = `option-${nanoid(6)}`\n }\n }\n\n /**\n * Handles property updates and triggers appropriate side effects.\n * Currently monitors the `selected` property to update selection state.\n *\n * @param {PropertyValues<this>} changedProperties - Map of changed properties\n * @protected\n */\n protected override updated(changedProperties: PropertyValues<this>): void {\n super.updated(changedProperties)\n\n if (changedProperties.has('selected')) {\n this.updateSelectionState()\n }\n }\n\n /**\n * Updates the visual and accessibility state when selection changes.\n * Adds/removes CSS classes and ARIA attributes based on selection state.\n *\n * @protected\n * @example\n * ```javascript\n * // This is called automatically when the selected property changes\n * option.selected = true; // Will trigger updateSelectionState()\n * ```\n */\n protected updateSelectionState(): void {\n if (this.selected) {\n this.classList.add('selected')\n this.setAttribute('aria-selected', 'true')\n } else {\n this.classList.remove('selected')\n this.setAttribute('aria-selected', 'false')\n }\n }\n\n /**\n * Handles click events on the option. Prevents default behavior and dispatches\n * a custom 'select' event that the parent select component can listen to.\n *\n * @param {MouseEvent} e - The click event\n * @protected\n * @fires select - Custom event with option details in event.detail\n * @example\n * ```javascript\n * // Listen for option selection\n * option.addEventListener('select', (e) => {\n * console.log('Selected option:', e.detail.item);\n * console.log('Selected value:', e.detail.value);\n * });\n * ```\n */\n override handleClick(e: MouseEvent): void {\n e.preventDefault()\n if (this.disabled) {\n e.stopPropagation()\n return\n }\n\n // Let the parent handle the selection\n this.dispatchEvent(\n new CustomEvent('select', {\n detail: {\n item: this,\n value: this.value,\n },\n bubbles: true,\n composed: true,\n })\n )\n }\n\n /**\n * Renders the option's template. Creates the main structure with focus ring,\n * ripple effect, and content areas.\n *\n * @returns {TemplateResult} The rendered template\n * @protected\n */\n protected override render(): TemplateResult {\n const surfaceClasses = classMap({\n surface: true,\n selected: this.selected,\n })\n\n return html`\n ${this.renderFocusRing()} ${this.renderRipple()}\n <div class=\"${surfaceClasses}\">${this.renderStart()} ${this.renderBody()} ${this.renderEnd()}</div>\n `\n }\n\n /**\n * Renders the end section of the option, including the selection check icon\n * when the option is selected.\n */\n protected override renderEnd(): TemplateResult {\n return html`\n <div class=\"end\">\n ${this.selected ? html`<ui-icon icon=\"check\" class=\"selection-icon\"></ui-icon>` : ''}\n <slot name=\"end\" @slotchange=${this.handleSlotChange}></slot>\n <slot name=\"end-text\" class=\"trailing-supporting-text\"></slot>\n </div>\n `\n }\n}\n"]}
1
+ {"version":3,"file":"Option.js","sourceRoot":"","sources":["../../../../../src/md/select/internals/Option.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, PropertyValues, TemplateResult } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport UiListItem from '../../list/internals/ListItem.js'\nimport { nanoid } from 'nanoid'\n\n/**\n * Material Design 3 Select Option component.\n *\n * The `ui-option` component represents a selectable item within a `ui-select` dropdown.\n * It extends `UiListItem` to provide consistent styling and behavior with other list components.\n *\n * @slot - The option content (label, icon, etc.)\n * @slot start - Content to display at the start of the option (icon, avatar, etc.)\n * @slot end - Content to display at the end of the option\n * @slot supporting-text - Supporting text below the main content\n * @fires select - Dispatched when the option is selected. Contains `{ item: UiOption, value: string }` in detail\n *\n * @example\n * Basic option\n * ```html\n * <ui-option value=\"apple\">Apple</ui-option>\n * ```\n *\n * @example\n * Option with supporting text\n * ```html\n * <ui-option value=\"john\" lines=\"two\">\n * John Doe\n * <span slot=\"supporting-text\">john@example.com</span>\n * </ui-option>\n * ```\n */\nexport default class UiOption extends UiListItem {\n /**\n * The value associated with this option. Used to identify the option when selected.\n * This value is what gets set on the parent select element when this option is chosen.\n *\n * @example\n * ```html\n * <ui-option value=\"apple\">Apple</ui-option>\n * <ui-option value=\"banana\">Banana</ui-option>\n * ```\n */\n @property({ type: String, reflect: true }) accessor value: string | undefined\n\n /**\n * Whether this option is currently selected. This is typically managed automatically\n * by the parent select component, but can be set manually for styling purposes.\n *\n * @default false\n * @example\n * ```html\n * <ui-option value=\"apple\" selected>Apple</ui-option>\n * ```\n */\n @property({ type: Boolean, reflect: true }) accessor selected = false\n\n /**\n * Returns the text representation of this option for display purposes.\n * This method extracts and combines text content from all child nodes,\n * including special handling for ui-icon elements.\n *\n * @readonly\n * @returns {string} The rendered text value of the option\n * @example\n * ```javascript\n * const option = document.querySelector('ui-option');\n * console.log('Option text:', option.renderValue);\n * ```\n */\n get renderValue(): string {\n const slot = this.shadowRoot?.querySelector<HTMLSlotElement>('slot:not([name])')\n if (!slot) return this.value || ''\n const nodes = slot.assignedNodes({ flatten: true })\n const content: string[] = []\n for (const node of nodes) {\n if (node.nodeType === Node.TEXT_NODE) {\n content.push(node.textContent || '')\n } else if (node.nodeType === Node.ELEMENT_NODE) {\n const element = node as HTMLElement\n if (element.tagName.toLowerCase() === 'ui-icon') {\n content.push(element.getAttribute('icon') || '')\n } else {\n content.push(element.textContent || '')\n }\n }\n }\n return content.join(' ').trim() || this.value || ''\n }\n\n /**\n * Initializes the option when it's connected to the DOM. Sets up ARIA attributes\n * and generates a unique ID if one isn't provided.\n *\n * @protected\n */\n override connectedCallback(): void {\n super.connectedCallback()\n this.setAttribute('role', 'option')\n if (!this.id) {\n this.id = `option-${nanoid(6)}`\n }\n }\n\n /**\n * Handles property updates and triggers appropriate side effects.\n * Currently monitors the `selected` property to update selection state.\n *\n * @param {PropertyValues<this>} changedProperties - Map of changed properties\n * @protected\n */\n protected override updated(changedProperties: PropertyValues<this>): void {\n super.updated(changedProperties)\n\n if (changedProperties.has('selected')) {\n this.updateSelectionState()\n }\n }\n\n /**\n * Updates the visual and accessibility state when selection changes.\n * Adds/removes CSS classes and ARIA attributes based on selection state.\n *\n * @protected\n * @example\n * ```javascript\n * // This is called automatically when the selected property changes\n * option.selected = true; // Will trigger updateSelectionState()\n * ```\n */\n protected updateSelectionState(): void {\n if (this.selected) {\n this.classList.add('selected')\n this.setAttribute('aria-selected', 'true')\n } else {\n this.classList.remove('selected')\n this.setAttribute('aria-selected', 'false')\n }\n }\n\n /**\n * Handles click events on the option. Prevents default behavior and dispatches\n * a custom 'select' event that the parent select component can listen to.\n *\n * @param {MouseEvent} e - The click event\n * @protected\n * @fires select - Custom event with option details in event.detail\n * @example\n * ```javascript\n * // Listen for option selection\n * option.addEventListener('select', (e) => {\n * console.log('Selected option:', e.detail.item);\n * console.log('Selected value:', e.detail.value);\n * });\n * ```\n */\n override handleClick(e: MouseEvent): void {\n e.preventDefault()\n if (this.disabled) {\n e.stopPropagation()\n return\n }\n\n // Let the parent handle the selection\n this.dispatchEvent(\n new CustomEvent('select', {\n detail: {\n item: this,\n value: this.value,\n },\n bubbles: false,\n composed: true,\n })\n )\n }\n\n /**\n * Renders the option's template. Creates the main structure with focus ring,\n * ripple effect, and content areas.\n *\n * @returns {TemplateResult} The rendered template\n * @protected\n */\n protected override render(): TemplateResult {\n const surfaceClasses = classMap({\n surface: true,\n selected: this.selected,\n })\n\n return html`\n ${this.renderFocusRing()} ${this.renderRipple()}\n <div class=\"${surfaceClasses}\">${this.renderStart()} ${this.renderBody()} ${this.renderEnd()}</div>\n `\n }\n\n /**\n * Renders the end section of the option, including the selection check icon\n * when the option is selected.\n */\n protected override renderEnd(): TemplateResult {\n return html`\n <div class=\"end\">\n ${this.selected ? html`<ui-icon icon=\"check\" class=\"selection-icon\"></ui-icon>` : ''}\n <slot name=\"end\" @slotchange=${this.handleEndSlotChange}></slot>\n <slot name=\"end-text\" class=\"trailing-supporting-text\"></slot>\n </div>\n `\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Option.styles.d.ts","sourceRoot":"","sources":["../../../../../src/md/select/internals/Option.styles.ts"],"names":[],"mappings":";AAEA,wBAwIC"}
1
+ {"version":3,"file":"Option.styles.d.ts","sourceRoot":"","sources":["../../../../../src/md/select/internals/Option.styles.ts"],"names":[],"mappings":";AAEA,wBASC"}
@@ -1,139 +1,12 @@
1
1
  import { css } from 'lit';
2
2
  export default css `
3
- :host {
4
- display: block;
5
- height: 56px;
6
- outline: none;
7
- cursor: default;
8
- position: relative;
9
-
10
- --md-focus-ring-shape-end-end: 0px;
11
- --md-focus-ring-shape-end-start: 0px;
12
- --md-focus-ring-shape-start-end: 0px;
13
- --md-focus-ring-shape-start-start: 0px;
14
-
15
- color: var(--md-sys-color-on-surface);
16
- }
17
-
18
- :host([disabled]) {
19
- cursor: not-allowed;
20
- }
21
-
22
- :host([hidden]) {
23
- display: none;
24
- }
25
-
26
- .surface {
27
- height: inherit;
28
- box-sizing: border-box;
29
-
30
- display: flex;
31
- align-items: center;
32
- overflow: hidden;
33
-
34
- padding: 8px 16px 8px 16px;
35
- gap: 12px;
36
- }
37
-
38
3
  .surface.selected {
39
4
  background-color: var(--md-sys-color-secondary-container);
40
5
  color: var(--md-sys-color-on-secondary-container);
41
6
  }
42
7
 
43
- .ripple {
44
- z-index: 3;
45
- }
46
-
47
- .headline {
48
- font-family: var(--md-sys-typescale-body-large-font);
49
- font-weight: var(--md-sys-typescale-body-large-weight);
50
- font-size: var(--md-sys-typescale-body-large-size);
51
- letter-spacing: var(--md-sys-typescale-body-large-tracking);
52
- line-height: var(--md-sys-typescale-body-large-height);
53
-
54
- overflow: hidden;
55
- text-overflow: ellipsis;
56
- white-space: nowrap;
57
-
58
- display: flex;
59
- align-items: center;
60
- }
61
-
62
- .supporting-text {
63
- color: var(--md-sys-color-on-surface-variant);
64
-
65
- font-family: var(--md-sys-typescale-body-medium-font);
66
- font-weight: var(--md-sys-typescale-body-medium-weight);
67
- font-size: var(--md-sys-typescale-body-medium-size);
68
- letter-spacing: var(--md-sys-typescale-body-medium-tracking);
69
- line-height: var(--md-sys-typescale-body-medium-height);
70
-
71
- overflow: hidden;
72
- }
73
-
74
- .supporting-text ::slotted(*),
75
- slot[name='end-text']::slotted(*) {
76
- margin: 0;
77
- padding: 0;
78
- overflow: hidden;
79
- }
80
-
81
- slot[name='end-text']::slotted(*) {
82
- margin-right: 8px;
83
- margin-left: 16px;
84
- }
85
-
86
- :host slot[name='end']::slotted(*) {
87
- color: var(--md-sys-color-on-surface-variant);
88
- fill: var(--md-sys-color-on-surface-variant);
89
- margin-left: 16px;
90
- }
91
-
92
- :host slot[name='start']::slotted(*) {
93
- display: block;
94
- margin-right: 16px;
95
- }
96
-
97
- :host([image='icon']) slot[name='start']::slotted(*) {
98
- width: 24px;
99
- height: 24px;
100
- }
101
-
102
- :host([image='avatar']) slot[name='start']::slotted(*) {
103
- width: 40px;
104
- height: 40px;
105
- }
106
-
107
- :host([image='image']) slot[name='start']::slotted(*) {
108
- width: 56px;
109
- height: 56px;
110
- }
111
-
112
- :host([image='video']) slot[name='start']::slotted(*) {
113
- width: 114px;
114
- height: 64px;
115
- }
116
-
117
- .body {
118
- flex: 1;
119
- overflow: hidden;
120
- display: flex;
121
- flex-direction: column;
122
- }
123
-
124
- .end {
125
- display: flex;
126
- align-items: center;
127
- gap: 8px;
128
- }
129
-
130
8
  .selection-icon {
131
9
  color: var(--md-sys-color-on-surface);
132
10
  }
133
-
134
- :host(.highlight) .surface {
135
- background-color: var(--md-sys-color-tertiary-container);
136
- color: var(--md-sys-color-on-tertiary-container);
137
- }
138
11
  `;
139
12
  //# sourceMappingURL=Option.styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Option.styles.js","sourceRoot":"","sources":["../../../../../src/md/select/internals/Option.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAEzB,eAAe,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwIjB,CAAA","sourcesContent":["import { css } from 'lit'\n\nexport default css`\n :host {\n display: block;\n height: 56px;\n outline: none;\n cursor: default;\n position: relative;\n\n --md-focus-ring-shape-end-end: 0px;\n --md-focus-ring-shape-end-start: 0px;\n --md-focus-ring-shape-start-end: 0px;\n --md-focus-ring-shape-start-start: 0px;\n\n color: var(--md-sys-color-on-surface);\n }\n\n :host([disabled]) {\n cursor: not-allowed;\n }\n\n :host([hidden]) {\n display: none;\n }\n\n .surface {\n height: inherit;\n box-sizing: border-box;\n\n display: flex;\n align-items: center;\n overflow: hidden;\n\n padding: 8px 16px 8px 16px;\n gap: 12px;\n }\n\n .surface.selected {\n background-color: var(--md-sys-color-secondary-container);\n color: var(--md-sys-color-on-secondary-container);\n }\n\n .ripple {\n z-index: 3;\n }\n\n .headline {\n font-family: var(--md-sys-typescale-body-large-font);\n font-weight: var(--md-sys-typescale-body-large-weight);\n font-size: var(--md-sys-typescale-body-large-size);\n letter-spacing: var(--md-sys-typescale-body-large-tracking);\n line-height: var(--md-sys-typescale-body-large-height);\n\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n display: flex;\n align-items: center;\n }\n\n .supporting-text {\n color: var(--md-sys-color-on-surface-variant);\n\n font-family: var(--md-sys-typescale-body-medium-font);\n font-weight: var(--md-sys-typescale-body-medium-weight);\n font-size: var(--md-sys-typescale-body-medium-size);\n letter-spacing: var(--md-sys-typescale-body-medium-tracking);\n line-height: var(--md-sys-typescale-body-medium-height);\n\n overflow: hidden;\n }\n\n .supporting-text ::slotted(*),\n slot[name='end-text']::slotted(*) {\n margin: 0;\n padding: 0;\n overflow: hidden;\n }\n\n slot[name='end-text']::slotted(*) {\n margin-right: 8px;\n margin-left: 16px;\n }\n\n :host slot[name='end']::slotted(*) {\n color: var(--md-sys-color-on-surface-variant);\n fill: var(--md-sys-color-on-surface-variant);\n margin-left: 16px;\n }\n\n :host slot[name='start']::slotted(*) {\n display: block;\n margin-right: 16px;\n }\n\n :host([image='icon']) slot[name='start']::slotted(*) {\n width: 24px;\n height: 24px;\n }\n\n :host([image='avatar']) slot[name='start']::slotted(*) {\n width: 40px;\n height: 40px;\n }\n\n :host([image='image']) slot[name='start']::slotted(*) {\n width: 56px;\n height: 56px;\n }\n\n :host([image='video']) slot[name='start']::slotted(*) {\n width: 114px;\n height: 64px;\n }\n\n .body {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n\n .end {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .selection-icon {\n color: var(--md-sys-color-on-surface);\n }\n\n :host(.highlight) .surface {\n background-color: var(--md-sys-color-tertiary-container);\n color: var(--md-sys-color-on-tertiary-container);\n }\n`\n"]}
1
+ {"version":3,"file":"Option.styles.js","sourceRoot":"","sources":["../../../../../src/md/select/internals/Option.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAEzB,eAAe,GAAG,CAAA;;;;;;;;;CASjB,CAAA","sourcesContent":["import { css } from 'lit'\n\nexport default css`\n .surface.selected {\n background-color: var(--md-sys-color-secondary-container);\n color: var(--md-sys-color-on-secondary-container);\n }\n\n .selection-icon {\n color: var(--md-sys-color-on-surface);\n }\n`\n"]}
@@ -24,6 +24,7 @@ export default class UiSelect extends LitElement {
24
24
  * The currently selected value. Corresponds to the `value` attribute of the selected `ui-option`.
25
25
  * When set programmatically, it will update the selected option if a matching option exists.
26
26
  *
27
+ * @attribute
27
28
  * @example
28
29
  * ```html
29
30
  * <ui-select value="apple">
@@ -38,6 +39,7 @@ export default class UiSelect extends LitElement {
38
39
  * The name attribute for form submission. This value will be used as the key
39
40
  * when the form is submitted.
40
41
  *
42
+ * @attribute
41
43
  * @example
42
44
  * ```html
43
45
  * <ui-select name="country" value="us">
@@ -50,6 +52,7 @@ export default class UiSelect extends LitElement {
50
52
  * The label text displayed in the select field. Provides accessible labeling
51
53
  * and is shown as the floating label in the outlined text field.
52
54
  *
55
+ * @attribute
53
56
  * @example
54
57
  * ```html
55
58
  * <ui-select label="Select a country">
@@ -62,7 +65,7 @@ export default class UiSelect extends LitElement {
62
65
  * Whether the select is required for form validation. When true, the select
63
66
  * must have a value selected for the form to be valid.
64
67
  *
65
- * @default false
68
+ * @attribute
66
69
  * @example
67
70
  * ```html
68
71
  * <ui-select required label="Required field">
@@ -75,6 +78,7 @@ export default class UiSelect extends LitElement {
75
78
  * Whether the select is in an invalid state. This is typically set automatically
76
79
  * during validation, but can be set manually to indicate validation errors.
77
80
  *
81
+ * @attribute
78
82
  * @example
79
83
  * ```html
80
84
  * <ui-select invalid invalidText="Please select a valid option">
@@ -87,6 +91,7 @@ export default class UiSelect extends LitElement {
87
91
  * The error message to display when the select is invalid. This text is shown
88
92
  * below the select field when `invalid` is true.
89
93
  *
94
+ * @attribute
90
95
  * @example
91
96
  * ```html
92
97
  * <ui-select invalid invalidText="This field is required">
@@ -95,11 +100,16 @@ export default class UiSelect extends LitElement {
95
100
  * ```
96
101
  */
97
102
  accessor invalidText: string | undefined;
103
+ /**
104
+ * @attribute
105
+ */
106
+ accessor supportingText: string | undefined;
98
107
  /**
99
108
  * Whether the select is disabled. When disabled, the select cannot be interacted
100
109
  * with and will not receive focus or respond to user input.
101
110
  *
102
111
  * @default false
112
+ * @attribute
103
113
  * @example
104
114
  * ```html
105
115
  * <ui-select disabled label="Disabled select">
@@ -1 +1 @@
1
- {"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../../../src/md/select/internals/Select.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../../../src/md/select/internals/Select.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,9 @@ let UiSelect = (() => {
26
26
  let _invalidText_decorators;
27
27
  let _invalidText_initializers = [];
28
28
  let _invalidText_extraInitializers = [];
29
+ let _supportingText_decorators;
30
+ let _supportingText_initializers = [];
31
+ let _supportingText_extraInitializers = [];
29
32
  let _disabled_decorators;
30
33
  let _disabled_initializers = [];
31
34
  let _disabled_extraInitializers = [];
@@ -50,6 +53,7 @@ let UiSelect = (() => {
50
53
  _required_decorators = [property({ type: Boolean })];
51
54
  _invalid_decorators = [property({ type: Boolean })];
52
55
  _invalidText_decorators = [property({ type: String })];
56
+ _supportingText_decorators = [property({ type: String })];
53
57
  _disabled_decorators = [property({ type: Boolean, reflect: true })];
54
58
  _open_decorators = [property({ type: Boolean, reflect: true })];
55
59
  _selectedOption_decorators = [state()];
@@ -61,6 +65,7 @@ let UiSelect = (() => {
61
65
  __esDecorate(this, null, _required_decorators, { kind: "accessor", name: "required", static: false, private: false, access: { has: obj => "required" in obj, get: obj => obj.required, set: (obj, value) => { obj.required = value; } }, metadata: _metadata }, _required_initializers, _required_extraInitializers);
62
66
  __esDecorate(this, null, _invalid_decorators, { kind: "accessor", name: "invalid", static: false, private: false, access: { has: obj => "invalid" in obj, get: obj => obj.invalid, set: (obj, value) => { obj.invalid = value; } }, metadata: _metadata }, _invalid_initializers, _invalid_extraInitializers);
63
67
  __esDecorate(this, null, _invalidText_decorators, { kind: "accessor", name: "invalidText", static: false, private: false, access: { has: obj => "invalidText" in obj, get: obj => obj.invalidText, set: (obj, value) => { obj.invalidText = value; } }, metadata: _metadata }, _invalidText_initializers, _invalidText_extraInitializers);
68
+ __esDecorate(this, null, _supportingText_decorators, { kind: "accessor", name: "supportingText", static: false, private: false, access: { has: obj => "supportingText" in obj, get: obj => obj.supportingText, set: (obj, value) => { obj.supportingText = value; } }, metadata: _metadata }, _supportingText_initializers, _supportingText_extraInitializers);
64
69
  __esDecorate(this, null, _disabled_decorators, { kind: "accessor", name: "disabled", static: false, private: false, access: { has: obj => "disabled" in obj, get: obj => obj.disabled, set: (obj, value) => { obj.disabled = value; } }, metadata: _metadata }, _disabled_initializers, _disabled_extraInitializers);
65
70
  __esDecorate(this, null, _open_decorators, { kind: "accessor", name: "open", static: false, private: false, access: { has: obj => "open" in obj, get: obj => obj.open, set: (obj, value) => { obj.open = value; } }, metadata: _metadata }, _open_initializers, _open_extraInitializers);
66
71
  __esDecorate(this, null, _selectedOption_decorators, { kind: "accessor", name: "selectedOption", static: false, private: false, access: { has: obj => "selectedOption" in obj, get: obj => obj.selectedOption, set: (obj, value) => { obj.selectedOption = value; } }, metadata: _metadata }, _selectedOption_initializers, _selectedOption_extraInitializers);
@@ -79,6 +84,7 @@ let UiSelect = (() => {
79
84
  * The currently selected value. Corresponds to the `value` attribute of the selected `ui-option`.
80
85
  * When set programmatically, it will update the selected option if a matching option exists.
81
86
  *
87
+ * @attribute
82
88
  * @example
83
89
  * ```html
84
90
  * <ui-select value="apple">
@@ -102,6 +108,7 @@ let UiSelect = (() => {
102
108
  * The name attribute for form submission. This value will be used as the key
103
109
  * when the form is submitted.
104
110
  *
111
+ * @attribute
105
112
  * @example
106
113
  * ```html
107
114
  * <ui-select name="country" value="us">
@@ -116,6 +123,7 @@ let UiSelect = (() => {
116
123
  * The label text displayed in the select field. Provides accessible labeling
117
124
  * and is shown as the floating label in the outlined text field.
118
125
  *
126
+ * @attribute
119
127
  * @example
120
128
  * ```html
121
129
  * <ui-select label="Select a country">
@@ -130,6 +138,7 @@ let UiSelect = (() => {
130
138
  * Whether the select is in an invalid state. This is typically set automatically
131
139
  * during validation, but can be set manually to indicate validation errors.
132
140
  *
141
+ * @attribute
133
142
  * @example
134
143
  * ```html
135
144
  * <ui-select invalid invalidText="Please select a valid option">
@@ -142,7 +151,7 @@ let UiSelect = (() => {
142
151
  * Whether the select is required for form validation. When true, the select
143
152
  * must have a value selected for the form to be valid.
144
153
  *
145
- * @default false
154
+ * @attribute
146
155
  * @example
147
156
  * ```html
148
157
  * <ui-select required label="Required field">
@@ -157,6 +166,7 @@ let UiSelect = (() => {
157
166
  * Whether the select is in an invalid state. This is typically set automatically
158
167
  * during validation, but can be set manually to indicate validation errors.
159
168
  *
169
+ * @attribute
160
170
  * @example
161
171
  * ```html
162
172
  * <ui-select invalid invalidText="Please select a valid option">
@@ -171,6 +181,7 @@ let UiSelect = (() => {
171
181
  * The error message to display when the select is invalid. This text is shown
172
182
  * below the select field when `invalid` is true.
173
183
  *
184
+ * @attribute
174
185
  * @example
175
186
  * ```html
176
187
  * <ui-select invalid invalidText="This field is required">
@@ -180,7 +191,13 @@ let UiSelect = (() => {
180
191
  */
181
192
  get invalidText() { return this.#invalidText_accessor_storage; }
182
193
  set invalidText(value) { this.#invalidText_accessor_storage = value; }
183
- #disabled_accessor_storage = (__runInitializers(this, _invalidText_extraInitializers), __runInitializers(this, _disabled_initializers, false
194
+ #supportingText_accessor_storage = (__runInitializers(this, _invalidText_extraInitializers), __runInitializers(this, _supportingText_initializers, void 0));
195
+ /**
196
+ * @attribute
197
+ */
198
+ get supportingText() { return this.#supportingText_accessor_storage; }
199
+ set supportingText(value) { this.#supportingText_accessor_storage = value; }
200
+ #disabled_accessor_storage = (__runInitializers(this, _supportingText_extraInitializers), __runInitializers(this, _disabled_initializers, false
184
201
  /**
185
202
  * Whether the dropdown menu is currently open. This property reflects the
186
203
  * current state of the dropdown and can be set programmatically to open/close it.
@@ -201,6 +218,7 @@ let UiSelect = (() => {
201
218
  * with and will not receive focus or respond to user input.
202
219
  *
203
220
  * @default false
221
+ * @attribute
204
222
  * @example
205
223
  * ```html
206
224
  * <ui-select disabled label="Disabled select">
@@ -571,6 +589,7 @@ let UiSelect = (() => {
571
589
  aria-hidden="true"
572
590
  .invalid=${this.invalid}
573
591
  .invalidText=${this.invalidText || ''}
592
+ .supportingText=${this.supportingText || ''}
574
593
  class="input"
575
594
  >
576
595
  <ui-icon slot="suffix">arrow_drop_down</ui-icon>