@pine-ds/core 3.4.1 → 3.4.3

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 (179) hide show
  1. package/components/pds-box2.js +7 -3
  2. package/components/pds-box2.js.map +1 -1
  3. package/components/pds-button2.js +1 -1
  4. package/components/pds-button2.js.map +1 -1
  5. package/components/pds-checkbox2.js +44 -6
  6. package/components/pds-checkbox2.js.map +1 -1
  7. package/components/pds-switch.js +47 -4
  8. package/components/pds-switch.js.map +1 -1
  9. package/components/utils.js +38 -5
  10. package/components/utils.js.map +1 -1
  11. package/dist/cjs/loader.cjs.js +1 -1
  12. package/dist/cjs/pds-box.cjs.entry.js +7 -3
  13. package/dist/cjs/pds-box.cjs.entry.js.map +1 -1
  14. package/dist/cjs/pds-box.entry.cjs.js.map +1 -1
  15. package/dist/cjs/pds-button.cjs.entry.js +2 -2
  16. package/dist/cjs/pds-button.cjs.entry.js.map +1 -1
  17. package/dist/cjs/pds-button.entry.cjs.js.map +1 -1
  18. package/dist/cjs/pds-checkbox.cjs.entry.js +42 -4
  19. package/dist/cjs/pds-checkbox.cjs.entry.js.map +1 -1
  20. package/dist/cjs/pds-checkbox.entry.cjs.js.map +1 -1
  21. package/dist/cjs/pds-input.cjs.entry.js +1 -1
  22. package/dist/cjs/pds-link.cjs.entry.js +1 -1
  23. package/dist/cjs/pds-switch.cjs.entry.js +44 -3
  24. package/dist/cjs/pds-switch.cjs.entry.js.map +1 -1
  25. package/dist/cjs/pds-switch.entry.cjs.js.map +1 -1
  26. package/dist/cjs/pds-text.cjs.entry.js +1 -1
  27. package/dist/cjs/pds-textarea.cjs.entry.js +1 -1
  28. package/dist/cjs/pine-core.cjs.js +1 -1
  29. package/dist/cjs/utils-7jx8T2mW.js +79 -0
  30. package/dist/cjs/utils-7jx8T2mW.js.map +1 -0
  31. package/dist/collection/components/pds-accordion/stories/pds-accordion.stories.js +1 -1
  32. package/dist/collection/components/pds-alert/stories/pds-alert.stories.js +6 -6
  33. package/dist/collection/components/pds-box/pds-box.js +10 -6
  34. package/dist/collection/components/pds-box/pds-box.js.map +1 -1
  35. package/dist/collection/components/pds-box/stories/pds-box.stories.js +2 -2
  36. package/dist/collection/components/pds-button/pds-button.css +1 -0
  37. package/dist/collection/components/pds-button/stories/pds-button.stories.js +4 -4
  38. package/dist/collection/components/pds-checkbox/pds-checkbox.js +44 -3
  39. package/dist/collection/components/pds-checkbox/pds-checkbox.js.map +1 -1
  40. package/dist/collection/components/pds-checkbox/stories/pds-checkbox.stories.js +6 -6
  41. package/dist/collection/components/pds-chip/stories/pds-chip.stories.js +2 -2
  42. package/dist/collection/components/pds-copytext/stories/pds-copytext.stories.js +3 -3
  43. package/dist/collection/components/pds-image/stories/pds-image.stories.js +1 -1
  44. package/dist/collection/components/pds-input/stories/pds-input.stories.js +37 -37
  45. package/dist/collection/components/pds-link/stories/pds-link.stories.js +2 -2
  46. package/dist/collection/components/pds-loader/stories/pds-loader.stories.js +3 -3
  47. package/dist/collection/components/pds-modal/stories/pds-modal.stories.js +9 -9
  48. package/dist/collection/components/pds-progress/stories/pds-progress.stories.js +2 -2
  49. package/dist/collection/components/pds-radio/stories/pds-radio.stories.js +6 -6
  50. package/dist/collection/components/pds-row/stories/pds-row.stories.js +16 -12
  51. package/dist/collection/components/pds-select/stories/pds-select.stories.js +19 -19
  52. package/dist/collection/components/pds-sortable/stories/pds-sortable.stories.js +4 -4
  53. package/dist/collection/components/pds-switch/pds-switch.js +47 -3
  54. package/dist/collection/components/pds-switch/pds-switch.js.map +1 -1
  55. package/dist/collection/components/pds-switch/stories/pds-switch.stories.js +5 -5
  56. package/dist/collection/components/pds-table/stories/pds-table.stories.js +12 -12
  57. package/dist/collection/components/pds-textarea/stories/pds-textarea.stories.js +15 -15
  58. package/dist/collection/components/pds-toast/stories/pds-toast.stories.js +2 -2
  59. package/dist/collection/components/pds-tooltip/stories/pds-tooltip.stories.js +14 -14
  60. package/dist/collection/utils/utils.js +37 -4
  61. package/dist/collection/utils/utils.js.map +1 -1
  62. package/dist/docs.json +5 -14
  63. package/dist/esm/loader.js +1 -1
  64. package/dist/esm/pds-box.entry.js +7 -3
  65. package/dist/esm/pds-box.entry.js.map +1 -1
  66. package/dist/esm/pds-button.entry.js +2 -2
  67. package/dist/esm/pds-button.entry.js.map +1 -1
  68. package/dist/esm/pds-checkbox.entry.js +42 -4
  69. package/dist/esm/pds-checkbox.entry.js.map +1 -1
  70. package/dist/esm/pds-input.entry.js +1 -1
  71. package/dist/esm/pds-link.entry.js +1 -1
  72. package/dist/esm/pds-switch.entry.js +44 -3
  73. package/dist/esm/pds-switch.entry.js.map +1 -1
  74. package/dist/esm/pds-text.entry.js +1 -1
  75. package/dist/esm/pds-textarea.entry.js +1 -1
  76. package/dist/esm/pine-core.js +1 -1
  77. package/dist/esm/utils-tJa4KYNO.js +74 -0
  78. package/dist/esm/utils-tJa4KYNO.js.map +1 -0
  79. package/dist/esm-es5/loader.js +1 -1
  80. package/dist/esm-es5/pds-box.entry.js +1 -1
  81. package/dist/esm-es5/pds-box.entry.js.map +1 -1
  82. package/dist/esm-es5/pds-button.entry.js +1 -1
  83. package/dist/esm-es5/pds-button.entry.js.map +1 -1
  84. package/dist/esm-es5/pds-checkbox.entry.js +1 -1
  85. package/dist/esm-es5/pds-checkbox.entry.js.map +1 -1
  86. package/dist/esm-es5/pds-input.entry.js +1 -1
  87. package/dist/esm-es5/pds-link.entry.js +1 -1
  88. package/dist/esm-es5/pds-switch.entry.js +1 -1
  89. package/dist/esm-es5/pds-switch.entry.js.map +1 -1
  90. package/dist/esm-es5/pds-text.entry.js +1 -1
  91. package/dist/esm-es5/pds-textarea.entry.js +1 -1
  92. package/dist/esm-es5/pine-core.js +1 -1
  93. package/dist/esm-es5/utils-tJa4KYNO.js +2 -0
  94. package/dist/esm-es5/utils-tJa4KYNO.js.map +1 -0
  95. package/dist/pine-core/{p-088828ce.entry.js → p-042ee55c.entry.js} +2 -2
  96. package/dist/pine-core/{p-6cc09a2f.system.entry.js → p-19d08886.system.entry.js} +2 -2
  97. package/dist/pine-core/p-19d08886.system.entry.js.map +1 -0
  98. package/dist/pine-core/{p-0d8a2a39.system.entry.js → p-280a0ec1.system.entry.js} +2 -2
  99. package/dist/pine-core/p-380d1056.entry.js +2 -0
  100. package/dist/pine-core/p-380d1056.entry.js.map +1 -0
  101. package/dist/pine-core/p-3EWr6ZgL.system.js.map +1 -0
  102. package/dist/pine-core/p-4a658a86.system.entry.js +2 -0
  103. package/dist/pine-core/p-4a658a86.system.entry.js.map +1 -0
  104. package/dist/pine-core/p-65275835.system.entry.js +2 -0
  105. package/dist/pine-core/p-65275835.system.entry.js.map +1 -0
  106. package/dist/pine-core/{p-568296f0.system.entry.js → p-6bd5811c.system.entry.js} +2 -2
  107. package/dist/pine-core/{p-9afcab0c.system.entry.js → p-8096b988.system.entry.js} +2 -2
  108. package/dist/pine-core/p-8096b988.system.entry.js.map +1 -0
  109. package/dist/pine-core/p-8896d43a.entry.js +2 -0
  110. package/dist/pine-core/p-8896d43a.entry.js.map +1 -0
  111. package/dist/pine-core/p-B0PUl1_1.system.js.map +1 -0
  112. package/dist/pine-core/p-BG6uGRQj.system.js +2 -0
  113. package/dist/pine-core/p-BG6uGRQj.system.js.map +1 -0
  114. package/dist/pine-core/p-BdBU6s5P.system.js.map +1 -0
  115. package/dist/pine-core/{p-Ce_XeYF6.system.js.map → p-BmoX08WO.system.js.map} +1 -1
  116. package/dist/pine-core/{p-DJu23j_m.system.js.map → p-CmJBNVRO.system.js.map} +1 -1
  117. package/dist/pine-core/{p-CbQ4EQA9.system.js.map → p-DQ-QGnGf.system.js.map} +1 -1
  118. package/dist/pine-core/p-De9tROL-.system.js +1 -1
  119. package/dist/pine-core/{p-Dm_a1Ag0.system.js.map → p-KkT5zjJU.system.js.map} +1 -1
  120. package/dist/pine-core/p-Rj3B0bRw.system.js.map +1 -0
  121. package/dist/pine-core/{p-2b48499b.entry.js → p-a2d16624.entry.js} +2 -2
  122. package/dist/pine-core/{p-d06351b9.system.entry.js → p-a7cb24c3.system.entry.js} +2 -2
  123. package/dist/pine-core/{p-8a02c581.entry.js → p-b649d711.entry.js} +2 -2
  124. package/dist/pine-core/{p-fcdbb73f.entry.js → p-c7075f11.entry.js} +2 -2
  125. package/dist/pine-core/p-c7075f11.entry.js.map +1 -0
  126. package/dist/pine-core/p-c721e8cf.entry.js +2 -0
  127. package/dist/pine-core/p-c721e8cf.entry.js.map +1 -0
  128. package/dist/pine-core/{p-f2da93ea.entry.js → p-f35a5afa.entry.js} +2 -2
  129. package/dist/pine-core/{p-5c87077e.system.entry.js → p-ffe867ef.system.entry.js} +2 -2
  130. package/dist/pine-core/p-tJa4KYNO.js +2 -0
  131. package/dist/pine-core/p-tJa4KYNO.js.map +1 -0
  132. package/dist/pine-core/pds-box.entry.esm.js.map +1 -1
  133. package/dist/pine-core/pds-button.entry.esm.js.map +1 -1
  134. package/dist/pine-core/pds-checkbox.entry.esm.js.map +1 -1
  135. package/dist/pine-core/pds-switch.entry.esm.js.map +1 -1
  136. package/dist/pine-core/pine-core.esm.js +1 -1
  137. package/dist/types/components/pds-box/pds-box.d.ts +2 -1
  138. package/dist/types/components/pds-checkbox/pds-checkbox.d.ts +6 -0
  139. package/dist/types/components/pds-switch/pds-switch.d.ts +6 -0
  140. package/dist/types/components.d.ts +4 -4
  141. package/dist/types/utils/utils.d.ts +10 -3
  142. package/hydrate/index.js +165 -50
  143. package/hydrate/index.mjs +165 -50
  144. package/package.json +2 -2
  145. package/dist/cjs/utils-jWx-Mf12.js +0 -45
  146. package/dist/cjs/utils-jWx-Mf12.js.map +0 -1
  147. package/dist/esm/utils-DkabwBZT.js +0 -41
  148. package/dist/esm/utils-DkabwBZT.js.map +0 -1
  149. package/dist/esm-es5/utils-DkabwBZT.js +0 -2
  150. package/dist/esm-es5/utils-DkabwBZT.js.map +0 -1
  151. package/dist/pine-core/p-17c2f3fb.entry.js +0 -2
  152. package/dist/pine-core/p-17c2f3fb.entry.js.map +0 -1
  153. package/dist/pine-core/p-69e95bc4.system.entry.js +0 -2
  154. package/dist/pine-core/p-69e95bc4.system.entry.js.map +0 -1
  155. package/dist/pine-core/p-6cc09a2f.system.entry.js.map +0 -1
  156. package/dist/pine-core/p-7de61adb.entry.js +0 -2
  157. package/dist/pine-core/p-7de61adb.entry.js.map +0 -1
  158. package/dist/pine-core/p-81cf9a46.system.entry.js +0 -2
  159. package/dist/pine-core/p-81cf9a46.system.entry.js.map +0 -1
  160. package/dist/pine-core/p-9afcab0c.system.entry.js.map +0 -1
  161. package/dist/pine-core/p-BDQFLOLJ.system.js.map +0 -1
  162. package/dist/pine-core/p-BhPuKJbQ.system.js +0 -2
  163. package/dist/pine-core/p-BhPuKJbQ.system.js.map +0 -1
  164. package/dist/pine-core/p-CaD_7MzD.system.js.map +0 -1
  165. package/dist/pine-core/p-CnDggyDA.system.js.map +0 -1
  166. package/dist/pine-core/p-DkabwBZT.js +0 -2
  167. package/dist/pine-core/p-DkabwBZT.js.map +0 -1
  168. package/dist/pine-core/p-bfd08c9c.entry.js +0 -2
  169. package/dist/pine-core/p-bfd08c9c.entry.js.map +0 -1
  170. package/dist/pine-core/p-cHtb875x.system.js.map +0 -1
  171. package/dist/pine-core/p-fcdbb73f.entry.js.map +0 -1
  172. /package/dist/pine-core/{p-088828ce.entry.js.map → p-042ee55c.entry.js.map} +0 -0
  173. /package/dist/pine-core/{p-0d8a2a39.system.entry.js.map → p-280a0ec1.system.entry.js.map} +0 -0
  174. /package/dist/pine-core/{p-568296f0.system.entry.js.map → p-6bd5811c.system.entry.js.map} +0 -0
  175. /package/dist/pine-core/{p-2b48499b.entry.js.map → p-a2d16624.entry.js.map} +0 -0
  176. /package/dist/pine-core/{p-d06351b9.system.entry.js.map → p-a7cb24c3.system.entry.js.map} +0 -0
  177. /package/dist/pine-core/{p-8a02c581.entry.js.map → p-b649d711.entry.js.map} +0 -0
  178. /package/dist/pine-core/{p-f2da93ea.entry.js.map → p-f35a5afa.entry.js.map} +0 -0
  179. /package/dist/pine-core/{p-5c87077e.system.entry.js.map → p-ffe867ef.system.entry.js.map} +0 -0
