@foxy.io/elements 1.18.0-beta.12 → 1.18.0-beta.14

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 (251) hide show
  1. package/dist/cdn/foxy-access-recovery-form.js +1 -1
  2. package/dist/cdn/foxy-address-card.js +2 -2
  3. package/dist/cdn/foxy-address-form.js +1 -1
  4. package/dist/cdn/foxy-api-browser.js +1 -1
  5. package/dist/cdn/foxy-applied-tax-card.js +1 -1
  6. package/dist/cdn/foxy-attribute-card.js +1 -1
  7. package/dist/cdn/foxy-attribute-form.js +1 -1
  8. package/dist/cdn/foxy-cancellation-form.js +1 -1
  9. package/dist/cdn/foxy-collection-page.js +1 -1
  10. package/dist/cdn/foxy-collection-pages.js +1 -1
  11. package/dist/cdn/foxy-copy-to-clipboard.js +1 -1
  12. package/dist/cdn/foxy-coupon-card.js +1 -1
  13. package/dist/cdn/foxy-coupon-code-form.js +1 -1
  14. package/dist/cdn/foxy-coupon-codes-form.js +1 -1
  15. package/dist/cdn/foxy-coupon-detail-card.js +1 -1
  16. package/dist/cdn/foxy-coupon-form.js +1 -1
  17. package/dist/cdn/foxy-custom-field-card.js +1 -1
  18. package/dist/cdn/foxy-custom-field-form.js +1 -1
  19. package/dist/cdn/foxy-customer-api.js +1 -1
  20. package/dist/cdn/foxy-customer-card.js +1 -1
  21. package/dist/cdn/foxy-customer-form.js +1 -1
  22. package/dist/cdn/foxy-customer-portal-settings.js +1 -1
  23. package/dist/cdn/foxy-customer-portal.js +1 -1
  24. package/dist/cdn/foxy-customer.js +2 -2
  25. package/dist/cdn/foxy-customers-table.js +1 -1
  26. package/dist/cdn/foxy-discount-builder.js +1 -1
  27. package/dist/cdn/foxy-discount-card.js +1 -1
  28. package/dist/cdn/foxy-discount-detail-card.js +1 -1
  29. package/dist/cdn/foxy-donation.js +1 -1
  30. package/dist/cdn/foxy-email-template-card.js +1 -1
  31. package/dist/cdn/foxy-email-template-form.js +1 -1
  32. package/dist/cdn/foxy-error-entry-card.js +1 -1
  33. package/dist/cdn/foxy-form-dialog.js +1 -1
  34. package/dist/cdn/foxy-generate-codes-form.js +1 -1
  35. package/dist/cdn/foxy-gift-card-card.js +1 -1
  36. package/dist/cdn/foxy-gift-card-code-form.js +1 -1
  37. package/dist/cdn/foxy-gift-card-code-log-card.js +1 -1
  38. package/dist/cdn/foxy-gift-card-codes-form.js +1 -1
  39. package/dist/cdn/foxy-gift-card-form.js +1 -1
  40. package/dist/cdn/foxy-i18n.js +1 -1
  41. package/dist/cdn/foxy-item-card.js +1 -1
  42. package/dist/cdn/foxy-item-category-card.js +1 -1
  43. package/dist/cdn/foxy-item-category-form.js +1 -1
  44. package/dist/cdn/foxy-item-form.js +1 -1
  45. package/dist/cdn/foxy-item-option-card.js +1 -1
  46. package/dist/cdn/foxy-item-option-form.js +1 -1
  47. package/dist/cdn/foxy-items-form.js +1 -1
  48. package/dist/cdn/foxy-nucleon-element.js +1 -1
  49. package/dist/cdn/foxy-pagination.js +1 -1
  50. package/dist/cdn/foxy-payment-card.js +1 -1
  51. package/dist/cdn/foxy-payment-method-card.js +1 -1
  52. package/dist/cdn/foxy-payments-api-fraud-protection-card.js +1 -1
  53. package/dist/cdn/foxy-payments-api-fraud-protection-form.js +1 -1
  54. package/dist/cdn/foxy-payments-api-payment-method-card.js +1 -1
  55. package/dist/cdn/foxy-payments-api-payment-method-form.js +1 -1
  56. package/dist/cdn/foxy-payments-api-payment-preset-card.js +1 -1
  57. package/dist/cdn/foxy-payments-api-payment-preset-form.js +1 -1
  58. package/dist/cdn/foxy-payments-api.js +1 -1
  59. package/dist/cdn/foxy-query-builder.js +1 -1
  60. package/dist/cdn/foxy-report-form.js +12 -12
  61. package/dist/cdn/foxy-reports-table.js +1 -1
  62. package/dist/cdn/foxy-shipment-card.js +1 -1
  63. package/dist/cdn/foxy-sign-in-form.js +1 -1
  64. package/dist/cdn/foxy-spinner.js +2 -2
  65. package/dist/cdn/foxy-store-form.js +1 -0
  66. package/dist/cdn/foxy-store-shipping-method-form.js +1 -1
  67. package/dist/cdn/foxy-subscription-card.js +1 -1
  68. package/dist/cdn/foxy-subscription-form.js +4 -4
  69. package/dist/cdn/foxy-subscriptions-table.js +1 -1
  70. package/dist/cdn/foxy-table.js +1 -1
  71. package/dist/cdn/foxy-tax-card.js +1 -1
  72. package/dist/cdn/foxy-tax-form.js +1 -1
  73. package/dist/cdn/foxy-template-card.js +1 -0
  74. package/dist/cdn/foxy-template-config-form.js +1 -1
  75. package/dist/cdn/foxy-template-form.js +1 -1
  76. package/dist/cdn/foxy-template-set-form.js +1 -0
  77. package/dist/cdn/foxy-transaction-card.js +1 -1
  78. package/dist/cdn/foxy-transaction.js +1 -1
  79. package/dist/cdn/foxy-transactions-table.js +1 -1
  80. package/dist/cdn/foxy-user-form.js +1 -1
  81. package/dist/cdn/foxy-users-table.js +1 -1
  82. package/dist/cdn/foxy-webhook-card.js +1 -1
  83. package/dist/cdn/foxy-webhook-form.js +1 -1
  84. package/dist/cdn/foxy-webhook-log-card.js +1 -1
  85. package/dist/cdn/foxy-webhook-status-card.js +1 -1
  86. package/dist/cdn/{shared-14afc5c6.js → shared-04046e0e.js} +1 -1
  87. package/dist/cdn/{shared-4a2e1638.js → shared-0bbbc87f.js} +1 -1
  88. package/dist/cdn/shared-0cc4beec.js +6 -0
  89. package/dist/cdn/{shared-3ba0d0e8.js → shared-0ecc7d2c.js} +1 -1
  90. package/dist/cdn/{shared-4e2e233c.js → shared-119efeaa.js} +1 -1
  91. package/dist/cdn/shared-11be3c89.js +1 -0
  92. package/dist/cdn/{shared-5a823202.js → shared-14dc506c.js} +1 -1
  93. package/dist/cdn/shared-15278fe0.js +1 -0
  94. package/dist/cdn/{shared-1c9fd2b1.js → shared-19044260.js} +1 -1
  95. package/dist/cdn/{shared-d187b584.js → shared-19440ca2.js} +1 -1
  96. package/dist/cdn/shared-1eb24528.js +1 -0
  97. package/dist/cdn/shared-214c34b5.js +1 -0
  98. package/dist/cdn/{shared-dfdf021a.js → shared-23e0d67e.js} +1 -1
  99. package/dist/cdn/{shared-3214ee1b.js → shared-290769ea.js} +1 -1
  100. package/dist/cdn/{shared-7c8b3ce0.js → shared-2af327d0.js} +1 -1
  101. package/dist/cdn/{shared-0ca312eb.js → shared-35a7a4d6.js} +1 -1
  102. package/dist/cdn/{shared-0008cf8e.js → shared-36aaf815.js} +5 -5
  103. package/dist/cdn/{shared-f00d31e0.js → shared-3a84611d.js} +1 -1
  104. package/dist/cdn/{shared-dbb66347.js → shared-3e781cc9.js} +1 -1
  105. package/dist/cdn/{shared-de5fc645.js → shared-418e88da.js} +1 -1
  106. package/dist/cdn/{shared-5f751bfc.js → shared-435ab348.js} +1 -1
  107. package/dist/cdn/{shared-3d245899.js → shared-4a519a4a.js} +1 -1
  108. package/dist/cdn/{shared-b0ba62ff.js → shared-4a796610.js} +1 -1
  109. package/dist/cdn/{shared-ccb96675.js → shared-4c61787a.js} +1 -1
  110. package/dist/cdn/{shared-74e79000.js → shared-4ebfd7ef.js} +7 -7
  111. package/dist/cdn/{shared-ba4053b3.js → shared-4fa44231.js} +1 -1
  112. package/dist/cdn/{shared-ad70817d.js → shared-553e6472.js} +1 -1
  113. package/dist/cdn/{shared-dc891fc4.js → shared-5cb39f03.js} +1 -1
  114. package/dist/cdn/{shared-54deb3dc.js → shared-67f1821b.js} +1 -1
  115. package/dist/cdn/shared-682dbe0a.js +1 -0
  116. package/dist/cdn/{shared-19bdb896.js → shared-73a8b603.js} +1 -1
  117. package/dist/cdn/{shared-b1304f5b.js → shared-7415fa7e.js} +1 -1
  118. package/dist/cdn/shared-779795c5.js +1 -0
  119. package/dist/cdn/{shared-a6263179.js → shared-81d3ff30.js} +1 -1
  120. package/dist/cdn/{shared-8dd640bf.js → shared-8d9c0007.js} +1 -1
  121. package/dist/cdn/{shared-61174bec.js → shared-915fb0e4.js} +12 -17
  122. package/dist/cdn/{shared-d8faafc7.js → shared-9195959e.js} +1 -1
  123. package/dist/cdn/{shared-c566fe52.js → shared-93548d58.js} +1 -1
  124. package/dist/cdn/{shared-0ffa1afb.js → shared-93a1be98.js} +1 -1
  125. package/dist/cdn/{shared-9aab51c0.js → shared-96ebc59f.js} +1 -1
  126. package/dist/cdn/shared-9a0f97e5.js +1 -0
  127. package/dist/cdn/{shared-39cb3be1.js → shared-9afb80a6.js} +1 -1
  128. package/dist/cdn/{shared-3fd94d2f.js → shared-a0e71609.js} +1 -1
  129. package/dist/cdn/shared-a420358e.js +1 -0
  130. package/dist/cdn/{shared-3c7489d6.js → shared-a42a63aa.js} +1 -1
  131. package/dist/cdn/shared-a8966936.js +1 -0
  132. package/dist/cdn/{shared-c99a75d8.js → shared-aa4bf9ab.js} +1 -1
  133. package/dist/cdn/shared-b1201c2e.js +1 -0
  134. package/dist/cdn/{shared-b866f3a7.js → shared-b20753b8.js} +1 -1
  135. package/dist/cdn/shared-b2850d64.js +1 -0
  136. package/dist/cdn/{shared-b7787aae.js → shared-c3a3d9f6.js} +3 -3
  137. package/dist/cdn/shared-c7ab6598.js +1 -0
  138. package/dist/cdn/{shared-6d69487b.js → shared-c7cae9e6.js} +1 -1
  139. package/dist/cdn/{shared-a93f4ae9.js → shared-d24c3729.js} +1 -1
  140. package/dist/cdn/shared-d6276c83.js +1 -0
  141. package/dist/cdn/shared-d75c6072.js +1 -0
  142. package/dist/cdn/shared-d82f3ba0.js +1 -0
  143. package/dist/cdn/{shared-d9c5e26e.js → shared-d8bf2eac.js} +1 -1
  144. package/dist/cdn/{shared-66a0263f.js → shared-d9a3104e.js} +1 -1
  145. package/dist/cdn/shared-da285807.js +169 -0
  146. package/dist/cdn/shared-e1069291.js +1 -0
  147. package/dist/cdn/{shared-96695c93.js → shared-e32be255.js} +4 -4
  148. package/dist/cdn/{shared-f0591b3e.js → shared-e4383064.js} +1 -1
  149. package/dist/cdn/shared-e4e93604.js +1 -0
  150. package/dist/cdn/shared-eab81bf4.js +1 -0
  151. package/dist/cdn/shared-effdf59d.js +1 -0
  152. package/dist/cdn/translations/email-template-card/en.json +5 -1
  153. package/dist/cdn/translations/store-form/en.json +311 -0
  154. package/dist/cdn/translations/template-config-form/en.json +4 -0
  155. package/dist/cdn/translations/template-set-form/en.json +384 -0
  156. package/dist/elements/internal/InternalAsyncComboBoxControl/InternalAsyncComboBoxControl.d.ts +1 -0
  157. package/dist/elements/internal/InternalAsyncComboBoxControl/InternalAsyncComboBoxControl.js +15 -15
  158. package/dist/elements/internal/InternalAsyncComboBoxControl/InternalAsyncComboBoxControl.js.map +1 -1
  159. package/dist/elements/internal/InternalEditableListControl/InternalEditableListControl.d.ts +11 -0
  160. package/dist/elements/internal/InternalEditableListControl/InternalEditableListControl.js +143 -0
  161. package/dist/elements/internal/InternalEditableListControl/InternalEditableListControl.js.map +1 -0
  162. package/dist/elements/internal/InternalEditableListControl/index.d.ts +3 -0
  163. package/dist/elements/internal/InternalEditableListControl/index.js +5 -0
  164. package/dist/elements/internal/InternalEditableListControl/index.js.map +1 -0
  165. package/dist/elements/internal/InternalEditableListControl/types.d.ts +9 -0
  166. package/dist/elements/internal/InternalEditableListControl/types.js +2 -0
  167. package/dist/elements/internal/InternalEditableListControl/types.js.map +1 -0
  168. package/dist/elements/internal/InternalFrequencyControl/InternalFrequencyControl.d.ts +6 -1
  169. package/dist/elements/internal/InternalFrequencyControl/InternalFrequencyControl.js +25 -12
  170. package/dist/elements/internal/InternalFrequencyControl/InternalFrequencyControl.js.map +1 -1
  171. package/dist/elements/internal/InternalIntegerControl/InternalIntegerControl.d.ts +4 -1
  172. package/dist/elements/internal/InternalIntegerControl/InternalIntegerControl.js +15 -0
  173. package/dist/elements/internal/InternalIntegerControl/InternalIntegerControl.js.map +1 -1
  174. package/dist/elements/internal/InternalPasswordControl/InternalPasswordControl.d.ts +13 -0
  175. package/dist/elements/internal/InternalPasswordControl/InternalPasswordControl.js +40 -0
  176. package/dist/elements/internal/InternalPasswordControl/InternalPasswordControl.js.map +1 -0
  177. package/dist/elements/internal/InternalPasswordControl/index.d.ts +4 -0
  178. package/dist/elements/internal/InternalPasswordControl/index.js +6 -0
  179. package/dist/elements/internal/InternalPasswordControl/index.js.map +1 -0
  180. package/dist/elements/internal/InternalSelectControl/InternalSelectControl.d.ts +2 -0
  181. package/dist/elements/internal/InternalSelectControl/InternalSelectControl.js +20 -9
  182. package/dist/elements/internal/InternalSelectControl/InternalSelectControl.js.map +1 -1
  183. package/dist/elements/internal/InternalTextControl/InternalTextControl.d.ts +4 -1
  184. package/dist/elements/internal/InternalTextControl/InternalTextControl.js +15 -1
  185. package/dist/elements/internal/InternalTextControl/InternalTextControl.js.map +1 -1
  186. package/dist/elements/public/EmailTemplateCard/EmailTemplateCard.js +11 -11
  187. package/dist/elements/public/EmailTemplateCard/EmailTemplateCard.js.map +1 -1
  188. package/dist/elements/public/NucleonElement/NucleonElement.js +13 -3
  189. package/dist/elements/public/NucleonElement/NucleonElement.js.map +1 -1
  190. package/dist/elements/public/NucleonElement/UpdateEvent.d.ts +10 -2
  191. package/dist/elements/public/NucleonElement/UpdateEvent.js +8 -2
  192. package/dist/elements/public/NucleonElement/UpdateEvent.js.map +1 -1
  193. package/dist/elements/public/StoreForm/StoreForm.d.ts +55 -0
  194. package/dist/elements/public/StoreForm/StoreForm.js +1023 -0
  195. package/dist/elements/public/StoreForm/StoreForm.js.map +1 -0
  196. package/dist/elements/public/StoreForm/index.d.ts +15 -0
  197. package/dist/elements/public/StoreForm/index.js +17 -0
  198. package/dist/elements/public/StoreForm/index.js.map +1 -0
  199. package/dist/elements/public/StoreForm/types.d.ts +3 -0
  200. package/dist/elements/public/StoreForm/types.js +2 -0
  201. package/dist/elements/public/StoreForm/types.js.map +1 -0
  202. package/dist/elements/public/TemplateCard/TemplateCard.d.ts +10 -0
  203. package/dist/elements/public/TemplateCard/TemplateCard.js +18 -0
  204. package/dist/elements/public/TemplateCard/TemplateCard.js.map +1 -0
  205. package/dist/elements/public/TemplateCard/index.d.ts +4 -0
  206. package/dist/elements/public/TemplateCard/index.js +6 -0
  207. package/dist/elements/public/TemplateCard/index.js.map +1 -0
  208. package/dist/elements/public/TemplateCard/types.d.ts +3 -0
  209. package/dist/elements/public/TemplateCard/types.js +2 -0
  210. package/dist/elements/public/TemplateCard/types.js.map +1 -0
  211. package/dist/elements/public/TemplateConfigForm/TemplateConfigForm.d.ts +1 -0
  212. package/dist/elements/public/TemplateConfigForm/TemplateConfigForm.js +56 -7
  213. package/dist/elements/public/TemplateConfigForm/TemplateConfigForm.js.map +1 -1
  214. package/dist/elements/public/TemplateConfigForm/index.d.ts +1 -0
  215. package/dist/elements/public/TemplateConfigForm/index.js +1 -0
  216. package/dist/elements/public/TemplateConfigForm/index.js.map +1 -1
  217. package/dist/elements/public/TemplateSetForm/TemplateSetForm.d.ts +44 -0
  218. package/dist/elements/public/TemplateSetForm/TemplateSetForm.js +360 -0
  219. package/dist/elements/public/TemplateSetForm/TemplateSetForm.js.map +1 -0
  220. package/dist/elements/public/TemplateSetForm/index.d.ts +15 -0
  221. package/dist/elements/public/TemplateSetForm/index.js +17 -0
  222. package/dist/elements/public/TemplateSetForm/index.js.map +1 -0
  223. package/dist/elements/public/TemplateSetForm/types.d.ts +3 -0
  224. package/dist/elements/public/TemplateSetForm/types.js +2 -0
  225. package/dist/elements/public/TemplateSetForm/types.js.map +1 -0
  226. package/dist/elements/public/index.d.ts +3 -0
  227. package/dist/elements/public/index.defined.d.ts +3 -0
  228. package/dist/elements/public/index.defined.js +3 -0
  229. package/dist/elements/public/index.defined.js.map +1 -1
  230. package/dist/elements/public/index.js +3 -0
  231. package/dist/elements/public/index.js.map +1 -1
  232. package/dist/mixins/configurable.js +9 -0
  233. package/dist/mixins/configurable.js.map +1 -1
  234. package/dist/mixins/themeable.js +304 -0
  235. package/dist/mixins/themeable.js.map +1 -1
  236. package/package.json +1 -1
  237. package/dist/cdn/shared-02c6c308.js +0 -169
  238. package/dist/cdn/shared-164a791e.js +0 -1
  239. package/dist/cdn/shared-24d650cd.js +0 -1
  240. package/dist/cdn/shared-27089ebf.js +0 -1
  241. package/dist/cdn/shared-425d906a.js +0 -1
  242. package/dist/cdn/shared-4a4eab8b.js +0 -1
  243. package/dist/cdn/shared-4cd53ea2.js +0 -1
  244. package/dist/cdn/shared-6d175df8.js +0 -1
  245. package/dist/cdn/shared-73ac094b.js +0 -1
  246. package/dist/cdn/shared-7684cb05.js +0 -1
  247. package/dist/cdn/shared-a03d948d.js +0 -1
  248. package/dist/cdn/shared-a2efb819.js +0 -1
  249. package/dist/cdn/shared-d5ef2683.js +0 -1
  250. package/dist/cdn/shared-ea58e244.js +0 -1
  251. package/dist/cdn/shared-ff31023c.js +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InternalEditableListControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalEditableListControl/InternalEditableListControl.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations, TemplateResult } from 'lit-element';\nimport type { Item, Option } from './types';\n\nimport { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';\nimport { classMap } from '../../../utils/class-map';\nimport { repeat } from 'lit-html/directives/repeat';\nimport { live } from 'lit-html/directives/live';\nimport { html } from 'lit-element';\n\nexport class InternalEditableListControl extends InternalEditableControl {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n options: { type: Array },\n __newItem: { attribute: false },\n };\n }\n\n options: Option[] = [];\n\n private __newItem = '';\n\n render(): TemplateResult {\n const deleteButtonClass = classMap({\n 'w-xs h-xs mr-xs rounded-full transition-colors flex-shrink-0': true,\n 'focus-outline-none focus-ring-2 ring-inset ring-error-50': true,\n 'text-tertiary hover-bg-error-10 hover-text-error': !this.disabled,\n 'cursor-default text-disabled': this.disabled,\n 'flex items-center justify-center': !this.readonly,\n 'hidden': this.readonly,\n });\n\n const itemClass = classMap({\n 'transition-colors h-m ml-s flex items-center': true,\n 'text-secondary': this.readonly,\n 'text-disabled': this.disabled,\n });\n\n const isAddButtonDisabled = this.disabled || !this.__newItem;\n\n const addItem = () => {\n if (!this.__newItem) return;\n this._value = [...this._value, { value: this.__newItem }];\n this.__newItem = '';\n };\n\n return html`\n <div class=\"group\">\n <div\n class=\"transition-colors mb-xs font-medium text-s text-secondary group-hover-text-body\"\n >\n ${this.label}\n </div>\n\n <div\n class=\"border border-contrast-10 rounded transition-colors group-hover-border-contrast-20\"\n >\n <ol\n class=\"transition-colors divide-y divide-contrast-10 font-medium group-hover-divide-contrast-20\"\n >\n ${repeat(\n this._value,\n item => item.value,\n (item, index) => {\n return html`\n <li class=${itemClass}>\n <div class=\"flex-1 mr-s\">${item.label ?? item.value}</div>\n\n <button\n aria-label=${this.t('delete')}\n class=${deleteButtonClass}\n ?disabled=${this.disabled}\n @click=${() => {\n this._value = this._value.filter((_, i) => i !== index);\n }}\n >\n <iron-icon icon=\"lumo:cross\" class=\"icon-inline text-xl\"></iron-icon>\n </button>\n </li>\n `;\n }\n )}\n </ol>\n\n <div\n style=${this._value.length === 0\n ? 'border-radius: calc(var(--lumo-border-radius-m) - 1px)'\n : 'border-radius: 0 0 calc(var(--lumo-border-radius-m) - 1px) calc(var(--lumo-border-radius-m) - 1px)'}\n class=${classMap({\n 'transition-colors bg-contrast-10 pl-s h-m flex items-center': true,\n 'focus-within-ring-2 focus-within-ring-primary-50': true,\n 'group-hover-bg-contrast-20': true,\n 'flex': !this.readonly,\n 'hidden': this.readonly,\n })}\n >\n <input\n placeholder=${this.placeholder}\n class=\"w-full bg-transparent appearance-none h-m font-medium focus-outline-none\"\n list=\"list\"\n .value=${live(this.__newItem)}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && addItem()}\n @change=${(evt: Event) => evt.stopPropagation()}\n @input=${(evt: InputEvent) => {\n this.__newItem = (evt.currentTarget as HTMLInputElement).value.trim();\n }}\n />\n\n <datalist id=\"list\">\n ${this.options.map(({ label, value }) => {\n if (this._value.some(item => item.value === value)) return;\n return html`<option value=${value}>${label ?? value}</option>`;\n })}\n </datalist>\n\n <div class=\"transition-opacity ${this.__newItem ? 'opacity-100' : 'opacity-0'}\">\n <button\n aria-label=${this.t('submit')}\n class=${classMap({\n 'w-xs h-xs mr-xs flex-shrink-0 ring-inset ring-success-50 focus-outline-none':\n true,\n 'flex items-center justify-center rounded-full transition-colors': true,\n 'bg-contrast-5 text-disabled cursor-default': isAddButtonDisabled,\n 'bg-success-10 text-success cursor-pointer': !isAddButtonDisabled,\n 'hover-bg-success hover-text-success-contrast': !isAddButtonDisabled,\n 'focus-ring-2': !isAddButtonDisabled,\n })}\n ?disabled=${isAddButtonDisabled}\n @click=${addItem}\n >\n <iron-icon icon=\"lumo:plus\" class=\"icon-inline text-l\"></iron-icon>\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"transition-colors mt-xs text-xs text-secondary group-hover-text-body\">\n ${this.helperText}\n </div>\n </div>\n `;\n }\n\n protected get _value(): Item[] {\n return (super._value ?? []) as Item[];\n }\n\n protected set _value(newValue: Item[]) {\n super._value = newValue;\n }\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import '../InternalEditableControl/index';
2
+ import { InternalEditableListControl } from './InternalEditableListControl';
3
+ export { InternalEditableListControl };
@@ -0,0 +1,5 @@
1
+ import "../InternalEditableControl/index.js";
2
+ import { InternalEditableListControl } from "./InternalEditableListControl.js";
3
+ customElements.define('foxy-internal-editable-list-control', InternalEditableListControl);
4
+ export { InternalEditableListControl };
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalEditableListControl/index.ts"],"names":[],"mappings":"AAAA,6CAA0C;AAE1C,OAAO,EAAE,2BAA2B,EAAE,yCAAsC;AAE5E,cAAc,CAAC,MAAM,CAAC,qCAAqC,EAAE,2BAA2B,CAAC,CAAC;AAE1F,OAAO,EAAE,2BAA2B,EAAE,CAAC","sourcesContent":["import '../InternalEditableControl/index';\n\nimport { InternalEditableListControl } from './InternalEditableListControl';\n\ncustomElements.define('foxy-internal-editable-list-control', InternalEditableListControl);\n\nexport { InternalEditableListControl };\n"]}
@@ -0,0 +1,9 @@
1
+ import type { TemplateResult } from 'lit-html';
2
+ export declare type Item = {
3
+ label?: string | TemplateResult;
4
+ value: string;
5
+ };
6
+ export declare type Option = {
7
+ label?: string;
8
+ value: string;
9
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalEditableListControl/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { TemplateResult } from 'lit-html';\n\nexport type Item = { label?: string | TemplateResult; value: string };\nexport type Option = { label?: string; value: string };\n"]}
@@ -1,4 +1,4 @@
1
- import type { CSSResultArray, TemplateResult } from 'lit-element';
1
+ import type { CSSResultArray, PropertyDeclarations, TemplateResult } from 'lit-element';
2
2
  import { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';
3
3
  /**
4
4
  * Internal control displaying a custom field for frequency input.
@@ -7,7 +7,12 @@ import { InternalEditableControl } from '../InternalEditableControl/InternalEdit
7
7
  * @element foxy-internal-frequency-control
8
8
  */
9
9
  export declare class InternalFrequencyControl extends InternalEditableControl {
10
+ static get properties(): PropertyDeclarations;
10
11
  static get styles(): CSSResultArray;
12
+ options: {
13
+ value: string;
14
+ label: string;
15
+ }[];
11
16
  private __i18n;
12
17
  renderControl(): TemplateResult;
13
18
  updated(changes: Map<keyof this, unknown>): void;
@@ -1,5 +1,4 @@
1
1
  import { InternalEditableControl } from "../InternalEditableControl/InternalEditableControl.js";
2
- import { parseDuration } from "../../../utils/parse-duration.js";
3
2
  import { css, html } from 'lit-element';
4
3
  /**
5
4
  * Internal control displaying a custom field for frequency input.
@@ -10,14 +9,29 @@ import { css, html } from 'lit-element';
10
9
  export class InternalFrequencyControl extends InternalEditableControl {
11
10
  constructor() {
12
11
  super(...arguments);
12
+ this.options = [
13
+ { value: 'd', label: 'day' },
14
+ { value: 'w', label: 'week' },
15
+ { value: 'm', label: 'month' },
16
+ { value: 'y', label: 'year' },
17
+ ];
13
18
  this.__i18n = {
14
19
  formatValue: inputValues => inputValues.join(''),
15
20
  parseValue: value => {
16
- const { count, units } = parseDuration(value);
17
- return [count.toString(), units];
21
+ var _a;
22
+ const normalizedValue = value.startsWith('.') ? `0${value}` : value;
23
+ const count = parseFloat(value.substring(0, Math.max(normalizedValue.length - 1, 0)));
24
+ const units = (_a = normalizedValue[normalizedValue.length - 1]) !== null && _a !== void 0 ? _a : '';
25
+ return isNaN(count) ? ['0', ''] : [count.toString(), units];
18
26
  },
19
27
  };
20
28
  }
29
+ static get properties() {
30
+ return {
31
+ ...super.properties,
32
+ options: { attribute: false },
33
+ };
34
+ }
21
35
  static get styles() {
22
36
  return [
23
37
  super.styles,
@@ -59,7 +73,11 @@ vaadin-combo-box::part(text-field){
59
73
  renderControl() {
60
74
  var _a, _b;
61
75
  const value = ((_a = this._value) !== null && _a !== void 0 ? _a : '');
62
- const count = parseDuration(value).count;
76
+ const count = parseFloat(this.__i18n.parseValue(value)[0]);
77
+ const items = this.options.map(({ value, label }) => ({
78
+ label: this.t(label, { count }),
79
+ value,
80
+ }));
63
81
  return html `
64
82
  <vaadin-custom-field
65
83
  ?disabled=${this.disabled}
@@ -93,12 +111,7 @@ vaadin-combo-box::part(text-field){
93
111
  ?disabled=${this.disabled}
94
112
  ?readonly=${this.readonly}
95
113
  ?invalid=${!this._checkValidity()}
96
- .items=${[
97
- { value: 'd', label: this.t('day', { count }) },
98
- { value: 'w', label: this.t('week', { count }) },
99
- { value: 'm', label: this.t('month', { count }) },
100
- { value: 'y', label: this.t('year', { count }) },
101
- ]}
114
+ .items=${items}
102
115
  @keydown=${(evt) => { var _a; return evt.key === 'Enter' && ((_a = this.nucleon) === null || _a === void 0 ? void 0 : _a.submit()); }}
103
116
  >
104
117
  </vaadin-combo-box>
@@ -107,8 +120,8 @@ vaadin-combo-box::part(text-field){
107
120
  }
108
121
  updated(changes) {
109
122
  super.updated(changes);
110
- const field = this.renderRoot.firstElementChild;
111
- if (field.value !== this._value)
123
+ const field = this.renderRoot.querySelector('vaadin-custom-field');
124
+ if (field && field.value !== this._value)
112
125
  field.value = this._value;
113
126
  }
114
127
  }
@@ -1 +1 @@
1
- {"version":3,"file":"InternalFrequencyControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalFrequencyControl/InternalFrequencyControl.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CustomFieldElement, CustomFieldI18n } from '@vaadin/vaadin-custom-field';\nimport type { CSSResultArray, TemplateResult } from 'lit-element';\n\nimport { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';\nimport { parseDuration } from '../../../utils/parse-duration';\nimport { css, html } from 'lit-element';\n\n/**\n * Internal control displaying a custom field for frequency input.\n *\n * @since 1.17.0\n * @element foxy-internal-frequency-control\n */\nexport class InternalFrequencyControl extends InternalEditableControl {\n static get styles(): CSSResultArray {\n return [\n super.styles,\n css`\n :host {\n display: block;\n }\n\n vaadin-custom-field {\n width: 100%;\n font-size: 0;\n line-height: 0;\n padding-top: 0 !important;\n }\n\n vaadin-custom-field::part(label) {\n padding-bottom: var(--lumo-space-s);\n }\n\n vaadin-custom-field::part(error-message)[aria-hidden='false'] {\n padding-top: var(--lumo-space-xs);\n }\n\n vaadin-integer-field,\n vaadin-combo-box {\n width: calc(50% - (var(--lumo-space-s) / 2));\n }\n\n vaadin-integer-field {\n margin-right: var(--lumo-space-s);\n padding: 0;\n }\n\n vaadin-combo-box::part(text-field) {\n padding: 0;\n }\n `,\n ];\n }\n\n private __i18n: CustomFieldI18n = {\n formatValue: inputValues => inputValues.join(''),\n parseValue: value => {\n const { count, units } = parseDuration(value);\n return [count.toString(), units];\n },\n };\n\n renderControl(): TemplateResult {\n const value = (this._value ?? '') as string;\n const count = parseDuration(value).count;\n\n return html`\n <vaadin-custom-field\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n .checkValidity=${this._checkValidity}\n .errorMessage=${this._errorMessage ?? ''}\n .helperText=${this.helperText}\n .label=${this.label}\n .value=${value}\n .i18n=${this.__i18n}\n @change=${(evt: CustomEvent) => {\n const field = evt.currentTarget as CustomFieldElement;\n this._value = field.value as string;\n }}\n >\n <vaadin-integer-field\n max=\"999\"\n min=\"1\"\n prevent-invalid-input\n has-controls\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n ?invalid=${!this._checkValidity()}\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.nucleon?.submit()}\n >\n </vaadin-integer-field>\n\n <vaadin-combo-box\n item-value-path=\"value\"\n item-label-path=\"label\"\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n ?invalid=${!this._checkValidity()}\n .items=${[\n { value: 'd', label: this.t('day', { count }) },\n { value: 'w', label: this.t('week', { count }) },\n { value: 'm', label: this.t('month', { count }) },\n { value: 'y', label: this.t('year', { count }) },\n ]}\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.nucleon?.submit()}\n >\n </vaadin-combo-box>\n </vaadin-custom-field>\n `;\n }\n\n updated(changes: Map<keyof this, unknown>): void {\n super.updated(changes);\n const field = this.renderRoot.firstElementChild as CustomFieldElement;\n if (field.value !== this._value) field.value = this._value as string;\n }\n}\n"]}
1
+ {"version":3,"file":"InternalFrequencyControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalFrequencyControl/InternalFrequencyControl.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CSSResultArray, PropertyDeclarations, TemplateResult } from 'lit-element';\nimport type { CustomFieldElement, CustomFieldI18n } from '@vaadin/vaadin-custom-field';\n\nimport { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';\nimport { css, html } from 'lit-element';\n\n/**\n * Internal control displaying a custom field for frequency input.\n *\n * @since 1.17.0\n * @element foxy-internal-frequency-control\n */\nexport class InternalFrequencyControl extends InternalEditableControl {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n options: { attribute: false },\n };\n }\n\n static get styles(): CSSResultArray {\n return [\n super.styles,\n css`\n :host {\n display: block;\n }\n\n vaadin-custom-field {\n width: 100%;\n font-size: 0;\n line-height: 0;\n padding-top: 0 !important;\n }\n\n vaadin-custom-field::part(label) {\n padding-bottom: var(--lumo-space-s);\n }\n\n vaadin-custom-field::part(error-message)[aria-hidden='false'] {\n padding-top: var(--lumo-space-xs);\n }\n\n vaadin-integer-field,\n vaadin-combo-box {\n width: calc(50% - (var(--lumo-space-s) / 2));\n }\n\n vaadin-integer-field {\n margin-right: var(--lumo-space-s);\n padding: 0;\n }\n\n vaadin-combo-box::part(text-field) {\n padding: 0;\n }\n `,\n ];\n }\n\n options = [\n { value: 'd', label: 'day' },\n { value: 'w', label: 'week' },\n { value: 'm', label: 'month' },\n { value: 'y', label: 'year' },\n ];\n\n private __i18n: CustomFieldI18n = {\n formatValue: inputValues => inputValues.join(''),\n parseValue: value => {\n const normalizedValue = value.startsWith('.') ? `0${value}` : value;\n const count = parseFloat(value.substring(0, Math.max(normalizedValue.length - 1, 0)));\n const units = normalizedValue[normalizedValue.length - 1] ?? '';\n\n return isNaN(count) ? ['0', ''] : [count.toString(), units];\n },\n };\n\n renderControl(): TemplateResult {\n const value = (this._value ?? '') as string;\n const count = parseFloat(this.__i18n.parseValue(value)[0] as string);\n const items = this.options.map(({ value, label }) => ({\n label: this.t(label, { count }),\n value,\n }));\n\n return html`\n <vaadin-custom-field\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n .checkValidity=${this._checkValidity}\n .errorMessage=${this._errorMessage ?? ''}\n .helperText=${this.helperText}\n .label=${this.label}\n .value=${value}\n .i18n=${this.__i18n}\n @change=${(evt: CustomEvent) => {\n const field = evt.currentTarget as CustomFieldElement;\n this._value = field.value as string;\n }}\n >\n <vaadin-integer-field\n max=\"999\"\n min=\"1\"\n prevent-invalid-input\n has-controls\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n ?invalid=${!this._checkValidity()}\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.nucleon?.submit()}\n >\n </vaadin-integer-field>\n\n <vaadin-combo-box\n item-value-path=\"value\"\n item-label-path=\"label\"\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n ?invalid=${!this._checkValidity()}\n .items=${items}\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.nucleon?.submit()}\n >\n </vaadin-combo-box>\n </vaadin-custom-field>\n `;\n }\n\n updated(changes: Map<keyof this, unknown>): void {\n super.updated(changes);\n const field = this.renderRoot.querySelector('vaadin-custom-field');\n if (field && field.value !== this._value) field.value = this._value as string;\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import type { TemplateResult } from 'lit-element';
1
+ import type { PropertyDeclarations, TemplateResult } from 'lit-element';
2
2
  import { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';
3
3
  /**
4
4
  * Internal control displaying a basic integer box.
@@ -7,6 +7,9 @@ import { InternalEditableControl } from '../InternalEditableControl/InternalEdit
7
7
  * @element foxy-internal-integer-control
8
8
  */
9
9
  export declare class InternalIntegerControl extends InternalEditableControl {
10
+ static get properties(): PropertyDeclarations;
11
+ min: number | null;
12
+ max: number | null;
10
13
  renderControl(): TemplateResult;
11
14
  protected get _value(): number;
12
15
  protected set _value(newValue: number);
@@ -8,7 +8,20 @@ import { html } from 'lit-element';
8
8
  * @element foxy-internal-integer-control
9
9
  */
10
10
  export class InternalIntegerControl extends InternalEditableControl {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.min = null;
14
+ this.max = null;
15
+ }
16
+ static get properties() {
17
+ return {
18
+ ...super.properties,
19
+ min: { type: Number },
20
+ max: { type: Number },
21
+ };
22
+ }
11
23
  renderControl() {
24
+ var _a, _b;
12
25
  return html `
13
26
  <vaadin-integer-field
14
27
  error-message=${ifDefined(this._errorMessage)}
@@ -16,6 +29,8 @@ export class InternalIntegerControl extends InternalEditableControl {
16
29
  helper-text=${this.helperText}
17
30
  label=${this.label}
18
31
  class="w-full"
32
+ min=${ifDefined((_a = this.min) !== null && _a !== void 0 ? _a : undefined)}
33
+ max=${ifDefined((_b = this.max) !== null && _b !== void 0 ? _b : undefined)}
19
34
  ?disabled=${this.disabled}
20
35
  ?readonly=${this.readonly}
21
36
  .checkValidity=${this._checkValidity}
@@ -1 +1 @@
1
- {"version":3,"file":"InternalIntegerControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalIntegerControl/InternalIntegerControl.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,8DAA2D;AAC7F,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,OAAO,sBAAuB,SAAQ,uBAAuB;IACjE,aAAa;QACX,OAAO,IAAI,CAAA;;wBAES,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC;sBAC/B,IAAI,CAAC,WAAW;sBAChB,IAAI,CAAC,UAAU;gBACrB,IAAI,CAAC,KAAK;;oBAEN,IAAI,CAAC,QAAQ;oBACb,IAAI,CAAC,QAAQ;yBACR,IAAI,CAAC,cAAc;iBAC3B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;;mBAEjB,CAAC,GAAkB,EAAE,EAAE,WAAC,OAAA,GAAG,CAAC,GAAG,KAAK,OAAO,WAAI,IAAI,CAAC,OAAO,0CAAE,MAAM,GAAE,CAAA,EAAA;kBACtE,CAAC,GAAgB,EAAE,EAAE;YAC7B,MAAM,KAAK,GAAG,GAAG,CAAC,aAAoC,CAAC;YACvD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;;;KAGJ,CAAC;IACJ,CAAC;IAED,IAAc,MAAM;;QAClB,aAAQ,KAAK,CAAC,MAA6B,mCAAI,CAAC,CAAC;IACnD,CAAC;IAED,IAAc,MAAM,CAAC,QAAgB;QACnC,KAAK,CAAC,MAAM,GAAG,QAA+B,CAAC;IACjD,CAAC;CACF","sourcesContent":["import type { IntegerFieldElement } from '@vaadin/vaadin-text-field/vaadin-integer-field';\nimport type { TemplateResult } from 'lit-element';\n\nimport { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-element';\n\n/**\n * Internal control displaying a basic integer box.\n *\n * @since 1.17.0\n * @element foxy-internal-integer-control\n */\nexport class InternalIntegerControl extends InternalEditableControl {\n renderControl(): TemplateResult {\n return html`\n <vaadin-integer-field\n error-message=${ifDefined(this._errorMessage)}\n placeholder=${this.placeholder}\n helper-text=${this.helperText}\n label=${this.label}\n class=\"w-full\"\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n .checkValidity=${this._checkValidity}\n .value=${String(this._value)}\n clear-button-visible\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.nucleon?.submit()}\n @change=${(evt: CustomEvent) => {\n const field = evt.currentTarget as IntegerFieldElement;\n this._value = parseInt(field.value);\n }}\n >\n </vaadin-integer-field>\n `;\n }\n\n protected get _value(): number {\n return (super._value as number | undefined) ?? 0;\n }\n\n protected set _value(newValue: number) {\n super._value = newValue as unknown | undefined;\n }\n}\n"]}
1
+ {"version":3,"file":"InternalIntegerControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalIntegerControl/InternalIntegerControl.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,8DAA2D;AAC7F,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,OAAO,sBAAuB,SAAQ,uBAAuB;IAAnE;;QASE,QAAG,GAAkB,IAAI,CAAC;QAE1B,QAAG,GAAkB,IAAI,CAAC;IAkC5B,CAAC;IA5CC,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACrB,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SACtB,CAAC;IACJ,CAAC;IAMD,aAAa;;QACX,OAAO,IAAI,CAAA;;wBAES,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC;sBAC/B,IAAI,CAAC,WAAW;sBAChB,IAAI,CAAC,UAAU;gBACrB,IAAI,CAAC,KAAK;;cAEZ,SAAS,OAAC,IAAI,CAAC,GAAG,mCAAI,SAAS,CAAC;cAChC,SAAS,OAAC,IAAI,CAAC,GAAG,mCAAI,SAAS,CAAC;oBAC1B,IAAI,CAAC,QAAQ;oBACb,IAAI,CAAC,QAAQ;yBACR,IAAI,CAAC,cAAc;iBAC3B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;;mBAEjB,CAAC,GAAkB,EAAE,EAAE,WAAC,OAAA,GAAG,CAAC,GAAG,KAAK,OAAO,WAAI,IAAI,CAAC,OAAO,0CAAE,MAAM,GAAE,CAAA,EAAA;kBACtE,CAAC,GAAgB,EAAE,EAAE;YAC7B,MAAM,KAAK,GAAG,GAAG,CAAC,aAAoC,CAAC;YACvD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;;;KAGJ,CAAC;IACJ,CAAC;IAED,IAAc,MAAM;;QAClB,aAAQ,KAAK,CAAC,MAA6B,mCAAI,CAAC,CAAC;IACnD,CAAC;IAED,IAAc,MAAM,CAAC,QAAgB;QACnC,KAAK,CAAC,MAAM,GAAG,QAA+B,CAAC;IACjD,CAAC;CACF","sourcesContent":["import type { IntegerFieldElement } from '@vaadin/vaadin-text-field/vaadin-integer-field';\nimport type { PropertyDeclarations, TemplateResult } from 'lit-element';\n\nimport { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-element';\n\n/**\n * Internal control displaying a basic integer box.\n *\n * @since 1.17.0\n * @element foxy-internal-integer-control\n */\nexport class InternalIntegerControl extends InternalEditableControl {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n min: { type: Number },\n max: { type: Number },\n };\n }\n\n min: number | null = null;\n\n max: number | null = null;\n\n renderControl(): TemplateResult {\n return html`\n <vaadin-integer-field\n error-message=${ifDefined(this._errorMessage)}\n placeholder=${this.placeholder}\n helper-text=${this.helperText}\n label=${this.label}\n class=\"w-full\"\n min=${ifDefined(this.min ?? undefined)}\n max=${ifDefined(this.max ?? undefined)}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n .checkValidity=${this._checkValidity}\n .value=${String(this._value)}\n clear-button-visible\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.nucleon?.submit()}\n @change=${(evt: CustomEvent) => {\n const field = evt.currentTarget as IntegerFieldElement;\n this._value = parseInt(field.value);\n }}\n >\n </vaadin-integer-field>\n `;\n }\n\n protected get _value(): number {\n return (super._value as number | undefined) ?? 0;\n }\n\n protected set _value(newValue: number) {\n super._value = newValue as unknown | undefined;\n }\n}\n"]}
@@ -0,0 +1,13 @@
1
+ import type { TemplateResult } from 'lit-element';
2
+ import { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';
3
+ /**
4
+ * Internal control displaying a basic password box.
5
+ *
6
+ * @since 1.17.0
7
+ * @element foxy-internal-password-field-control
8
+ */
9
+ export declare class InternalPasswordControl extends InternalEditableControl {
10
+ renderControl(): TemplateResult;
11
+ protected get _value(): string;
12
+ protected set _value(newValue: string);
13
+ }
@@ -0,0 +1,40 @@
1
+ import { InternalEditableControl } from "../InternalEditableControl/InternalEditableControl.js";
2
+ import { ifDefined } from 'lit-html/directives/if-defined';
3
+ import { html } from 'lit-element';
4
+ /**
5
+ * Internal control displaying a basic password box.
6
+ *
7
+ * @since 1.17.0
8
+ * @element foxy-internal-password-field-control
9
+ */
10
+ export class InternalPasswordControl extends InternalEditableControl {
11
+ renderControl() {
12
+ return html `
13
+ <vaadin-password-field
14
+ error-message=${ifDefined(this._errorMessage)}
15
+ helper-text=${this.helperText}
16
+ placeholder=${this.placeholder}
17
+ label=${this.label}
18
+ class="w-full"
19
+ ?disabled=${this.disabled}
20
+ ?readonly=${this.readonly}
21
+ .checkValidity=${this._checkValidity}
22
+ .value=${this._value}
23
+ @keydown=${(evt) => { var _a; return evt.key === 'Enter' && ((_a = this.nucleon) === null || _a === void 0 ? void 0 : _a.submit()); }}
24
+ @input=${(evt) => {
25
+ const area = evt.currentTarget;
26
+ this._value = area.value;
27
+ }}
28
+ >
29
+ </vaadin-password-field>
30
+ `;
31
+ }
32
+ get _value() {
33
+ var _a;
34
+ return (_a = super._value) !== null && _a !== void 0 ? _a : '';
35
+ }
36
+ set _value(newValue) {
37
+ super._value = newValue;
38
+ }
39
+ }
40
+ //# sourceMappingURL=InternalPasswordControl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InternalPasswordControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalPasswordControl/InternalPasswordControl.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,8DAA2D;AAC7F,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,OAAO,uBAAwB,SAAQ,uBAAuB;IAClE,aAAa;QACX,OAAO,IAAI,CAAA;;wBAES,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC;sBAC/B,IAAI,CAAC,UAAU;sBACf,IAAI,CAAC,WAAW;gBACtB,IAAI,CAAC,KAAK;;oBAEN,IAAI,CAAC,QAAQ;oBACb,IAAI,CAAC,QAAQ;yBACR,IAAI,CAAC,cAAc;iBAC3B,IAAI,CAAC,MAAM;mBACT,CAAC,GAAkB,EAAE,EAAE,WAAC,OAAA,GAAG,CAAC,GAAG,KAAK,OAAO,WAAI,IAAI,CAAC,OAAO,0CAAE,MAAM,GAAE,CAAA,EAAA;iBACvE,CAAC,GAAgB,EAAE,EAAE;YAC5B,MAAM,IAAI,GAAG,GAAG,CAAC,aAAqC,CAAC;YACvD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3B,CAAC;;;KAGJ,CAAC;IACJ,CAAC;IAED,IAAc,MAAM;;QAClB,aAAQ,KAAK,CAAC,MAA6B,mCAAI,EAAE,CAAC;IACpD,CAAC;IAED,IAAc,MAAM,CAAC,QAAgB;QACnC,KAAK,CAAC,MAAM,GAAG,QAA+B,CAAC;IACjD,CAAC;CACF","sourcesContent":["import type { PasswordFieldElement } from '@vaadin/vaadin-text-field/vaadin-password-field';\nimport type { TemplateResult } from 'lit-element';\n\nimport { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-element';\n\n/**\n * Internal control displaying a basic password box.\n *\n * @since 1.17.0\n * @element foxy-internal-password-field-control\n */\nexport class InternalPasswordControl extends InternalEditableControl {\n renderControl(): TemplateResult {\n return html`\n <vaadin-password-field\n error-message=${ifDefined(this._errorMessage)}\n helper-text=${this.helperText}\n placeholder=${this.placeholder}\n label=${this.label}\n class=\"w-full\"\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n .checkValidity=${this._checkValidity}\n .value=${this._value}\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.nucleon?.submit()}\n @input=${(evt: CustomEvent) => {\n const area = evt.currentTarget as PasswordFieldElement;\n this._value = area.value;\n }}\n >\n </vaadin-password-field>\n `;\n }\n\n protected get _value(): string {\n return (super._value as string | undefined) ?? '';\n }\n\n protected set _value(newValue: string) {\n super._value = newValue as unknown | undefined;\n }\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import '@vaadin/vaadin-text-field/vaadin-password-field';
2
+ import '../InternalEditableControl/index';
3
+ import { InternalPasswordControl as Control } from './InternalPasswordControl';
4
+ export { Control as InternalPasswordControl };
@@ -0,0 +1,6 @@
1
+ import '@vaadin/vaadin-text-field/vaadin-password-field';
2
+ import "../InternalEditableControl/index.js";
3
+ import { InternalPasswordControl as Control } from "./InternalPasswordControl.js";
4
+ customElements.define('foxy-internal-password-control', Control);
5
+ export { Control as InternalPasswordControl };
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalPasswordControl/index.ts"],"names":[],"mappings":"AAAA,OAAO,iDAAiD,CAAC;AACzD,6CAA0C;AAC1C,OAAO,EAAE,uBAAuB,IAAI,OAAO,EAAE,qCAAkC;AAE/E,cAAc,CAAC,MAAM,CAAC,gCAAgC,EAAE,OAAO,CAAC,CAAC;AAEjE,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,CAAC","sourcesContent":["import '@vaadin/vaadin-text-field/vaadin-password-field';\nimport '../InternalEditableControl/index';\nimport { InternalPasswordControl as Control } from './InternalPasswordControl';\n\ncustomElements.define('foxy-internal-password-control', Control);\n\nexport { Control as InternalPasswordControl };\n"]}
@@ -13,5 +13,7 @@ export declare class InternalSelectControl extends InternalEditableControl {
13
13
  options: Option[];
14
14
  /** Same as the "theme" attribute/property of `vaadin-select`. */
15
15
  theme: string | null;
16
+ private __renderer;
16
17
  renderControl(): TemplateResult;
18
+ updated(changes: Map<keyof this, unknown>): void;
17
19
  }
@@ -14,6 +14,18 @@ export class InternalSelectControl extends InternalEditableControl {
14
14
  this.options = [];
15
15
  /** Same as the "theme" attribute/property of `vaadin-select`. */
16
16
  this.theme = null;
17
+ this.__renderer = root => {
18
+ const items = this.options.map(({ label, value }) => {
19
+ return html `
20
+ <vaadin-item value=${value}>
21
+ <foxy-i18n lang=${this.lang} key=${label} ns=${this.ns}></foxy-i18n>
22
+ </vaadin-item>
23
+ `;
24
+ });
25
+ if (!root.firstElementChild)
26
+ root.appendChild(document.createElement('vaadin-list-box'));
27
+ render(items, root.firstElementChild);
28
+ };
17
29
  }
18
30
  static get properties() {
19
31
  return {
@@ -24,14 +36,6 @@ export class InternalSelectControl extends InternalEditableControl {
24
36
  }
25
37
  renderControl() {
26
38
  var _a;
27
- const renderer = (root) => {
28
- const items = this.options.map(({ label, value }) => {
29
- return html `<vaadin-item value=${value}>${this.t(label)}</vaadin-item>`;
30
- });
31
- if (!root.firstElementChild)
32
- root.appendChild(document.createElement('vaadin-list-box'));
33
- render(items, root.firstElementChild);
34
- };
35
39
  return html `
36
40
  <vaadin-select
37
41
  error-message=${ifDefined(this._errorMessage)}
@@ -43,7 +47,7 @@ export class InternalSelectControl extends InternalEditableControl {
43
47
  ?disabled=${this.disabled}
44
48
  ?readonly=${this.readonly}
45
49
  .checkValidity=${this._checkValidity}
46
- .renderer=${renderer}
50
+ .renderer=${this.__renderer}
47
51
  .value=${this._value}
48
52
  @change=${(evt) => {
49
53
  const field = evt.currentTarget;
@@ -53,5 +57,12 @@ export class InternalSelectControl extends InternalEditableControl {
53
57
  </vaadin-select>
54
58
  `;
55
59
  }
60
+ updated(changes) {
61
+ var _a;
62
+ super.updated(changes);
63
+ if (changes.has('ns') || changes.has('lang') || changes.has('options')) {
64
+ (_a = this.renderRoot.querySelector('vaadin-select')) === null || _a === void 0 ? void 0 : _a.render();
65
+ }
66
+ }
56
67
  }
57
68
  //# sourceMappingURL=InternalSelectControl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InternalSelectControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalSelectControl/InternalSelectControl.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,uBAAuB,EAAE,8DAA2D;AAC7F,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,OAAO,qBAAsB,SAAQ,uBAAuB;IAAlE;;QASE,uCAAuC;QACvC,YAAO,GAAa,EAAE,CAAC;QAEvB,iEAAiE;QACjE,UAAK,GAAkB,IAAI,CAAC;IAiC9B,CAAC;IA7CC,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;YACxB,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SACxB,CAAC;IACJ,CAAC;IAQD,aAAa;;QACX,MAAM,QAAQ,GAAG,CAAC,IAAa,EAAE,EAAE;YACjC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;gBAClD,OAAO,IAAI,CAAA,sBAAsB,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;YAC1E,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,iBAAiB;gBAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACzF,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,iBAA4B,CAAC,CAAC;QACnD,CAAC,CAAC;QAEF,OAAO,IAAI,CAAA;;wBAES,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC;sBAC/B,IAAI,CAAC,WAAW;sBAChB,IAAI,CAAC,UAAU;;gBAErB,IAAI,CAAC,KAAK;gBACV,SAAS,OAAC,IAAI,CAAC,KAAK,mCAAI,SAAS,CAAC;oBAC9B,IAAI,CAAC,QAAQ;oBACb,IAAI,CAAC,QAAQ;yBACR,IAAI,CAAC,cAAc;oBACxB,QAAQ;iBACX,IAAI,CAAC,MAAgB;kBACpB,CAAC,GAAgB,EAAE,EAAE;YAC7B,MAAM,KAAK,GAAG,GAAG,CAAC,aAA8B,CAAC;YACjD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;QAC5B,CAAC;;;KAGJ,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { PropertyDeclarations, TemplateResult } from 'lit-element';\nimport type { SelectElement } from '@vaadin/vaadin-select';\nimport type { Option } from './types';\n\nimport { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';\nimport { html, render } from 'lit-html';\nimport { ifDefined } from 'lit-html/directives/if-defined';\n\n/**\n * Internal control wrapper for `vaadin-select` element.\n *\n * @since 1.19.0\n * @element foxy-internal-select-control\n */\nexport class InternalSelectControl extends InternalEditableControl {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n options: { type: Array },\n theme: { type: String },\n };\n }\n\n /** List of radio buttons to render. */\n options: Option[] = [];\n\n /** Same as the \"theme\" attribute/property of `vaadin-select`. */\n theme: string | null = null;\n\n renderControl(): TemplateResult {\n const renderer = (root: Element) => {\n const items = this.options.map(({ label, value }) => {\n return html`<vaadin-item value=${value}>${this.t(label)}</vaadin-item>`;\n });\n\n if (!root.firstElementChild) root.appendChild(document.createElement('vaadin-list-box'));\n render(items, root.firstElementChild as Element);\n };\n\n return html`\n <vaadin-select\n error-message=${ifDefined(this._errorMessage)}\n placeholder=${this.placeholder}\n helper-text=${this.helperText}\n class=\"w-full -mt-m -mb-xs\"\n label=${this.label}\n theme=${ifDefined(this.theme ?? undefined)}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n .checkValidity=${this._checkValidity}\n .renderer=${renderer}\n .value=${this._value as string}\n @change=${(evt: CustomEvent) => {\n const field = evt.currentTarget as SelectElement;\n this._value = field.value;\n }}\n >\n </vaadin-select>\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"InternalSelectControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalSelectControl/InternalSelectControl.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,uBAAuB,EAAE,8DAA2D;AAC7F,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,OAAO,qBAAsB,SAAQ,uBAAuB;IAAlE;;QASE,uCAAuC;QACvC,YAAO,GAAa,EAAE,CAAC;QAEvB,iEAAiE;QACjE,UAAK,GAAkB,IAAI,CAAC;QAEpB,eAAU,GAAmB,IAAI,CAAC,EAAE;YAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;gBAClD,OAAO,IAAI,CAAA;6BACY,KAAK;4BACN,IAAI,CAAC,IAAI,QAAQ,KAAK,OAAO,IAAI,CAAC,EAAE;;OAEzD,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,iBAAiB;gBAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACzF,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,iBAA4B,CAAC,CAAC;QACnD,CAAC,CAAC;IAgCJ,CAAC;IAzDC,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;YACxB,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SACxB,CAAC;IACJ,CAAC;IAqBD,aAAa;;QACX,OAAO,IAAI,CAAA;;wBAES,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC;sBAC/B,IAAI,CAAC,WAAW;sBAChB,IAAI,CAAC,UAAU;;gBAErB,IAAI,CAAC,KAAK;gBACV,SAAS,OAAC,IAAI,CAAC,KAAK,mCAAI,SAAS,CAAC;oBAC9B,IAAI,CAAC,QAAQ;oBACb,IAAI,CAAC,QAAQ;yBACR,IAAI,CAAC,cAAc;oBACxB,IAAI,CAAC,UAAU;iBAClB,IAAI,CAAC,MAAgB;kBACpB,CAAC,GAAgB,EAAE,EAAE;YAC7B,MAAM,KAAK,GAAG,GAAG,CAAC,aAA8B,CAAC;YACjD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;QAC5B,CAAC;;;KAGJ,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,OAAiC;;QACvC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAEvB,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YACtE,MAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAgB,eAAe,CAAC,0CAAE,MAAM,GAAG;SACzE;IACH,CAAC;CACF","sourcesContent":["import type { PropertyDeclarations, TemplateResult } from 'lit-element';\nimport type { SelectElement, SelectRenderer } from '@vaadin/vaadin-select';\nimport type { Option } from './types';\n\nimport { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';\nimport { html, render } from 'lit-html';\nimport { ifDefined } from 'lit-html/directives/if-defined';\n\n/**\n * Internal control wrapper for `vaadin-select` element.\n *\n * @since 1.19.0\n * @element foxy-internal-select-control\n */\nexport class InternalSelectControl extends InternalEditableControl {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n options: { type: Array },\n theme: { type: String },\n };\n }\n\n /** List of radio buttons to render. */\n options: Option[] = [];\n\n /** Same as the \"theme\" attribute/property of `vaadin-select`. */\n theme: string | null = null;\n\n private __renderer: SelectRenderer = root => {\n const items = this.options.map(({ label, value }) => {\n return html`\n <vaadin-item value=${value}>\n <foxy-i18n lang=${this.lang} key=${label} ns=${this.ns}></foxy-i18n>\n </vaadin-item>\n `;\n });\n\n if (!root.firstElementChild) root.appendChild(document.createElement('vaadin-list-box'));\n render(items, root.firstElementChild as Element);\n };\n\n renderControl(): TemplateResult {\n return html`\n <vaadin-select\n error-message=${ifDefined(this._errorMessage)}\n placeholder=${this.placeholder}\n helper-text=${this.helperText}\n class=\"w-full -mt-m -mb-xs\"\n label=${this.label}\n theme=${ifDefined(this.theme ?? undefined)}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n .checkValidity=${this._checkValidity}\n .renderer=${this.__renderer}\n .value=${this._value as string}\n @change=${(evt: CustomEvent) => {\n const field = evt.currentTarget as SelectElement;\n this._value = field.value;\n }}\n >\n </vaadin-select>\n `;\n }\n\n updated(changes: Map<keyof this, unknown>): void {\n super.updated(changes);\n\n if (changes.has('ns') || changes.has('lang') || changes.has('options')) {\n this.renderRoot.querySelector<SelectElement>('vaadin-select')?.render();\n }\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import type { TemplateResult } from 'lit-element';
1
+ import type { PropertyDeclarations, TemplateResult } from 'lit-element';
2
2
  import { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';
3
3
  /**
4
4
  * Internal control displaying a basic text box.
@@ -7,6 +7,9 @@ import { InternalEditableControl } from '../InternalEditableControl/InternalEdit
7
7
  * @element foxy-internal-text-control
8
8
  */
9
9
  export declare class InternalTextControl extends InternalEditableControl {
10
+ static get properties(): PropertyDeclarations;
11
+ prefix: string | null;
12
+ suffix: string | null;
10
13
  renderControl(): TemplateResult;
11
14
  protected get _value(): string;
12
15
  protected set _value(newValue: string);
@@ -8,6 +8,18 @@ import { html } from 'lit-element';
8
8
  * @element foxy-internal-text-control
9
9
  */
10
10
  export class InternalTextControl extends InternalEditableControl {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.prefix = null;
14
+ this.suffix = null;
15
+ }
16
+ static get properties() {
17
+ return {
18
+ ...super.properties,
19
+ prefix: {},
20
+ suffix: {},
21
+ };
22
+ }
11
23
  renderControl() {
12
24
  return html `
13
25
  <vaadin-text-field
@@ -16,9 +28,9 @@ export class InternalTextControl extends InternalEditableControl {
16
28
  placeholder=${this.placeholder}
17
29
  label=${this.label}
18
30
  class="w-full"
31
+ ?clear-button-visible=${!this.suffix}
19
32
  ?disabled=${this.disabled}
20
33
  ?readonly=${this.readonly}
21
- clear-button-visible
22
34
  .checkValidity=${this._checkValidity}
23
35
  .value=${this._value}
24
36
  @keydown=${(evt) => { var _a; return evt.key === 'Enter' && ((_a = this.nucleon) === null || _a === void 0 ? void 0 : _a.submit()); }}
@@ -27,6 +39,8 @@ export class InternalTextControl extends InternalEditableControl {
27
39
  this._value = field.value;
28
40
  }}
29
41
  >
42
+ ${this.prefix ? html `<div slot="prefix">${this.prefix}</div>` : ''}
43
+ ${this.suffix ? html `<div class="pr-s font-medium" slot="suffix">${this.suffix}</div>` : ''}
30
44
  </vaadin-text-field>
31
45
  `;
32
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"InternalTextControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalTextControl/InternalTextControl.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,8DAA2D;AAC7F,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,OAAO,mBAAoB,SAAQ,uBAAuB;IAC9D,aAAa;QACX,OAAO,IAAI,CAAA;;wBAES,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC;sBAC/B,IAAI,CAAC,UAAU;sBACf,IAAI,CAAC,WAAW;gBACtB,IAAI,CAAC,KAAK;;oBAEN,IAAI,CAAC,QAAQ;oBACb,IAAI,CAAC,QAAQ;;yBAER,IAAI,CAAC,cAAc;iBAC3B,IAAI,CAAC,MAAM;mBACT,CAAC,GAAkB,EAAE,EAAE,WAAC,OAAA,GAAG,CAAC,GAAG,KAAK,OAAO,WAAI,IAAI,CAAC,OAAO,0CAAE,MAAM,GAAE,CAAA,EAAA;iBACvE,CAAC,GAAgB,EAAE,EAAE;YAC5B,MAAM,KAAK,GAAG,GAAG,CAAC,aAAiC,CAAC;YACpD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;QAC5B,CAAC;;;KAGJ,CAAC;IACJ,CAAC;IAED,IAAc,MAAM;;QAClB,aAAQ,KAAK,CAAC,MAA6B,mCAAI,EAAE,CAAC;IACpD,CAAC;IAED,IAAc,MAAM,CAAC,QAAgB;QACnC,KAAK,CAAC,MAAM,GAAG,QAA+B,CAAC;IACjD,CAAC;CACF","sourcesContent":["import type { TextFieldElement } from '@vaadin/vaadin-text-field';\nimport type { TemplateResult } from 'lit-element';\n\nimport { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-element';\n\n/**\n * Internal control displaying a basic text box.\n *\n * @since 1.17.0\n * @element foxy-internal-text-control\n */\nexport class InternalTextControl extends InternalEditableControl {\n renderControl(): TemplateResult {\n return html`\n <vaadin-text-field\n error-message=${ifDefined(this._errorMessage)}\n helper-text=${this.helperText}\n placeholder=${this.placeholder}\n label=${this.label}\n class=\"w-full\"\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n clear-button-visible\n .checkValidity=${this._checkValidity}\n .value=${this._value}\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.nucleon?.submit()}\n @input=${(evt: CustomEvent) => {\n const field = evt.currentTarget as TextFieldElement;\n this._value = field.value;\n }}\n >\n </vaadin-text-field>\n `;\n }\n\n protected get _value(): string {\n return (super._value as string | undefined) ?? '';\n }\n\n protected set _value(newValue: string) {\n super._value = newValue as unknown | undefined;\n }\n}\n"]}
1
+ {"version":3,"file":"InternalTextControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalTextControl/InternalTextControl.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,8DAA2D;AAC7F,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,OAAO,mBAAoB,SAAQ,uBAAuB;IAAhE;;QASE,WAAM,GAAkB,IAAI,CAAC;QAE7B,WAAM,GAAkB,IAAI,CAAC;IAkC/B,CAAC;IA5CC,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE;SACX,CAAC;IACJ,CAAC;IAMD,aAAa;QACX,OAAO,IAAI,CAAA;;wBAES,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC;sBAC/B,IAAI,CAAC,UAAU;sBACf,IAAI,CAAC,WAAW;gBACtB,IAAI,CAAC,KAAK;;gCAEM,CAAC,IAAI,CAAC,MAAM;oBACxB,IAAI,CAAC,QAAQ;oBACb,IAAI,CAAC,QAAQ;yBACR,IAAI,CAAC,cAAc;iBAC3B,IAAI,CAAC,MAAM;mBACT,CAAC,GAAkB,EAAE,EAAE,WAAC,OAAA,GAAG,CAAC,GAAG,KAAK,OAAO,WAAI,IAAI,CAAC,OAAO,0CAAE,MAAM,GAAE,CAAA,EAAA;iBACvE,CAAC,GAAgB,EAAE,EAAE;YAC5B,MAAM,KAAK,GAAG,GAAG,CAAC,aAAiC,CAAC;YACpD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;QAC5B,CAAC;;UAEC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAA,sBAAsB,IAAI,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC,EAAE;UAChE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAA,+CAA+C,IAAI,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC,EAAE;;KAE9F,CAAC;IACJ,CAAC;IAED,IAAc,MAAM;;QAClB,aAAQ,KAAK,CAAC,MAA6B,mCAAI,EAAE,CAAC;IACpD,CAAC;IAED,IAAc,MAAM,CAAC,QAAgB;QACnC,KAAK,CAAC,MAAM,GAAG,QAA+B,CAAC;IACjD,CAAC;CACF","sourcesContent":["import type { PropertyDeclarations, TemplateResult } from 'lit-element';\nimport type { TextFieldElement } from '@vaadin/vaadin-text-field';\n\nimport { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-element';\n\n/**\n * Internal control displaying a basic text box.\n *\n * @since 1.17.0\n * @element foxy-internal-text-control\n */\nexport class InternalTextControl extends InternalEditableControl {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n prefix: {},\n suffix: {},\n };\n }\n\n prefix: string | null = null;\n\n suffix: string | null = null;\n\n renderControl(): TemplateResult {\n return html`\n <vaadin-text-field\n error-message=${ifDefined(this._errorMessage)}\n helper-text=${this.helperText}\n placeholder=${this.placeholder}\n label=${this.label}\n class=\"w-full\"\n ?clear-button-visible=${!this.suffix}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n .checkValidity=${this._checkValidity}\n .value=${this._value}\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.nucleon?.submit()}\n @input=${(evt: CustomEvent) => {\n const field = evt.currentTarget as TextFieldElement;\n this._value = field.value;\n }}\n >\n ${this.prefix ? html`<div slot=\"prefix\">${this.prefix}</div>` : ''}\n ${this.suffix ? html`<div class=\"pr-s font-medium\" slot=\"suffix\">${this.suffix}</div>` : ''}\n </vaadin-text-field>\n `;\n }\n\n protected get _value(): string {\n return (super._value as string | undefined) ?? '';\n }\n\n protected set _value(newValue: string) {\n super._value = newValue as unknown | undefined;\n }\n}\n"]}
@@ -5,18 +5,18 @@ const NS = 'email-template-card';
5
5
  const Base = TranslatableMixin(InternalCard, NS);
6
6
  export class EmailTemplateCard extends Base {
7
7
  renderBody() {
8
- var _a, _b, _c, _d;
9
- // TODO remove the directive below once SDK has the types
10
- // @ts-expect-error definition for template_language is missing in SDK types
11
- const language = (_b = (_a = this.data) === null || _a === void 0 ? void 0 : _a.template_language) !== null && _b !== void 0 ? _b : 'nunjucks';
12
- const languageToExtension = { nunjucks: '.njk', handlebars: '.hbs' };
13
- const extension = (_c = languageToExtension[language]) !== null && _c !== void 0 ? _c : `.${language}`;
8
+ const data = this.data;
9
+ const type = (data === null || data === void 0 ? void 0 : data.content_html_url) && data.content_html_url
10
+ ? 'type_custom_url'
11
+ : (data === null || data === void 0 ? void 0 : data.content_html) && data.content_text
12
+ ? 'type_custom_text'
13
+ : (data === null || data === void 0 ? void 0 : data.content_html) || (data === null || data === void 0 ? void 0 : data.content_html_url) || (data === null || data === void 0 ? void 0 : data.content_text) || (data === null || data === void 0 ? void 0 : data.content_text_url)
14
+ ? 'type_mixed'
15
+ : 'type_default';
14
16
  return html `
15
- <div class="flex items-center justify-between">
16
- <div class="font-semibold">${(_d = this.data) === null || _d === void 0 ? void 0 : _d.description}&ZeroWidthSpace;</div>
17
- <div class="rounded-t-l rounded-b-l px-s py-xs bg-contrast-5">
18
- <span class="uppercase text-xs font-bold tracking-wide">${extension}</span>
19
- </div>
17
+ <div class="flex justify-between gap-s">
18
+ <foxy-i18n class="font-semibold truncate flex-shrink-0" infer="" key="title"></foxy-i18n>
19
+ <foxy-i18n class="truncate text-tertiary" infer="" key=${type}></foxy-i18n>
20
20
  </div>
21
21
  `;
22
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EmailTemplateCard.js","sourceRoot":"","sources":["../../../../src/elements/public/EmailTemplateCard/EmailTemplateCard.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,YAAY,EAAE,oDAAiD;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,MAAM,EAAE,GAAG,qBAAqB,CAAC;AACjC,MAAM,IAAI,GAAG,iBAAiB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAEjD,MAAM,OAAO,iBAAkB,SAAQ,IAAU;IAC/C,UAAU;;QACR,yDAAyD;QACzD,4EAA4E;QAC5E,MAAM,QAAQ,eAAG,IAAI,CAAC,IAAI,0CAAE,iBAAiB,mCAAI,UAAU,CAAC;QAC5D,MAAM,mBAAmB,GAA2B,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;QAC7F,MAAM,SAAS,SAAG,mBAAmB,CAAC,QAAQ,CAAC,mCAAI,IAAI,QAAQ,EAAE,CAAC;QAElE,OAAO,IAAI,CAAA;;qCAEsB,MAAA,IAAI,CAAC,IAAI,0CAAE,WAAW;;oEAES,SAAS;;;KAGxE,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { TemplateResult } from 'lit-html';\nimport type { Data } from './types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { InternalCard } from '../../internal/InternalCard/InternalCard';\nimport { html } from 'lit-html';\n\nconst NS = 'email-template-card';\nconst Base = TranslatableMixin(InternalCard, NS);\n\nexport class EmailTemplateCard extends Base<Data> {\n renderBody(): TemplateResult {\n // TODO remove the directive below once SDK has the types\n // @ts-expect-error definition for template_language is missing in SDK types\n const language = this.data?.template_language ?? 'nunjucks';\n const languageToExtension: Record<string, string> = { nunjucks: '.njk', handlebars: '.hbs' };\n const extension = languageToExtension[language] ?? `.${language}`;\n\n return html`\n <div class=\"flex items-center justify-between\">\n <div class=\"font-semibold\">${this.data?.description}&ZeroWidthSpace;</div>\n <div class=\"rounded-t-l rounded-b-l px-s py-xs bg-contrast-5\">\n <span class=\"uppercase text-xs font-bold tracking-wide\">${extension}</span>\n </div>\n </div>\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"EmailTemplateCard.js","sourceRoot":"","sources":["../../../../src/elements/public/EmailTemplateCard/EmailTemplateCard.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,YAAY,EAAE,oDAAiD;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,MAAM,EAAE,GAAG,qBAAqB,CAAC;AACjC,MAAM,IAAI,GAAG,iBAAiB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAEjD,MAAM,OAAO,iBAAkB,SAAQ,IAAU;IAC/C,UAAU;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,IAAI,GACR,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,gBAAgB,KAAI,IAAI,CAAC,gBAAgB;YAC7C,CAAC,CAAC,iBAAiB;YACnB,CAAC,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAAY,KAAI,IAAI,CAAC,YAAY;gBACzC,CAAC,CAAC,kBAAkB;gBACpB,CAAC,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAAY,MAClB,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,gBAAgB,CAAA,KACtB,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAAY,CAAA,KAClB,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,gBAAgB,CAAA;oBACxB,CAAC,CAAC,YAAY;oBACd,CAAC,CAAC,cAAc,CAAC;QAErB,OAAO,IAAI,CAAA;;;iEAGkD,IAAI;;KAEhE,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { TemplateResult } from 'lit-html';\nimport type { Data } from './types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { InternalCard } from '../../internal/InternalCard/InternalCard';\nimport { html } from 'lit-html';\n\nconst NS = 'email-template-card';\nconst Base = TranslatableMixin(InternalCard, NS);\n\nexport class EmailTemplateCard extends Base<Data> {\n renderBody(): TemplateResult {\n const data = this.data;\n const type =\n data?.content_html_url && data.content_html_url\n ? 'type_custom_url'\n : data?.content_html && data.content_text\n ? 'type_custom_text'\n : data?.content_html ||\n data?.content_html_url ||\n data?.content_text ||\n data?.content_text_url\n ? 'type_mixed'\n : 'type_default';\n\n return html`\n <div class=\"flex justify-between gap-s\">\n <foxy-i18n class=\"font-semibold truncate flex-shrink-0\" infer=\"\" key=\"title\"></foxy-i18n>\n <foxy-i18n class=\"truncate text-tertiary\" infer=\"\" key=${type}></foxy-i18n>\n </div>\n `;\n }\n}\n"]}
@@ -3,7 +3,7 @@ import { Nucleon, Rumour } from '@foxy.io/sdk/core';
3
3
  import { assign, interpret } from 'xstate';
4
4
  import { API } from "./API.js";
5
5
  import { FetchEvent } from "./FetchEvent.js";
6
- import { UpdateEvent } from "./UpdateEvent.js";
6
+ import { UpdateEvent, UpdateResult } from "./UpdateEvent.js";
7
7
  import memoize from 'lodash-es/memoize';
8
8
  import { serveFromCache } from "./serveFromCache.js";
9
9
  import { InferrableMixin } from "../../../mixins/inferrable.js";
@@ -304,10 +304,20 @@ export class NucleonElement extends InferrableMixin(LitElement) {
304
304
  }
305
305
  __createService() {
306
306
  this.__service.onTransition(state => {
307
+ var _a, _b;
307
308
  if (!state.changed)
308
309
  return;
310
+ let result = undefined;
311
+ if (state.matches('idle')) {
312
+ if ((_a = state.history) === null || _a === void 0 ? void 0 : _a.matches({ busy: 'deleting' })) {
313
+ result = UpdateResult.ResourceDeleted;
314
+ }
315
+ else if ((_b = state.history) === null || _b === void 0 ? void 0 : _b.matches({ busy: 'creating' })) {
316
+ result = UpdateResult.ResourceCreated;
317
+ }
318
+ }
309
319
  this.requestUpdate();
310
- this.dispatchEvent(new UpdateEvent());
320
+ this.dispatchEvent(new UpdateEvent('update', { detail: { result } }));
311
321
  if (!state.matches('busy'))
312
322
  this.__processFetchEventQueue();
313
323
  });
@@ -383,7 +393,7 @@ export class NucleonElement extends InferrableMixin(LitElement) {
383
393
  return;
384
394
  event.preventDefault();
385
395
  this.__fetchEventQueue.push(event);
386
- if (!this.in('busy'))
396
+ if (!this.__service.state.matches('busy'))
387
397
  this.__processFetchEventQueue();
388
398
  }
389
399
  }