@@ -50,15 +50,15 @@ const BaseTemplate = (args) =>
50
50
  html`<pds-select
51
51
  autocomplete="${args.autocomplete}"
52
52
  component-id="${args.componentId}"
53
- disabled="${args.disabled}"
53
+ ?disabled=${args.disabled}
54
54
  error-message="${args.errorMessage}"
55
55
  helper-message="${args.helperMessage}"
56
- hide-label="${args.hideLabel}"
57
- invalid="${args.invalid}"
56
+ ?hide-label=${args.hideLabel}
57
+ ?invalid=${args.invalid}
58
58
  label="${args.label}"
59
- multiple="${args.multiple}"
59
+ ?multiple=${args.multiple}
60
60
  name="${args.name}"
61
- required="${args.required}"
61
+ ?required=${args.required}
62
62
  type="${args.type}"
63
63
  value="${args.value}"
64
64
  >
@@ -70,14 +70,14 @@ const OptgroupTemplate = (args) =>
70
70
  html`<pds-select
71
71
  autocomplete="${args.autocomplete}"
72
72
  component-id="${args.componentId}"
73
- disabled="${args.disabled}"
73
+ ?disabled=${args.disabled}
74
74
  error-message="${args.errorMessage}"
75
75
  helper-message="${args.helperMessage}"
76
- invalid="${args.invalid}"
76
+ ?invalid=${args.invalid}
77
77
  label="${args.label}"
78
- multiple="${args.multiple}"
78
+ ?multiple=${args.multiple}
79
79
  name="${args.name}"
80
- required="${args.required}"
80
+ ?required=${args.required}
81
81
  type="${args.type}"
82
82
  value="${args.value}"
83
83
  >
@@ -159,15 +159,15 @@ WithOptgroup.args = {
159
159
  export const withActionLink = (args) => html`<pds-select
160
160
  autocomplete="${args.autocomplete}"
161
161
  component-id="pds-select-action-link"
162
- disabled="${args.disabled}"
162
+ ?disabled=${args.disabled}
163
163
  error-message="${args.errorMessage}"
164
164
  helper-message="${args.helperMessage}"
165
- hide-label="${args.hideLabel}"
166
- invalid="${args.invalid}"
165
+ ?hide-label=${args.hideLabel}
166
+ ?invalid=${args.invalid}
167
167
  label="Timezone"
168
- multiple="${args.multiple}"
168
+ ?multiple=${args.multiple}
169
169
  name="timezone"
170
- required="${args.required}"
170
+ ?required=${args.required}
171
171
  type="${args.type}"
172
172
  value="${args.value}">
173
173
  <pds-link href="#" slot="action">
@@ -179,15 +179,15 @@ export const withActionLink = (args) => html`<pds-select
179
179
  export const withActionButton = (args) => html`<pds-select
180
180
  autocomplete="${args.autocomplete}"
181
181
  component-id="pds-select-action-button"
182
- disabled="${args.disabled}"
182
+ ?disabled=${args.disabled}
183
183
  error-message="${args.errorMessage}"
184
184
  helper-message="${args.helperMessage}"
185
- hide-label="${args.hideLabel}"
186
- invalid="${args.invalid}"
185
+ ?hide-label=${args.hideLabel}
186
+ ?invalid=${args.invalid}
187
187
  label="Country"
188
- multiple="${args.multiple}"
188
+ ?multiple=${args.multiple}
189
189
  name="country"
190
- required="${args.required}"
190
+ ?required=${args.required}
191
191
  type="${args.type}"
192
192
  value="${args.value}">
193
193
  <pds-button slot="action" variant="unstyled">
@@ -15,21 +15,21 @@ export default {
15
15
  };
16
16
 
17
17
  const BaseTemplate = (args) => html`
18
- <pds-sortable border="${args.border}" component-id="${args.componentId}" dividers="${args.dividers}" handle-type="${args.handleType}">
18
+ <pds-sortable ?border=${args.border} component-id="${args.componentId}" ?dividers=${args.dividers} handle-type="${args.handleType}">
19
19
  <pds-sortable-item>Item 1</pds-sortable-item>
20
20
  <pds-sortable-item>Item 2</pds-sortable-item>
21
21
  <pds-sortable-item>Item 3</pds-sortable-item>
22
22
  </pds-sortable>`;
23
23
 
24
24
  const HandleTemplate = (args) => html`
25
- <pds-sortable border="${args.border}" component-id="${args.componentId}" dividers="${args.dividers}" handle-type="${args.handleType}">
25
+ <pds-sortable ?border=${args.border} component-id="${args.componentId}" ?dividers=${args.dividers} handle-type="${args.handleType}">
26
26
  <pds-sortable-item>Item 1</pds-sortable-item>
27
27
  <pds-sortable-item>Item 2</pds-sortable-item>
28
28
  <pds-sortable-item>Item 3</pds-sortable-item>
29
29
  </pds-sortable>`;
30
30
 
31
31
  const ActionsTemplate = (args) => html`
32
- <pds-sortable border="${args.border}" component-id="${args.componentId}" dividers="${args.dividers}" handle-type="${args.handleType}">
32
+ <pds-sortable ?border=${args.border} component-id="${args.componentId}" ?dividers=${args.dividers} handle-type="${args.handleType}">
33
33
  <pds-sortable-item enable-actions>
34
34
  <div>Item 1</div>
35
35
  <div slot="sortable-item-actions">
@@ -51,7 +51,7 @@ const ActionsTemplate = (args) => html`
51
51
  </pds-sortable>`;
52
52
 
53
53
  const FullDemoTemplate = (args) => html`
54
- <pds-sortable border="${args.border}" component-id="${args.componentId}" dividers="${args.dividers}" handle-type="${args.handleType}">
54
+ <pds-sortable ?border=${args.border} component-id="${args.componentId}" ?dividers=${args.dividers} handle-type="${args.handleType}">
55
55
  <pds-sortable-item enable-actions>
56
56
  <div>
57
57
  <div><strong>Item 1</strong></div>
@@ -26,6 +26,7 @@ export class PdsSwitch {
26
26
  return;
27
27
  const input = e.target;
28
28
  this.checked = input.checked;
29
+ this.updateFormValue();
29
30
  this.pdsSwitchChange.emit(e);
30
31
  };
31
32
  this.switchClassNames = () => {
@@ -39,16 +40,53 @@ export class PdsSwitch {
39
40
  return switchClasses;
40
41
  };
41
42
  }
43
+ connectedCallback() {
44
+ if (this.el.attachInternals) {
45
+ this.internals = this.el.attachInternals();
46
+ }
47
+ }
48
+ componentDidLoad() {
49
+ this.updateFormValue();
50
+ }
51
+ checkedChanged() {
52
+ this.updateFormValue();
53
+ }
54
+ updateFormValue() {
55
+ var _a;
56
+ if (typeof jest !== 'undefined' || typeof process !== 'undefined' && ((_a = process.env) === null || _a === void 0 ? void 0 : _a.NODE_ENV) === 'test') {
57
+ return;
58
+ }
59
+ if (this.internals && this.internals.setFormValue) {
60
+ // For switches, only send the value when checked, otherwise send null
61
+ const formValue = this.checked ? (this.value || 'on') : null;
62
+ this.internals.setFormValue(formValue);
63
+ }
64
+ if (this.internals && this.internals.setValidity) {
65
+ this.internals.setValidity({});
66
+ }
67
+ }
68
+ formStateRestoreCallback(state) {
69
+ if (state instanceof FormData) {
70
+ // For switches, restore if the value exists in FormData
71
+ const value = this.value || 'on';
72
+ this.checked = state.get(this.name || this.componentId) === value;
73
+ }
74
+ else if (typeof state === 'string') {
75
+ // Restore from string state
76
+ this.checked = state === (this.value || 'on');
77
+ }
78
+ }
42
79
  componentWillLoad() {
43
80
  this.inheritedAttributes = Object.assign({}, inheritAriaAttributes(this.el));
44
81
  }
45
82
  render() {
46
- return (h(Host, { key: '128ed012fe386dea88e6da282084589b22453588', class: this.switchClassNames(), "aria-disabled": this.disabled ? 'true' : null }, h("label", { key: '3407eeffca9a0f0c047e5d7c761526b488aafb62', htmlFor: this.componentId }, h("input", Object.assign({ key: '3f16f928b2b96aa212923ba09ee80a3559b8103c', "aria-describedby": assignDescription(this.componentId, this.invalid, this.errorMessage || this.helperMessage), "aria-invalid": this.invalid ? "true" : undefined, checked: this.checked, class: "pds-switch__input", disabled: this.disabled, id: this.componentId, name: this.name ? this.name : this.componentId, onChange: this.onSwitchUpdate, required: this.required, type: "checkbox", value: this.value }, this.inheritedAttributes)), h("span", { key: '09c43ffbabce6a2fe133875ca15e0910d34064fa', class: this.hideLabel ? 'visually-hidden' : '' }, this.label)), this.helperMessage &&
47
- h("div", { key: '90c9df8b2efef83cf238d540076bad04bf9aa2eb', class: `pds-switch__message`, id: messageId(this.componentId, 'helper') }, this.helperMessage), this.errorMessage &&
48
- h("div", { key: 'e812446a907dc0ad822b0c5974fca5913117f051', class: `pds-switch__message pds-switch__message--error`, id: messageId(this.componentId, 'error'), "aria-live": "assertive" }, h("pds-icon", { key: 'e1c93c8ac145e54a205f8bfecf465ba8e484313b', icon: danger, size: "small" }), this.errorMessage)));
83
+ return (h(Host, { key: 'bd2a7a9740c0d466fbedff0e06e532ab8deb567d', class: this.switchClassNames(), "aria-disabled": this.disabled ? 'true' : null }, h("label", { key: '0fb2cfa31a424bce3aa7f8310718f004a034fdae', htmlFor: this.componentId }, h("input", Object.assign({ key: '85b836e04db6648dd8981b51cdbd9ee90bfcea6a', "aria-describedby": assignDescription(this.componentId, this.invalid, this.errorMessage || this.helperMessage), "aria-invalid": this.invalid ? "true" : undefined, checked: this.checked, class: "pds-switch__input", disabled: this.disabled, id: this.componentId, name: this.name ? this.name : this.componentId, onChange: this.onSwitchUpdate, required: this.required, type: "checkbox", value: this.value }, this.inheritedAttributes)), h("span", { key: '29674a12e61459a11aa8a791eeb46c829c468317', class: this.hideLabel ? 'visually-hidden' : '' }, this.label)), this.helperMessage &&
84
+ h("div", { key: '135a4bec88f9fe938737b61f361bb76908c39bc7', class: `pds-switch__message`, id: messageId(this.componentId, 'helper') }, this.helperMessage), this.errorMessage &&
85
+ h("div", { key: '18cc1bd12df56b0621820cc0e96a150463373ce2', class: `pds-switch__message pds-switch__message--error`, id: messageId(this.componentId, 'error'), "aria-live": "assertive" }, h("pds-icon", { key: '455fd05665e9bbd8d5a9096544116bb646e4c66a', icon: danger, size: "small" }), this.errorMessage)));
49
86
  }
50
87
  static get is() { return "pds-switch"; }
51
88
  static get encapsulation() { return "shadow"; }
89
+ static get formAssociated() { return true; }
52
90
  static get originalStyleUrls() {
53
91
  return {
54
92
  "$": ["../../global/styles/utils/label.scss", "pds-switch.scss"]
@@ -300,5 +338,11 @@ export class PdsSwitch {
300
338
  }];
301
339
  }
302
340
  static get elementRef() { return "el"; }
341
+ static get watchers() {
342
+ return [{
343
+ "propName": "checked",
344
+ "methodName": "checkedChanged"
345
+ }];
346
+ }
303
347
  }
304
348
  //# sourceMappingURL=pds-switch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pds-switch.js","sourceRoot":"","sources":["../../../src/components/pds-switch/pds-switch.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, Host, h, Prop } from '@stencil/core';\nimport { assignDescription, messageId } from '../../utils/form';\nimport { danger } from '@pine-ds/icons/icons';\n\nimport { inheritAriaAttributes } from '@utils/attributes';\nimport type { Attributes } from '@utils/attributes';\n\n@Component({\n tag: 'pds-switch',\n styleUrls: ['../../global/styles/utils/label.scss', 'pds-switch.scss'],\n shadow: true,\n})\nexport class PdsSwitch {\n private inheritedAttributes: Attributes = {};\n\n @Element() el: HTMLPdsSwitchElement;\n\n /**\n * A unique identifier used for the underlying component `id` attribute and the label `for` attribute.\n */\n @Prop() componentId!: string;\n\n /**\n * Determines the input 'checked' state.\n */\n @Prop({ mutable: true }) checked = false;\n\n /**\n * Determines the input 'disabled' state, preventing user interaction.\n */\n @Prop() disabled? = false;\n\n /**\n * Displays message text describing an invalid state.\n */\n @Prop() errorMessage?: string;\n\n /**\n * Visually hides the label text for instances where only the switch should be displayed. Label remains accessible to assistive technology such as screen readers.\n */\n @Prop() hideLabel: boolean;\n\n /**\n * Displays help text for additional description of an input.\n */\n @Prop() helperMessage: string;\n\n /**\n * Determines the input 'invalid' state, signifying an error is present.\n */\n @Prop() invalid? = false;\n\n /**\n * Displays text to describe the input.\n */\n @Prop() label!: string;\n\n /**\n * Identifies form data and unifies a group of radio inputs for toggling a single property/value.\n */\n @Prop() name: string;\n\n /**\n * Determines the 'required' state of the input.\n */\n @Prop() required? = false;\n\n /**\n * Provides input with a string submitted in form data.\n */\n @Prop() value: string;\n\n /**\n * Emits an event on input change.\n */\n @Event() pdsSwitchChange: EventEmitter<InputEvent>;\n\n private onSwitchUpdate = (e: Event) => {\n if (this.disabled) return;\n\n const input = e.target as HTMLInputElement;\n this.checked = input.checked;\n this.pdsSwitchChange.emit(e as InputEvent);\n };\n\n private switchClassNames = () => {\n let switchClasses = `pds-switch`;\n\n if (this.invalid === true) {\n switchClasses += \" pds-switch--error\";\n }\n if (this.helperMessage !== undefined) {\n switchClasses += \" pds-switch--message\";\n }\n return switchClasses;\n };\n\n componentWillLoad() {\n this.inheritedAttributes = {\n ...inheritAriaAttributes(this.el)\n }\n }\n\n render() {\n return (\n <Host class={this.switchClassNames()} aria-disabled={this.disabled ? 'true' : null}>\n <label htmlFor={this.componentId}>\n <input\n aria-describedby={assignDescription(this.componentId, this.invalid, this.errorMessage || this.helperMessage)}\n aria-invalid={this.invalid ? \"true\" : undefined}\n checked={this.checked}\n class=\"pds-switch__input\"\n disabled={this.disabled}\n id={this.componentId}\n name={this.name ? this.name : this.componentId}\n onChange={this.onSwitchUpdate}\n required={this.required}\n type=\"checkbox\"\n value={this.value}\n {...this.inheritedAttributes}\n />\n <span class={this.hideLabel ? 'visually-hidden' : ''}>\n {this.label}\n </span>\n </label>\n {this.helperMessage &&\n <div\n class={`pds-switch__message`}\n id={messageId(this.componentId, 'helper')}\n >\n {this.helperMessage}\n </div>\n }\n {this.errorMessage &&\n <div\n class={`pds-switch__message pds-switch__message--error`}\n id={messageId(this.componentId, 'error')}\n aria-live=\"assertive\"\n >\n <pds-icon icon={danger} size=\"small\" />\n {this.errorMessage}\n </div>\n }\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"pds-switch.js","sourceRoot":"","sources":["../../../src/components/pds-switch/pds-switch.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, Host, h, Prop, Watch } from '@stencil/core';\nimport { assignDescription, messageId } from '../../utils/form';\nimport { danger } from '@pine-ds/icons/icons';\n\nimport { inheritAriaAttributes } from '@utils/attributes';\nimport type { Attributes } from '@utils/attributes';\n\n@Component({\n tag: 'pds-switch',\n styleUrls: ['../../global/styles/utils/label.scss', 'pds-switch.scss'],\n shadow: true,\n formAssociated: true,\n})\nexport class PdsSwitch {\n private inheritedAttributes: Attributes = {};\n private internals?: ElementInternals;\n\n @Element() el: HTMLPdsSwitchElement;\n\n /**\n * A unique identifier used for the underlying component `id` attribute and the label `for` attribute.\n */\n @Prop() componentId!: string;\n\n /**\n * Determines the input 'checked' state.\n */\n @Prop({ mutable: true }) checked = false;\n\n /**\n * Determines the input 'disabled' state, preventing user interaction.\n */\n @Prop() disabled? = false;\n\n /**\n * Displays message text describing an invalid state.\n */\n @Prop() errorMessage?: string;\n\n /**\n * Visually hides the label text for instances where only the switch should be displayed. Label remains accessible to assistive technology such as screen readers.\n */\n @Prop() hideLabel: boolean;\n\n /**\n * Displays help text for additional description of an input.\n */\n @Prop() helperMessage: string;\n\n /**\n * Determines the input 'invalid' state, signifying an error is present.\n */\n @Prop() invalid? = false;\n\n /**\n * Displays text to describe the input.\n */\n @Prop() label!: string;\n\n /**\n * Identifies form data and unifies a group of radio inputs for toggling a single property/value.\n */\n @Prop() name: string;\n\n /**\n * Determines the 'required' state of the input.\n */\n @Prop() required? = false;\n\n /**\n * Provides input with a string submitted in form data.\n */\n @Prop() value: string;\n\n /**\n * Emits an event on input change.\n */\n @Event() pdsSwitchChange: EventEmitter<InputEvent>;\n\n private onSwitchUpdate = (e: Event) => {\n if (this.disabled) return;\n\n const input = e.target as HTMLInputElement;\n this.checked = input.checked;\n\n this.updateFormValue();\n\n this.pdsSwitchChange.emit(e as InputEvent);\n };\n\n private switchClassNames = () => {\n let switchClasses = `pds-switch`;\n\n if (this.invalid === true) {\n switchClasses += \" pds-switch--error\";\n }\n if (this.helperMessage !== undefined) {\n switchClasses += \" pds-switch--message\";\n }\n return switchClasses;\n };\n\n connectedCallback() {\n if (this.el.attachInternals) {\n this.internals = this.el.attachInternals();\n }\n }\n\n componentDidLoad() {\n this.updateFormValue();\n }\n\n @Watch('checked')\n checkedChanged() {\n this.updateFormValue();\n }\n\n private updateFormValue() {\n if (typeof jest !== 'undefined' || typeof process !== 'undefined' && process.env?.NODE_ENV === 'test') {\n return;\n }\n\n if (this.internals && this.internals.setFormValue) {\n // For switches, only send the value when checked, otherwise send null\n const formValue = this.checked ? (this.value || 'on') : null;\n this.internals.setFormValue(formValue);\n }\n\n if (this.internals && this.internals.setValidity) {\n this.internals.setValidity({});\n }\n }\n\n formStateRestoreCallback(state: string | FormData | null) {\n if (state instanceof FormData) {\n // For switches, restore if the value exists in FormData\n const value = this.value || 'on';\n this.checked = state.get(this.name || this.componentId) === value;\n } else if (typeof state === 'string') {\n // Restore from string state\n this.checked = state === (this.value || 'on');\n }\n }\n\n componentWillLoad() {\n this.inheritedAttributes = {\n ...inheritAriaAttributes(this.el)\n }\n }\n\n render() {\n return (\n <Host class={this.switchClassNames()} aria-disabled={this.disabled ? 'true' : null}>\n <label htmlFor={this.componentId}>\n <input\n aria-describedby={assignDescription(this.componentId, this.invalid, this.errorMessage || this.helperMessage)}\n aria-invalid={this.invalid ? \"true\" : undefined}\n checked={this.checked}\n class=\"pds-switch__input\"\n disabled={this.disabled}\n id={this.componentId}\n name={this.name ? this.name : this.componentId}\n onChange={this.onSwitchUpdate}\n required={this.required}\n type=\"checkbox\"\n value={this.value}\n {...this.inheritedAttributes}\n />\n <span class={this.hideLabel ? 'visually-hidden' : ''}>\n {this.label}\n </span>\n </label>\n {this.helperMessage &&\n <div\n class={`pds-switch__message`}\n id={messageId(this.componentId, 'helper')}\n >\n {this.helperMessage}\n </div>\n }\n {this.errorMessage &&\n <div\n class={`pds-switch__message pds-switch__message--error`}\n id={messageId(this.componentId, 'error')}\n aria-live=\"assertive\"\n >\n <pds-icon icon={danger} size=\"small\" />\n {this.errorMessage}\n </div>\n }\n </Host>\n );\n }\n}\n"]}
@@ -21,17 +21,17 @@ export default {
21
21
 
22
22
  const BaseTemplate = (args) => html`
23
23
  <pds-switch
24
- checked=${args.checked}
24
+ ?checked=${args.checked}
25
25
  component-id=${args.componentId}
26
- disabled=${args.disabled}
26
+ ?disabled=${args.disabled}
27
27
  error-message=${args.errorMessage}
28
28
  helper-message=${args.helperMessage}
29
- invalid=${args.invalid}
29
+ ?invalid=${args.invalid}
30
30
  label=${args.label}
31
- hide-label=${args.hideLabel}
31
+ ?hide-label=${args.hideLabel}
32
32
  name=${args.name}
33
33
  onChange=${args.onChange}
34
- required=${args.required}
34
+ ?required=${args.required}
35
35
  type=${args.type}
36
36
  />
37
37
  `;
@@ -16,11 +16,11 @@ export default {
16
16
 
17
17
  const BaseTemplate = (args) => html`
18
18
  <pds-table
19
- compact="${args.compact}"
19
+ ?compact=${args.compact}
20
20
  component-id="${args.componentId}"
21
- fixed-column="${args.fixedColumn}"
22
- responsive="${args.responsive}"
23
- selectable="${args.selectable}"
21
+ ?fixed-column=${args.fixedColumn}
22
+ ?responsive=${args.responsive}
23
+ ?selectable=${args.selectable}
24
24
  >
25
25
  <pds-table-head>
26
26
  <pds-table-head-cell>Column Title</pds-table-head-cell>
@@ -48,11 +48,11 @@ const BaseTemplate = (args) => html`
48
48
 
49
49
  const ResponsiveTemplate = (args) => html`
50
50
  <pds-table
51
- compact="${args.compact}"
51
+ ?compact=${args.compact}
52
52
  component-id="${args.componentId}"
53
- fixed-column="${args.fixedColumn}"
54
- responsive="${args.responsive}"
55
- selectable="${args.selectable}"
53
+ ?fixed-column=${args.fixedColumn}
54
+ ?responsive=${args.responsive}
55
+ ?selectable=${args.selectable}
56
56
  >
57
57
  <pds-table-head>
58
58
  <pds-table-head-cell>Column Title</pds-table-head-cell>
@@ -116,11 +116,11 @@ const ResponsiveTemplate = (args) => html`
116
116
 
117
117
  const SortableTemplate = (args) => html`
118
118
  <pds-table
119
- compact="${args.compact}"
119
+ ?compact=${args.compact}
120
120
  component-id="${args.componentId}"
121
- fixed-column="${args.fixedColumn}"
122
- responsive="${args.responsive}"
123
- selectable="${args.selectable}"
121
+ ?fixed-column=${args.fixedColumn}
122
+ ?responsive=${args.responsive}
123
+ ?selectable=${args.selectable}
124
124
  >
125
125
  <pds-table-head>
126
126
  <pds-table-head-cell sortable=${args.sortable}>Name</pds-table-head-cell>
@@ -37,18 +37,18 @@ export default {
37
37
 
38
38
  const BaseTemplate = (args) => html`<pds-textarea
39
39
  autocomplete="${args.autocomplete}"
40
- clear-on-edit="${args.clearOnEdit}"
40
+ ?clear-on-edit=${args.clearOnEdit}
41
41
  component-id="${args.componentId}"
42
- disabled="${args.disabled}"
42
+ ?disabled=${args.disabled}
43
43
  error-message="${args.errorMessage}"
44
44
  helper-message="${args.helperMessage}"
45
- invalid="${args.invalid}"
45
+ ?invalid=${args.invalid}
46
46
  label="${args.label}"
47
47
  name="${args.name}"
48
48
  onChange="${args.onChange}"
49
49
  placeholder="${args.placeholder}"
50
- readonly="${args.readonly}"
51
- required="${args.required}"
50
+ ?readonly=${args.readonly}
51
+ ?required=${args.required}
52
52
  rows="${args.rows}"
53
53
  value="${args.value}"
54
54
  data-tooltip-id="foo"
@@ -134,18 +134,18 @@ Autocomplete.args = {
134
134
 
135
135
  export const withActionLink = (args) => html`<pds-textarea
136
136
  autocomplete="${args.autocomplete}"
137
- clear-on-edit="${args.clearOnEdit}"
137
+ ?clear-on-edit=${args.clearOnEdit}
138
138
  component-id="pds-textarea-action-link"
139
- disabled="${args.disabled}"
139
+ ?disabled=${args.disabled}
140
140
  error-message="${args.errorMessage}"
141
141
  helper-message="${args.helperMessage}"
142
- invalid="${args.invalid}"
142
+ ?invalid=${args.invalid}
143
143
  label="Notes"
144
144
  name="${args.name}"
145
145
  onChange="${args.onChange}"
146
146
  placeholder="${args.placeholder}"
147
- readonly="${args.readonly}"
148
- required="${args.required}"
147
+ ?readonly=${args.readonly}
148
+ ?required=${args.required}
149
149
  rows="3"
150
150
  value="${args.value}"
151
151
  data-tooltip-id="foo"
@@ -157,18 +157,18 @@ export const withActionLink = (args) => html`<pds-textarea
157
157
 
158
158
  export const withActionButton = (args) => html`<pds-textarea
159
159
  autocomplete="${args.autocomplete}"
160
- clear-on-edit="${args.clearOnEdit}"
160
+ ?clear-on-edit=${args.clearOnEdit}
161
161
  component-id="pds-textarea-action-button"
162
- disabled="${args.disabled}"
162
+ ?disabled=${args.disabled}
163
163
  error-message="${args.errorMessage}"
164
164
  helper-message="${args.helperMessage}"
165
- invalid="${args.invalid}"
165
+ ?invalid=${args.invalid}
166
166
  label="Description"
167
167
  name="${args.name}"
168
168
  onChange="${args.onChange}"
169
169
  placeholder="${args.placeholder}"
170
- readonly="${args.readonly}"
171
- required="${args.required}"
170
+ ?readonly=${args.readonly}
171
+ ?required=${args.required}
172
172
  rows="4"
173
173
  value="${args.value}"
174
174
  data-tooltip-id="foo"
@@ -18,7 +18,7 @@ export default {
18
18
 
19
19
  const BaseTemplate = (args) => html`
20
20
  <pds-toast
21
- .dismissible="${args.dismissible}"
21
+ ?dismissible=${args.dismissible}
22
22
  component-id="${args.componentId}"
23
23
  duration="${args.duration}"
24
24
  icon="${args.icon || ''}"
@@ -29,7 +29,7 @@ const BaseTemplate = (args) => html`
29
29
 
30
30
  const WithLinkTemplate = (args) => html`
31
31
  <pds-toast
32
- .dismissible="${args.dismissible}"
32
+ ?dismissible=${args.dismissible}
33
33
  component-id="${args.componentId}"
34
34
  duration="${args.duration}"
35
35
  icon="${args.icon || ''}"
@@ -15,10 +15,10 @@ export default {
15
15
  }
16
16
 
17
17
  const BaseTemplate = (args) => html`
18
- <pds-tooltip content=${args.content} max-width=${args.maxWidth} has-arrow=${args.hasArrow} placement=${args.placement} opened=${args.opened}>${args.slot}</pds-tooltip>`;
18
+ <pds-tooltip content=${args.content} max-width=${args.maxWidth} ?has-arrow=${args.hasArrow} placement=${args.placement} ?opened=${args.opened}>${args.slot}</pds-tooltip>`;
19
19
 
20
20
  const HTMLContentTemplate = (args) => html`
21
- <pds-tooltip has-arrow=${args.hasArrow} max-width=${args.maxWidth} placement=${args.placement} html-content=${args.htmlContent} opened=${args.opened}>
21
+ <pds-tooltip ?has-arrow=${args.hasArrow} max-width=${args.maxWidth} placement=${args.placement} ?html-content=${args.htmlContent} ?opened=${args.opened}>
22
22
  <div slot="content">
23
23
  <p><strong>This is a tooltip</strong></p>
24
24
  <p>Tooltips are used to describe or identify an element. In most scenarios, tooltips help the user understand the meaning, function or alt-text of an element.</p>
@@ -30,46 +30,46 @@ const PositionTemplate = (args) => html`
30
30
  <div class="demo-container" style="min-height: 50vh; width: 100%; display: flex; align-items: center; justify-content: center;">
31
31
  <div class="position-demo-grid">
32
32
  <div class="position-demo-grid-item">
33
- <pds-tooltip content="content 2" has-arrow=${args.hasArrow} max-width=${args.maxWidth} placement="top-start" opened=${args.opened}>
33
+ <pds-tooltip content="content 2" ?has-arrow=${args.hasArrow} max-width=${args.maxWidth} placement="top-start" ?opened=${args.opened}>
34
34
  <pds-button variant="accent">t</pds-button>
35
35
  </pds-tooltip>
36
- <pds-tooltip content="content 2" has-arrow=${args.hasArrow} max-width=${args.maxWidth} placement="top" opened=${args.opened}>
36
+ <pds-tooltip content="content 2" ?has-arrow=${args.hasArrow} max-width=${args.maxWidth} placement="top" ?opened=${args.opened}>
37
37
  <pds-button variant="accent">t</pds-button>
38
38
  </pds-tooltip>
39
- <pds-tooltip content="content 3" has-arrow=${args.hasArrow} max-width=${args.maxWidth} placement="top-end" opened=${args.opened}>
39
+ <pds-tooltip content="content 3" ?has-arrow=${args.hasArrow} max-width=${args.maxWidth} placement="top-end" ?opened=${args.opened}>
40
40
  <pds-button variant="accent">te</pds-button>
41
41
  </pds-tooltip>
42
42
  </div>
43
43
  <div class="position-demo-grid-item">
44
- <pds-tooltip content="content 1" has-arrow=${args.hasArrow} max-width=${args.maxWidth} placement="left-start" opened=${args.opened}>
44
+ <pds-tooltip content="content 1" ?has-arrow=${args.hasArrow} max-width=${args.maxWidth} placement="left-start" ?opened=${args.opened}>
45
45
  <pds-button variant="accent">ls</pds-button>
46
46
  </pds-tooltip>
47
- <pds-tooltip content="content 2" has-arrow=${args.hasArrow} max-width=${args.maxWidth} placement="left" opened=${args.opened}>
47
+ <pds-tooltip content="content 2" ?has-arrow=${args.hasArrow} max-width=${args.maxWidth} placement="left" ?opened=${args.opened}>
48
48
  <pds-button variant="accent">l</pds-button>
49
49
  </pds-tooltip>
50
- <pds-tooltip content="content 3" has-arrow=${args.hasArrow} max-width=${args.maxWidth} placement="left-end" opened=${args.opened}>
50
+ <pds-tooltip content="content 3" ?has-arrow=${args.hasArrow} max-width=${args.maxWidth} placement="left-end" ?opened=${args.opened}>
51
51
  <pds-button variant="accent">le</pds-button>
52
52
  </pds-tooltip>
53
53
  </div>
54
54
  <div class="position-demo-grid-item">
55
- <pds-tooltip content="content 1" has-arrow=${args.hasArrow} max-width=${args.maxWidth} placement="bottom-start" opened=${args.opened}>
55
+ <pds-tooltip content="content 1" ?has-arrow=${args.hasArrow} max-width=${args.maxWidth} placement="bottom-start" ?opened=${args.opened}>
56
56
  <pds-button variant="accent">bs</pds-button>
57
57
  </pds-tooltip>
58
- <pds-tooltip content="content 2" has-arrow=${args.hasArrow} max-width=${args.maxWidth} placement="bottom" opened=${args.opened}>
58
+ <pds-tooltip content="content 2" ?has-arrow=${args.hasArrow} max-width=${args.maxWidth} placement="bottom" ?opened=${args.opened}>
59
59
  <pds-button variant="accent">b</pds-button>
60
60
  </pds-tooltip>
61
- <pds-tooltip content="content 3" has-arrow=${args.hasArrow} max-width=${args.maxWidth} placement="bottom-end" opened=${args.opened}>
61
+ <pds-tooltip content="content 3" ?has-arrow=${args.hasArrow} max-width=${args.maxWidth} placement="bottom-end" ?opened=${args.opened}>
62
62
  <pds-button variant="accent">be</pds-button>
63
63
  </pds-tooltip>
64
64
  </div>
65
65
  <div class="position-demo-grid-item">
66
- <pds-tooltip content="content 1" has-arrow=${args.hasArrow} max-width=${args.maxWidth} placement="right-start" opened=${args.opened}>
66
+ <pds-tooltip content="content 1" ?has-arrow=${args.hasArrow} max-width=${args.maxWidth} placement="right-start" ?opened=${args.opened}>
67
67
  <pds-button variant="accent">rs</pds-button>
68
68
  </pds-tooltip>
69
- <pds-tooltip content="content 2" has-arrow=${args.hasArrow} max-width=${args.maxWidth} placement="right" opened=${args.opened}>
69
+ <pds-tooltip content="content 2" ?has-arrow=${args.hasArrow} max-width=${args.maxWidth} placement="right" ?opened=${args.opened}>
70
70
  <pds-button variant="accent">r</pds-button>
71
71
  </pds-tooltip>
72
- <pds-tooltip content="content 3" has-arrow=${args.hasArrow} max-width=${args.maxWidth} placement="right-end" opened=${args.opened}>
72
+ <pds-tooltip content="content 3" ?has-arrow=${args.hasArrow} max-width=${args.maxWidth} placement="right-end" ?opened=${args.opened}>
73
73
  <pds-button variant="accent">re</pds-button>
74
74
  </pds-tooltip>
75
75
  </div>
@@ -15,10 +15,37 @@ export const debounce = (func, wait = 0) => {
15
15
  timer = setTimeout(func, wait, ...args);
16
16
  };
17
17
  };
18
+ // Add shared color normalization utility to unify token handling across components
19
+ /**
20
+ * Normalizes color values to ensure consistent CSS variable usage
21
+ * @param value - Raw token (--token), CSS variable (var(--token)), semantic name, or literal color
22
+ * @param options.semanticMap - Optional mapping of semantic names to CSS variables
23
+ * @returns Normalized color value or undefined for invalid inputs
24
+ */
25
+ export const normalizeColorValue = (value, options) => {
26
+ if (!value)
27
+ return undefined;
28
+ const trimmed = value.trim();
29
+ // Treat whitespace-only as undefined to avoid invalid CSS values
30
+ if (trimmed === '')
31
+ return undefined;
32
+ // If a semantic map is provided and the value matches a key, return mapped CSS var
33
+ if ((options === null || options === void 0 ? void 0 : options.semanticMap) && options.semanticMap[trimmed]) {
34
+ return options.semanticMap[trimmed];
35
+ }
36
+ // If already a CSS var, pass through
37
+ if (trimmed.startsWith('var('))
38
+ return trimmed;
39
+ // If raw token is provided (e.g., --pine-color-foo), wrap in var(...)
40
+ if (trimmed.startsWith('--'))
41
+ return `var(${trimmed})`;
42
+ // Otherwise treat as literal CSS color value
43
+ return trimmed;
44
+ };
18
45
  export const setColor = (color, customColors) => {
19
- var _a;
46
+ // Return an empty object for empty/whitespace/undefined inputs to avoid invalid CSS styles
20
47
  if (!color)
21
- return;
48
+ return {};
22
49
  const defaultColors = {
23
50
  primary: 'var(--pine-color-text-primary)',
24
51
  secondary: 'var(--pine-color-text-secondary)',
@@ -29,9 +56,15 @@ export const setColor = (color, customColors) => {
29
56
  success: 'var(--pine-color-text-success)',
30
57
  warning: 'var(--pine-color-text-warning)',
31
58
  };
32
- const colors = customColors || defaultColors;
59
+ // Merge defaults with any custom overrides so defaults are preserved
60
+ const semanticMap = Object.assign(Object.assign({}, defaultColors), (customColors || {}));
61
+ // Use the shared normalizer so components accept semantic names, raw tokens, var(...), or literals
62
+ const resolved = normalizeColorValue(color, { semanticMap });
63
+ // Ensure we never return an undefined style value; if unresolved, omit the property
64
+ if (!resolved)
65
+ return {};
33
66
  return {
34
- '--color': (_a = colors[color]) !== null && _a !== void 0 ? _a : (color.startsWith('--') ? `var(${color})` : color)
67
+ '--color': resolved
35
68
  };
36
69
  };
37
70
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAe,EAAE,EAAE;IAC9C,OAAO,CAAC,CAAC,EAAE,CAAC,UAAU,IAAI,CAAC,CAAE,EAAU,CAAC,YAAY,CAAA;AACtD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAmB,EAAE,IAAY,EAAgB,EAAE;IAC/E,MAAM,QAAQ,GAAI,KAAa,CAAC,SAAS,IAAI,KAAK,CAAC;IACnD,OAAO;QACL,SAAS,EAAE,KAAK;QAChB,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;KACnC,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAA8B,EAAE,IAAI,GAAG,CAAC,EAAE,EAAE;IACnE,IAAI,KAAU,CAAC;IACf,OAAO,CAAC,GAAG,IAAW,EAAO,EAAE;QAC7B,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;IAC1C,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,YAAqC,EAAE,EAAE;;IAC/E,IAAI,CAAC,KAAK;QAAE,OAAO;IAEnB,MAAM,aAAa,GAA2B;QAC5C,OAAO,EAAE,gCAAgC;QACzC,SAAS,EAAE,kCAAkC;QAC7C,OAAO,EAAE,gCAAgC;QACzC,MAAM,EAAE,+BAA+B;QACvC,MAAM,EAAE,+BAA+B;QACvC,IAAI,EAAE,6BAA6B;QACnC,OAAO,EAAE,gCAAgC;QACzC,OAAO,EAAE,gCAAgC;KAC1C,CAAC;IAEF,MAAM,MAAM,GAAG,YAAY,IAAI,aAAa,CAAC;IAE7C,OAAO;QACL,SAAS,EAAE,MAAA,MAAM,CAAC,KAAK,CAAC,mCAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;KAC/E,CAAC;AACJ,CAAC,CAAA","sourcesContent":["import type { EventEmitter } from \"@stencil/core\";\n\nexport const hasShadowDom = (el: HTMLElement) => {\n return !!el.shadowRoot && !!(el as any).attachShadow\n}\n\nexport const debounceEvent = (event: EventEmitter, wait: number): EventEmitter => {\n const original = (event as any)._original || event;\n return {\n _original: event,\n emit: debounce(original.emit.bind(original), wait),\n } as EventEmitter;\n};\n\nexport const debounce = (func: (...args: any[]) => void, wait = 0) => {\n let timer: any;\n return (...args: any[]): any => {\n clearTimeout(timer);\n timer = setTimeout(func, wait, ...args);\n };\n};\n\nexport const setColor = (color: string, customColors?: Record<string, string>) => {\n if (!color) return;\n\n const defaultColors: Record<string, string> = {\n primary: 'var(--pine-color-text-primary)',\n secondary: 'var(--pine-color-text-secondary)',\n neutral: 'var(--pine-color-text-neutral)',\n accent: 'var(--pine-color-text-accent)',\n danger: 'var(--pine-color-text-danger)',\n info: 'var(--pine-color-text-info)',\n success: 'var(--pine-color-text-success)',\n warning: 'var(--pine-color-text-warning)',\n };\n\n const colors = customColors || defaultColors;\n\n return {\n '--color': colors[color] ?? (color.startsWith('--') ? `var(${color})` : color)\n };\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAe,EAAE,EAAE;IAC9C,OAAO,CAAC,CAAC,EAAE,CAAC,UAAU,IAAI,CAAC,CAAE,EAAU,CAAC,YAAY,CAAA;AACtD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAmB,EAAE,IAAY,EAAgB,EAAE;IAC/E,MAAM,QAAQ,GAAI,KAAa,CAAC,SAAS,IAAI,KAAK,CAAC;IACnD,OAAO;QACL,SAAS,EAAE,KAAK;QAChB,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;KACnC,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAA8B,EAAE,IAAI,GAAG,CAAC,EAAE,EAAE;IACnE,IAAI,KAAU,CAAC;IACf,OAAO,CAAC,GAAG,IAAW,EAAO,EAAE;QAC7B,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;IAC1C,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,mFAAmF;AACnF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,KAAyB,EACzB,OAAkD,EAC9B,EAAE;IACtB,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,iEAAiE;IACjE,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAErC,mFAAmF;IACnF,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,KAAI,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;QACzD,OAAO,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,qCAAqC;IACrC,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,OAAO,CAAC;IAE/C,sEAAsE;IACtE,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,OAAO,OAAO,GAAG,CAAC;IAEvD,6CAA6C;IAC7C,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,YAAqC,EAAE,EAAE;IAC/E,2FAA2F;IAC3F,IAAI,CAAC,KAAK;QAAE,OAAO,EAA4B,CAAC;IAEhD,MAAM,aAAa,GAA2B;QAC5C,OAAO,EAAE,gCAAgC;QACzC,SAAS,EAAE,kCAAkC;QAC7C,OAAO,EAAE,gCAAgC;QACzC,MAAM,EAAE,+BAA+B;QACvC,MAAM,EAAE,+BAA+B;QACvC,IAAI,EAAE,6BAA6B;QACnC,OAAO,EAAE,gCAAgC;QACzC,OAAO,EAAE,gCAAgC;KAC1C,CAAC;IAEF,qEAAqE;IACrE,MAAM,WAAW,mCAAQ,aAAa,GAAK,CAAC,YAAY,IAAI,EAAE,CAAC,CAAE,CAAC;IAElE,mGAAmG;IACnG,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IAE7D,oFAAoF;IACpF,IAAI,CAAC,QAAQ;QAAE,OAAO,EAA4B,CAAC;IAEnD,OAAO;QACL,SAAS,EAAE,QAAQ;KACpB,CAAC;AACJ,CAAC,CAAA","sourcesContent":["import type { EventEmitter } from \"@stencil/core\";\n\nexport const hasShadowDom = (el: HTMLElement) => {\n return !!el.shadowRoot && !!(el as any).attachShadow\n}\n\nexport const debounceEvent = (event: EventEmitter, wait: number): EventEmitter => {\n const original = (event as any)._original || event;\n return {\n _original: event,\n emit: debounce(original.emit.bind(original), wait),\n } as EventEmitter;\n};\n\nexport const debounce = (func: (...args: any[]) => void, wait = 0) => {\n let timer: any;\n return (...args: any[]): any => {\n clearTimeout(timer);\n timer = setTimeout(func, wait, ...args);\n };\n};\n\n// Add shared color normalization utility to unify token handling across components\n/**\n * Normalizes color values to ensure consistent CSS variable usage\n * @param value - Raw token (--token), CSS variable (var(--token)), semantic name, or literal color\n * @param options.semanticMap - Optional mapping of semantic names to CSS variables\n * @returns Normalized color value or undefined for invalid inputs\n */\nexport const normalizeColorValue = (\n value: string | undefined,\n options?: { semanticMap?: Record<string, string> }\n): string | undefined => {\n if (!value) return undefined;\n const trimmed = value.trim();\n // Treat whitespace-only as undefined to avoid invalid CSS values\n if (trimmed === '') return undefined;\n\n // If a semantic map is provided and the value matches a key, return mapped CSS var\n if (options?.semanticMap && options.semanticMap[trimmed]) {\n return options.semanticMap[trimmed];\n }\n\n // If already a CSS var, pass through\n if (trimmed.startsWith('var(')) return trimmed;\n\n // If raw token is provided (e.g., --pine-color-foo), wrap in var(...)\n if (trimmed.startsWith('--')) return `var(${trimmed})`;\n\n // Otherwise treat as literal CSS color value\n return trimmed;\n};\n\nexport const setColor = (color: string, customColors?: Record<string, string>) => {\n // Return an empty object for empty/whitespace/undefined inputs to avoid invalid CSS styles\n if (!color) return {} as Record<string, string>;\n\n const defaultColors: Record<string, string> = {\n primary: 'var(--pine-color-text-primary)',\n secondary: 'var(--pine-color-text-secondary)',\n neutral: 'var(--pine-color-text-neutral)',\n accent: 'var(--pine-color-text-accent)',\n danger: 'var(--pine-color-text-danger)',\n info: 'var(--pine-color-text-info)',\n success: 'var(--pine-color-text-success)',\n warning: 'var(--pine-color-text-warning)',\n };\n\n // Merge defaults with any custom overrides so defaults are preserved\n const semanticMap = { ...defaultColors, ...(customColors || {}) };\n\n // Use the shared normalizer so components accept semantic names, raw tokens, var(...), or literals\n const resolved = normalizeColorValue(color, { semanticMap });\n\n // Ensure we never return an undefined style value; if unresolved, omit the property\n if (!resolved) return {} as Record<string, string>;\n\n return {\n '--color': resolved\n };\n}\n"]}
package/dist/docs.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "timestamp": "2025-08-07T19:53:57",
2
+ "timestamp": "2025-08-19T17:10:57",
3
3
  "compiler": {
4
4
  "name": "@stencil/core",
5
5
  "version": "4.28.2",
@@ -1122,16 +1122,16 @@
1122
1122
  },
1123
1123
  {
1124
1124
  "name": "flex",
1125
- "type": "\"grow\" | \"none\" | \"shrink\"",
1125
+ "type": "string",
1126
1126
  "complexType": {
1127
- "original": "`none` | `grow` | `shrink`",
1128
- "resolved": "\"grow\" | \"none\" | \"shrink\"",
1127
+ "original": "`none` | `grow` | `shrink` | string",
1128
+ "resolved": "string",
1129
1129
  "references": {}
1130
1130
  },
1131
1131
  "mutable": false,
1132
1132
  "attr": "flex",
1133
1133
  "reflectToAttr": false,
1134
- "docs": "Defines how a box will grow or shrink to fit the space available in its container.",
1134
+ "docs": "Defines how a box will grow or shrink to fit the space available in its container.\nCan be a predefined value ('none', 'grow', 'shrink') or a custom flex value (e.g., '1', '0 1 auto').",
1135
1135
  "docsTags": [
1136
1136
  {
1137
1137
  "name": "defaultValue",
@@ -1140,15 +1140,6 @@
1140
1140
  ],
1141
1141
  "values": [
1142
1142
  {
1143
- "value": "grow",
1144
- "type": "string"
1145
- },
1146
- {
1147
- "value": "none",
1148
- "type": "string"
1149
- },
1150
- {
1151
- "value": "shrink",
1152
1143
  "type": "string"
1153
1144
  }
1154
1145
  ],