@foxy.io/elements 1.15.0-beta.8 → 1.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/dist/cdn/foxy-access-recovery-form.js +1 -1
  2. package/dist/cdn/foxy-address-card.js +1 -1
  3. package/dist/cdn/foxy-address-form.js +1 -1
  4. package/dist/cdn/foxy-applied-tax-card.js +1 -1
  5. package/dist/cdn/foxy-attribute-card.js +1 -1
  6. package/dist/cdn/foxy-attribute-form.js +1 -1
  7. package/dist/cdn/foxy-cancellation-form.js +1 -1
  8. package/dist/cdn/foxy-collection-page.js +1 -1
  9. package/dist/cdn/foxy-collection-pages.js +1 -1
  10. package/dist/cdn/foxy-coupon-card.js +1 -1
  11. package/dist/cdn/foxy-coupon-code-form.js +1 -1
  12. package/dist/cdn/foxy-coupon-codes-form.js +1 -1
  13. package/dist/cdn/foxy-coupon-form.js +1 -1
  14. package/dist/cdn/foxy-custom-field-card.js +1 -1
  15. package/dist/cdn/foxy-custom-field-form.js +1 -1
  16. package/dist/cdn/foxy-customer-card.js +1 -1
  17. package/dist/cdn/foxy-customer-form.js +1 -1
  18. package/dist/cdn/foxy-customer-portal-settings.js +1 -1
  19. package/dist/cdn/foxy-customer-portal.js +13 -13
  20. package/dist/cdn/foxy-customer.js +2 -2
  21. package/dist/cdn/foxy-customers-table.js +1 -1
  22. package/dist/cdn/foxy-discount-card.js +1 -1
  23. package/dist/cdn/foxy-donation.js +1 -1
  24. package/dist/cdn/foxy-email-template-form.js +1 -1
  25. package/dist/cdn/foxy-error-entry-card.js +1 -1
  26. package/dist/cdn/foxy-form-dialog.js +1 -1
  27. package/dist/cdn/foxy-generate-codes-form.js +1 -1
  28. package/dist/cdn/foxy-gift-card-card.js +1 -1
  29. package/dist/cdn/foxy-gift-card-code-form.js +1 -1
  30. package/dist/cdn/foxy-gift-card-codes-form.js +1 -1
  31. package/dist/cdn/foxy-gift-card-form.js +1 -1
  32. package/dist/cdn/foxy-i18n.js +1 -1
  33. package/dist/cdn/foxy-items-form.js +1 -1
  34. package/dist/cdn/foxy-pagination.js +1 -1
  35. package/dist/cdn/foxy-payment-card.js +1 -1
  36. package/dist/cdn/foxy-payment-method-card.js +1 -1
  37. package/dist/cdn/foxy-query-builder.js +1 -1
  38. package/dist/cdn/foxy-sign-in-form.js +1 -1
  39. package/dist/cdn/foxy-spinner.js +1 -1
  40. package/dist/cdn/foxy-subscription-card.js +1 -1
  41. package/dist/cdn/foxy-subscription-form.js +3 -3
  42. package/dist/cdn/foxy-subscriptions-table.js +1 -1
  43. package/dist/cdn/foxy-table.js +1 -1
  44. package/dist/cdn/foxy-tax-card.js +1 -1
  45. package/dist/cdn/foxy-tax-form.js +1 -1
  46. package/dist/cdn/foxy-template-config-form.js +1 -1
  47. package/dist/cdn/foxy-template-form.js +1 -1
  48. package/dist/cdn/foxy-transaction-card.js +1 -1
  49. package/dist/cdn/foxy-transactions-table.js +1 -1
  50. package/dist/cdn/foxy-user-form.js +1 -1
  51. package/dist/cdn/foxy-users-table.js +1 -1
  52. package/dist/cdn/{shared-c5de42f7.js → shared-00d6a968.js} +1 -1
  53. package/dist/cdn/{shared-223508ae.js → shared-023a97c2.js} +7 -7
  54. package/dist/cdn/{shared-02945b27.js → shared-027c537d.js} +1 -1
  55. package/dist/cdn/{shared-4dc6d228.js → shared-09c5f9f1.js} +1 -1
  56. package/dist/cdn/{shared-e2c878c7.js → shared-340f7584.js} +1 -1
  57. package/dist/cdn/{shared-66633ff7.js → shared-3f0a9c2c.js} +1 -1
  58. package/dist/cdn/{shared-09069d7c.js → shared-3f965dce.js} +1 -1
  59. package/dist/cdn/{shared-b5754a42.js → shared-5e2fd1c7.js} +1 -1
  60. package/dist/cdn/{shared-dcc9c325.js → shared-60d43523.js} +1 -1
  61. package/dist/cdn/{shared-08c63028.js → shared-625c1272.js} +1 -1
  62. package/dist/cdn/shared-84d2d490.js +1 -0
  63. package/dist/cdn/{shared-a7b6feb2.js → shared-8c8a910c.js} +1 -1
  64. package/dist/cdn/{shared-b9f18aaa.js → shared-9cd49a3e.js} +4 -4
  65. package/dist/cdn/{shared-20b9ce70.js → shared-9fc4a896.js} +5 -5
  66. package/dist/cdn/{shared-e209cb55.js → shared-ab71552b.js} +1 -1
  67. package/dist/cdn/{shared-e68b9c83.js → shared-ae8cd227.js} +1 -1
  68. package/dist/cdn/{shared-07049bfe.js → shared-ba39823e.js} +1 -1
  69. package/dist/cdn/{shared-1934524e.js → shared-d58c947c.js} +1 -1
  70. package/dist/cdn/{shared-a23cf7c8.js → shared-e55088b4.js} +1 -1
  71. package/dist/cdn/{shared-253e59d2.js → shared-ecfd3539.js} +1 -1
  72. package/dist/cdn/shared-f2a69797.js +1 -0
  73. package/dist/cdn/translations/access-recovery-form/en.json +12 -0
  74. package/dist/cdn/translations/address-card/en.json +11 -0
  75. package/dist/cdn/translations/address-form/en.json +27 -0
  76. package/dist/cdn/translations/applied-tax-card/en.json +9 -0
  77. package/dist/cdn/translations/attribute-card/en.json +7 -0
  78. package/dist/cdn/translations/attribute-form/en.json +22 -0
  79. package/dist/cdn/translations/cancellation-form/en.json +10 -0
  80. package/dist/cdn/translations/country/pl.json +251 -0
  81. package/dist/cdn/translations/coupon-card/en.json +36 -0
  82. package/dist/cdn/translations/coupon-code-form/en.json +17 -0
  83. package/dist/cdn/translations/coupon-codes-form/en.json +20 -0
  84. package/dist/cdn/translations/coupon-form/en.json +186 -0
  85. package/dist/cdn/translations/custom-field-card/en.json +7 -0
  86. package/dist/cdn/translations/custom-field-form/en.json +19 -0
  87. package/dist/cdn/translations/customer/en.json +247 -0
  88. package/dist/cdn/translations/customer-card/en.json +7 -0
  89. package/dist/cdn/translations/customer-form/en.json +21 -0
  90. package/dist/cdn/translations/customer-portal/de.json +202 -14
  91. package/dist/cdn/translations/customer-portal/en.json +202 -14
  92. package/dist/cdn/translations/customer-portal/es.json +202 -14
  93. package/dist/cdn/translations/customer-portal/pl.json +223 -0
  94. package/dist/cdn/translations/customer-portal/zh-hk.json +202 -14
  95. package/dist/cdn/translations/customers-table/en.json +9 -0
  96. package/dist/cdn/translations/discount-card/en.json +8 -0
  97. package/dist/cdn/translations/email-template-form/en.json +25 -0
  98. package/dist/cdn/translations/error-entry-card/en.json +7 -0
  99. package/dist/cdn/translations/generate-codes-form/en.json +19 -0
  100. package/dist/cdn/translations/gift-card-card/en.json +9 -0
  101. package/dist/cdn/translations/gift-card-code-form/en.json +19 -0
  102. package/dist/cdn/translations/gift-card-codes-form/en.json +25 -0
  103. package/dist/cdn/translations/gift-card-form/en.json +314 -0
  104. package/dist/cdn/translations/pagination/en.json +7 -0
  105. package/dist/cdn/translations/payment-card/en.json +12 -0
  106. package/dist/cdn/translations/payment-method-card/en.json +13 -0
  107. package/dist/cdn/translations/query-builder/en.json +32 -0
  108. package/dist/cdn/translations/sign-in-form/en.json +21 -0
  109. package/dist/cdn/translations/spinner/en.json +7 -0
  110. package/dist/cdn/translations/subscription-card/en.json +26 -0
  111. package/dist/cdn/translations/subscription-form/en.json +76 -0
  112. package/dist/cdn/translations/subscriptions-table/en.json +26 -0
  113. package/dist/cdn/translations/tax-card/en.json +11 -0
  114. package/dist/cdn/translations/tax-form/en.json +38 -0
  115. package/dist/cdn/translations/template-config-form/en.json +107 -0
  116. package/dist/cdn/translations/template-form/en.json +23 -0
  117. package/dist/cdn/translations/transaction-card/en.json +25 -0
  118. package/dist/cdn/translations/transactions-table/en.json +22 -0
  119. package/dist/cdn/translations/user-form/en.json +26 -0
  120. package/dist/cdn/translations/users-table/en.json +44 -0
  121. package/dist/elements/private/Choice/Choice.js +1 -0
  122. package/dist/elements/private/Choice/Choice.js.map +1 -1
  123. package/dist/elements/private/FrequencyInput/FrequencyInput.d.ts +5 -5
  124. package/dist/elements/private/FrequencyInput/FrequencyInput.js +7 -22
  125. package/dist/elements/private/FrequencyInput/FrequencyInput.js.map +1 -1
  126. package/dist/elements/public/AccessRecoveryForm/AccessRecoveryForm.js +1 -1
  127. package/dist/elements/public/AccessRecoveryForm/AccessRecoveryForm.js.map +1 -1
  128. package/dist/elements/public/AttributeCard/types.d.ts +3 -3
  129. package/dist/elements/public/AttributeCard/types.js.map +1 -1
  130. package/dist/elements/public/AttributeForm/AttributeForm.js +2 -1
  131. package/dist/elements/public/AttributeForm/AttributeForm.js.map +1 -1
  132. package/dist/elements/public/AttributeForm/types.d.ts +3 -3
  133. package/dist/elements/public/AttributeForm/types.js.map +1 -1
  134. package/dist/elements/public/CouponCard/CouponCard.js +2 -1
  135. package/dist/elements/public/CouponCard/CouponCard.js.map +1 -1
  136. package/dist/elements/public/CouponCodeForm/CouponCodeForm.js +5 -5
  137. package/dist/elements/public/CouponCodeForm/CouponCodeForm.js.map +1 -1
  138. package/dist/elements/public/CouponForm/CouponForm.js +199 -164
  139. package/dist/elements/public/CouponForm/CouponForm.js.map +1 -1
  140. package/dist/elements/public/CouponForm/private/CategoryRestrictionsPage.d.ts +4 -3
  141. package/dist/elements/public/CouponForm/private/CategoryRestrictionsPage.js +5 -4
  142. package/dist/elements/public/CouponForm/private/CategoryRestrictionsPage.js.map +1 -1
  143. package/dist/elements/public/CouponForm/private/CategoryRestrictionsPageItem.d.ts +3 -4
  144. package/dist/elements/public/CouponForm/private/CategoryRestrictionsPageItem.js +3 -4
  145. package/dist/elements/public/CouponForm/private/CategoryRestrictionsPageItem.js.map +1 -1
  146. package/dist/elements/public/CouponForm/private/CategoryRestrictionsPageItemContent.d.ts +3 -4
  147. package/dist/elements/public/CouponForm/private/CategoryRestrictionsPageItemContent.js +3 -2
  148. package/dist/elements/public/CouponForm/private/CategoryRestrictionsPageItemContent.js.map +1 -1
  149. package/dist/elements/public/CustomFieldForm/CustomFieldForm.js +2 -1
  150. package/dist/elements/public/CustomFieldForm/CustomFieldForm.js.map +1 -1
  151. package/dist/elements/public/Customer/Customer.js +1 -1
  152. package/dist/elements/public/Customer/Customer.js.map +1 -1
  153. package/dist/elements/public/CustomerPortal/InternalCustomerPortalLoggedInView.js +6 -2
  154. package/dist/elements/public/CustomerPortal/InternalCustomerPortalLoggedInView.js.map +1 -1
  155. package/dist/elements/public/CustomerPortal/InternalCustomerPortalLoggedOutView.js +20 -6
  156. package/dist/elements/public/CustomerPortal/InternalCustomerPortalLoggedOutView.js.map +1 -1
  157. package/dist/elements/public/CustomerPortal/InternalCustomerPortalSubscriptions.js +2 -1
  158. package/dist/elements/public/CustomerPortal/InternalCustomerPortalSubscriptions.js.map +1 -1
  159. package/dist/elements/public/GiftCardCodeForm/GiftCardCodeForm.js +6 -6
  160. package/dist/elements/public/GiftCardCodeForm/GiftCardCodeForm.js.map +1 -1
  161. package/dist/elements/public/GiftCardForm/GiftCardForm.js +103 -85
  162. package/dist/elements/public/GiftCardForm/GiftCardForm.js.map +1 -1
  163. package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPage.d.ts +1 -1
  164. package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPage.js +3 -3
  165. package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPage.js.map +1 -1
  166. package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPageItem.d.ts +1 -3
  167. package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPageItem.js +2 -4
  168. package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPageItem.js.map +1 -1
  169. package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPageItemContent.d.ts +1 -3
  170. package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPageItemContent.js +2 -2
  171. package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPageItemContent.js.map +1 -1
  172. package/dist/elements/public/I18n/format/discount.js +2 -2
  173. package/dist/elements/public/I18n/format/discount.js.map +1 -1
  174. package/dist/elements/public/Pagination/Pagination.js +4 -0
  175. package/dist/elements/public/Pagination/Pagination.js.map +1 -1
  176. package/dist/elements/public/SignInForm/SignInForm.js +1 -1
  177. package/dist/elements/public/SignInForm/SignInForm.js.map +1 -1
  178. package/dist/elements/public/SubscriptionForm/SubscriptionForm.js +1 -1
  179. package/dist/elements/public/SubscriptionForm/SubscriptionForm.js.map +1 -1
  180. package/dist/elements/public/TaxForm/TaxForm.js +16 -14
  181. package/dist/elements/public/TaxForm/TaxForm.js.map +1 -1
  182. package/dist/elements/public/TemplateForm/TemplateForm.js +1 -1
  183. package/dist/elements/public/TemplateForm/TemplateForm.js.map +1 -1
  184. package/dist/elements/public/UserForm/UserForm.js +2 -1
  185. package/dist/elements/public/UserForm/UserForm.js.map +1 -1
  186. package/dist/elements/public/UsersTable/UsersTable.d.ts +5 -1
  187. package/dist/elements/public/UsersTable/UsersTable.js +2 -1
  188. package/dist/elements/public/UsersTable/UsersTable.js.map +1 -1
  189. package/dist/mixins/themeable.js +4 -0
  190. package/dist/mixins/themeable.js.map +1 -1
  191. package/dist/mixins/translatable.js +1 -1
  192. package/dist/mixins/translatable.js.map +1 -1
  193. package/package.json +2 -2
  194. package/dist/cdn/shared-11708514.js +0 -1
  195. package/dist/cdn/shared-805d18a2.js +0 -1
  196. package/dist/cdn/translations/shared/de.json +0 -271
  197. package/dist/cdn/translations/shared/en.json +0 -557
  198. package/dist/cdn/translations/shared/es.json +0 -272
  199. package/dist/cdn/translations/shared/zh-hk.json +0 -179
@@ -1,7 +1,8 @@
1
1
  import { html } from 'lit-element';
2
2
  import { Table } from "../Table/Table.js";
3
+ import { TranslatableMixin } from "../../../mixins/translatable.js";
3
4
  import { roles } from "../UserForm/roles.js";
4
- export class UsersTable extends Table {
5
+ export class UsersTable extends TranslatableMixin(Table, 'users-table') {
5
6
  constructor() {
6
7
  super(...arguments);
7
8
  this.columns = [
@@ -1 +1 @@
1
- {"version":3,"file":"UsersTable.js","sourceRoot":"","sources":["../../../../src/elements/public/UsersTable/UsersTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,IAAI,EAAE,MAAM,aAAa,CAAC;AAMnD,OAAO,EAAE,KAAK,EAAE,0BAAuB;AACvC,OAAO,EAAE,KAAK,EAAE,6BAA0B;AAE1C,MAAM,OAAO,UAAW,SAAQ,KAAW;IAA3C;;QAoFE,YAAO,GAAG;YACR,UAAU,CAAC,UAAU;YACrB,UAAU,CAAC,WAAW;YACtB,UAAU,CAAC,WAAW;YACtB,UAAU,CAAC,iBAAiB;YAC5B,UAAU,CAAC,aAAa;SACzB,CAAC;IAgBJ,CAAC;IAdC,MAAM;QACJ,OAAO,IAAI,CAAA;;iBAEE,IAAI,CAAC,IAAI;;eAEX,IAAI,CAAC,IAAI;aACX,IAAI,CAAC,EAAE;;;;;QAKZ,KAAK,CAAC,MAAM,EAAE;KACjB,CAAC;IACJ,CAAC;;AAxGM,qBAAU,GAAiB;IAChC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAA;;UAEX,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS;;KAE9C;CACF,CAAC;AAEK,sBAAW,GAAiB;IACjC,SAAS,EAAE,IAAI;IACf,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAA;mEAC8C,GAAG,CAAC,IAAI,CAAC,KAAK;KAC5E;CACF,CAAC;AAEK,sBAAW,GAAiB;IACjC,IAAI,EAAE,GAAG,CAAC,EAAE;QACV,MAAM,KAAK,GAAG;YACZ,aAAa;YACb,eAAe;YACf,wBAAwB;YACxB,aAAa;SACL,CAAC;QAEX,OAAO,IAAI,CAAA;;YAEL,KAAK,CAAC,GAAG,CACT,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAA;;wBAEJ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe;;;kBAG/C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAE,CAAC,IAAI;;aAEzD,CACF;;OAEJ,CAAC;IACJ,CAAC;CACF,CAAC;AAEK,4BAAiB,GAAiB;IACvC,SAAS,EAAE,IAAI;IACf,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAA;;;oBAGD,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;iBACpD,GAAG,CAAC,IAAI;;eAEV,GAAG,CAAC,EAAE;;;;;oBAKD,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;iBACpD,GAAG,CAAC,IAAI;;eAEV,GAAG,CAAC,EAAE;;;;KAIhB;CACF,CAAC;AAEK,wBAAa,GAAiB;IACnC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAA;;;;iBAIJ,CAAC,GAAgB,EAAE,EAAE;QAC5B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAuB,CAAC;QAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,EAAgB,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAe,CAAC;QAEvD,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpB,CAAC;;0BAEiB,GAAG,CAAC,IAAI,oBAAoB,GAAG,CAAC,EAAE;;KAEvD;CACF,CAAC","sourcesContent":["import { TemplateResult, html } from 'lit-element';\n\nimport { ButtonElement } from '@vaadin/vaadin-button';\nimport { Column } from '../Table/types';\nimport { Data } from './types';\nimport { FormDialog } from '../FormDialog/FormDialog';\nimport { Table } from '../Table/Table';\nimport { roles } from '../UserForm/roles';\n\nexport class UsersTable extends Table<Data> {\n static nameColumn: Column<Data> = {\n cell: ctx => html`\n <span data-testclass=\"name\" class=\"text-m font-medium\">\n ${ctx.data.first_name} ${ctx.data.last_name}\n </span>\n `,\n };\n\n static emailColumn: Column<Data> = {\n hideBelow: 'md',\n cell: ctx => html`\n <span data-testclass=\"email\" class=\"text-m text-secondary\">${ctx.data.email}</span>\n `,\n };\n\n static rolesColumn: Column<Data> = {\n cell: ctx => {\n const props = [\n 'is_merchant',\n 'is_programmer',\n 'is_front_end_developer',\n 'is_designer',\n ] as const;\n\n return html`\n <div data-testclass=\"roles\" class=\"flex space-x-s\">\n ${props.map(\n property => html`\n <div\n class=${ctx.data[property] ? '' : 'text-disabled'}\n style=\"width: 1rem; height: 1rem;\"\n >\n ${roles.find(role => role.property === property)!.icon}\n </div>\n `\n )}\n </div>\n `;\n },\n };\n\n static lastUpdatedColumn: Column<Data> = {\n hideBelow: 'lg',\n cell: ctx => html`\n <span data-testclass=\"lastUpdated\" class=\"text-m text-secondary font-tnum\">\n <foxy-i18n\n options=${JSON.stringify({ value: ctx.data.date_modified })}\n lang=${ctx.lang}\n key=\"date\"\n ns=${ctx.ns}\n >\n </foxy-i18n>\n\n <foxy-i18n\n options=${JSON.stringify({ value: ctx.data.date_modified })}\n lang=${ctx.lang}\n key=\"time\"\n ns=${ctx.ns}\n >\n </foxy-i18n>\n </span>\n `,\n };\n\n static actionsColumn: Column<Data> = {\n cell: ctx => html`\n <vaadin-button\n data-testclass=\"actions\"\n theme=\"tertiary small\"\n @click=${(evt: CustomEvent) => {\n const button = evt.target as ButtonElement;\n const root = button.getRootNode() as ShadowRoot;\n const form = root.querySelector('#form') as FormDialog;\n\n form.href = ctx.data._links.self.href;\n form.show(button);\n }}\n >\n <foxy-i18n lang=${ctx.lang} key=\"update\" ns=${ctx.ns}></foxy-i18n>\n </vaadin-button>\n `,\n };\n\n columns = [\n UsersTable.nameColumn,\n UsersTable.emailColumn,\n UsersTable.rolesColumn,\n UsersTable.lastUpdatedColumn,\n UsersTable.actionsColumn,\n ];\n\n render(): TemplateResult {\n return html`\n <foxy-form-dialog\n parent=${this.href}\n form=\"foxy-user-form\"\n lang=${this.lang}\n ns=${this.ns}\n id=\"form\"\n >\n </foxy-form-dialog>\n\n ${super.render()}\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"UsersTable.js","sourceRoot":"","sources":["../../../../src/elements/public/UsersTable/UsersTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,IAAI,EAAE,MAAM,aAAa,CAAC;AAMnD,OAAO,EAAE,KAAK,EAAE,0BAAuB;AACvC,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,KAAK,EAAE,6BAA0B;AAE1C,MAAM,OAAO,UAAW,SAAQ,iBAAiB,CAAC,KAAK,EAAE,aAAa,CAAO;IAA7E;;QAoFE,YAAO,GAAG;YACR,UAAU,CAAC,UAAU;YACrB,UAAU,CAAC,WAAW;YACtB,UAAU,CAAC,WAAW;YACtB,UAAU,CAAC,iBAAiB;YAC5B,UAAU,CAAC,aAAa;SACzB,CAAC;IAgBJ,CAAC;IAdC,MAAM;QACJ,OAAO,IAAI,CAAA;;iBAEE,IAAI,CAAC,IAAI;;eAEX,IAAI,CAAC,IAAI;aACX,IAAI,CAAC,EAAE;;;;;QAKZ,KAAK,CAAC,MAAM,EAAE;KACjB,CAAC;IACJ,CAAC;;AAxGM,qBAAU,GAAiB;IAChC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAA;;UAEX,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS;;KAE9C;CACF,CAAC;AAEK,sBAAW,GAAiB;IACjC,SAAS,EAAE,IAAI;IACf,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAA;mEAC8C,GAAG,CAAC,IAAI,CAAC,KAAK;KAC5E;CACF,CAAC;AAEK,sBAAW,GAAiB;IACjC,IAAI,EAAE,GAAG,CAAC,EAAE;QACV,MAAM,KAAK,GAAG;YACZ,aAAa;YACb,eAAe;YACf,wBAAwB;YACxB,aAAa;SACL,CAAC;QAEX,OAAO,IAAI,CAAA;;YAEL,KAAK,CAAC,GAAG,CACT,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAA;;wBAEJ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe;;;kBAG/C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAE,CAAC,IAAI;;aAEzD,CACF;;OAEJ,CAAC;IACJ,CAAC;CACF,CAAC;AAEK,4BAAiB,GAAiB;IACvC,SAAS,EAAE,IAAI;IACf,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAA;;;oBAGD,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;iBACpD,GAAG,CAAC,IAAI;;eAEV,GAAG,CAAC,EAAE;;;;;oBAKD,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;iBACpD,GAAG,CAAC,IAAI;;eAEV,GAAG,CAAC,EAAE;;;;KAIhB;CACF,CAAC;AAEK,wBAAa,GAAiB;IACnC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAA;;;;iBAIJ,CAAC,GAAgB,EAAE,EAAE;QAC5B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAuB,CAAC;QAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,EAAgB,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAe,CAAC;QAEvD,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpB,CAAC;;0BAEiB,GAAG,CAAC,IAAI,oBAAoB,GAAG,CAAC,EAAE;;KAEvD;CACF,CAAC","sourcesContent":["import { TemplateResult, html } from 'lit-element';\n\nimport { ButtonElement } from '@vaadin/vaadin-button';\nimport { Column } from '../Table/types';\nimport { Data } from './types';\nimport { FormDialog } from '../FormDialog/FormDialog';\nimport { Table } from '../Table/Table';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { roles } from '../UserForm/roles';\n\nexport class UsersTable extends TranslatableMixin(Table, 'users-table')<Data> {\n static nameColumn: Column<Data> = {\n cell: ctx => html`\n <span data-testclass=\"name\" class=\"text-m font-medium\">\n ${ctx.data.first_name} ${ctx.data.last_name}\n </span>\n `,\n };\n\n static emailColumn: Column<Data> = {\n hideBelow: 'md',\n cell: ctx => html`\n <span data-testclass=\"email\" class=\"text-m text-secondary\">${ctx.data.email}</span>\n `,\n };\n\n static rolesColumn: Column<Data> = {\n cell: ctx => {\n const props = [\n 'is_merchant',\n 'is_programmer',\n 'is_front_end_developer',\n 'is_designer',\n ] as const;\n\n return html`\n <div data-testclass=\"roles\" class=\"flex space-x-s\">\n ${props.map(\n property => html`\n <div\n class=${ctx.data[property] ? '' : 'text-disabled'}\n style=\"width: 1rem; height: 1rem;\"\n >\n ${roles.find(role => role.property === property)!.icon}\n </div>\n `\n )}\n </div>\n `;\n },\n };\n\n static lastUpdatedColumn: Column<Data> = {\n hideBelow: 'lg',\n cell: ctx => html`\n <span data-testclass=\"lastUpdated\" class=\"text-m text-secondary font-tnum\">\n <foxy-i18n\n options=${JSON.stringify({ value: ctx.data.date_modified })}\n lang=${ctx.lang}\n key=\"date\"\n ns=${ctx.ns}\n >\n </foxy-i18n>\n\n <foxy-i18n\n options=${JSON.stringify({ value: ctx.data.date_modified })}\n lang=${ctx.lang}\n key=\"time\"\n ns=${ctx.ns}\n >\n </foxy-i18n>\n </span>\n `,\n };\n\n static actionsColumn: Column<Data> = {\n cell: ctx => html`\n <vaadin-button\n data-testclass=\"actions\"\n theme=\"tertiary small\"\n @click=${(evt: CustomEvent) => {\n const button = evt.target as ButtonElement;\n const root = button.getRootNode() as ShadowRoot;\n const form = root.querySelector('#form') as FormDialog;\n\n form.href = ctx.data._links.self.href;\n form.show(button);\n }}\n >\n <foxy-i18n lang=${ctx.lang} key=\"update\" ns=${ctx.ns}></foxy-i18n>\n </vaadin-button>\n `,\n };\n\n columns = [\n UsersTable.nameColumn,\n UsersTable.emailColumn,\n UsersTable.rolesColumn,\n UsersTable.lastUpdatedColumn,\n UsersTable.actionsColumn,\n ];\n\n render(): TemplateResult {\n return html`\n <foxy-form-dialog\n parent=${this.href}\n form=\"foxy-user-form\"\n lang=${this.lang}\n ns=${this.ns}\n id=\"form\"\n >\n </foxy-form-dialog>\n\n ${super.render()}\n `;\n }\n}\n"]}
@@ -1612,6 +1612,10 @@ input::-webkit-date-and-time-value{
1612
1612
  padding-left: var(--lumo-space-m, 1rem);
1613
1613
  }
1614
1614
 
1615
+ .pl {
1616
+ padding-left: var(--lumo-space-m, 1rem);
1617
+ }
1618
+
1615
1619
  .text-left {
1616
1620
  text-align: left;
1617
1621
  }
@@ -1 +1 @@
1
- {"version":3,"file":"themeable.js","sourceRoot":"","sources":["../../src/mixins/themeable.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EAA0C,UAAU,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAEtF,OAAO,EAAE,eAAe,EAAE,wBAAqB;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAI/D,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,WAAkB,EACkB,EAAE;IACtC,OAAO,MAAM,gBAAiB,SAAQ,WAAW;QAC/C,MAAM,KAAK,MAAM;YACf,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;YAEjC,OAAO;gBACL,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClF,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAqHF;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,OAAgB,SAAU,SAAQ,mBAAmB,CACzD,eAAe,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAC5C;CAAG","sourcesContent":["/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n\nimport { CSSResult, CSSResultArray, Constructor, LitElement, css } from 'lit-element';\n\nimport { ResponsiveMixin } from './responsive';\nimport { ScopedElementsMixin } from '@open-wc/scoped-elements';\n\ntype Base = Constructor<LitElement> & { styles?: CSSResult | CSSResultArray | CSSStyleSheet };\n\nexport const ThemeableMixin = <TBase extends Base>(\n BaseElement: TBase\n): TBase & { styles: CSSResultArray } => {\n return class ThemeableElement extends BaseElement {\n static get styles(): CSSResultArray {\n const originalCSS = super.styles;\n\n return [\n ...(originalCSS ? (Array.isArray(originalCSS) ? originalCSS : [originalCSS]) : []),\n css`\n @tailwind base;\n\n * {\n -webkit-tap-highlight-color: transparent;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n\n :host {\n display: block;\n }\n\n details > summary::-webkit-details-marker {\n display: none;\n }\n\n details > summary {\n list-style: none;\n }\n\n vaadin-select {\n margin-top: -4px;\n margin-bottom: -4px;\n }\n\n vaadin-text-area,\n vaadin-text-field,\n vaadin-date-picker,\n vaadin-email-field,\n vaadin-number-field,\n vaadin-custom-field,\n vaadin-integer-field,\n vaadin-password-field,\n vaadin-combo-box::part(text-field) {\n padding-top: 0;\n padding-bottom: 0;\n }\n\n vaadin-date-picker::part(text-field) {\n padding-top: 0;\n padding-bottom: 0;\n }\n\n vaadin-button {\n margin: 0;\n }\n\n vaadin-checkbox::part(checkbox) {\n margin: 0;\n }\n\n vaadin-checkbox::part(label) {\n margin: 0.1875em var(--lumo-space-m);\n }\n\n .appearance-none {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n }\n\n .appearance-none::-webkit-calendar-picker-indicator,\n .appearance-none::-webkit-outer-spin-button,\n .appearance-none::-webkit-inner-spin-button,\n .appearance-none::-webkit-list-button {\n opacity: 0 !important;\n width: 0 !important;\n margin: 0 !important;\n padding: 0 !important;\n }\n\n input::-webkit-date-and-time-value {\n text-align: inherit !important;\n }\n\n @tailwind components;\n\n @tailwind utilities;\n\n @layer utilities {\n .border-radius-overflow-fix {\n -webkit-mask-image: -webkit-radial-gradient(white, black);\n }\n\n @variants sm, md, lg, xl {\n .grid-rows-auto {\n grid-auto-rows: 1fr;\n }\n\n .icon-inline {\n --iron-icon-height: 1em;\n --iron-icon-width: 1em;\n }\n\n .bg-blurred {\n backdrop-filter: blur(25px);\n background: var(--lumo-tint-80pct);\n }\n\n .max-w-modal {\n max-width: 28rem;\n }\n\n .w-narrow-modal {\n width: 18rem;\n }\n\n .snap-x-mandatory {\n scroll-snap-type: x mandatory;\n }\n\n .snap-start {\n scroll-snap-align: start;\n }\n }\n }\n `,\n ];\n }\n };\n};\n\n/**\n * One of the base classes for each rel-specific element in the collection\n * providing shared TailwindCSS styles for Shadow DOM content.\n * This class MUST NOT be used on its own (hence the `abstract` keyword) or\n * referenced externally (outside of the package).\n *\n * @deprecated\n */\nexport abstract class Themeable extends ScopedElementsMixin(\n ResponsiveMixin(ThemeableMixin(LitElement))\n) {}\n"]}
1
+ {"version":3,"file":"themeable.js","sourceRoot":"","sources":["../../src/mixins/themeable.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n\nimport { CSSResult, CSSResultArray, Constructor, LitElement, css } from 'lit-element';\n\nimport { ResponsiveMixin } from './responsive';\nimport { ScopedElementsMixin } from '@open-wc/scoped-elements';\n\ntype Base = Constructor<LitElement> & { styles?: CSSResult | CSSResultArray | CSSStyleSheet };\n\nexport const ThemeableMixin = <TBase extends Base>(\n BaseElement: TBase\n): TBase & { styles: CSSResultArray } => {\n return class ThemeableElement extends BaseElement {\n static get styles(): CSSResultArray {\n const originalCSS = super.styles;\n\n return [\n ...(originalCSS ? (Array.isArray(originalCSS) ? originalCSS : [originalCSS]) : []),\n css`\n @tailwind base;\n\n * {\n -webkit-tap-highlight-color: transparent;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n\n :host {\n display: block;\n }\n\n details > summary::-webkit-details-marker {\n display: none;\n }\n\n details > summary {\n list-style: none;\n }\n\n vaadin-select {\n margin-top: -4px;\n margin-bottom: -4px;\n }\n\n vaadin-text-area,\n vaadin-text-field,\n vaadin-date-picker,\n vaadin-email-field,\n vaadin-number-field,\n vaadin-custom-field,\n vaadin-integer-field,\n vaadin-password-field,\n vaadin-combo-box::part(text-field) {\n padding-top: 0;\n padding-bottom: 0;\n }\n\n vaadin-date-picker::part(text-field) {\n padding-top: 0;\n padding-bottom: 0;\n }\n\n vaadin-button {\n margin: 0;\n }\n\n vaadin-checkbox::part(checkbox) {\n margin: 0;\n }\n\n vaadin-checkbox::part(label) {\n margin: 0.1875em var(--lumo-space-m);\n }\n\n .appearance-none {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n }\n\n .appearance-none::-webkit-calendar-picker-indicator,\n .appearance-none::-webkit-outer-spin-button,\n .appearance-none::-webkit-inner-spin-button,\n .appearance-none::-webkit-list-button {\n opacity: 0 !important;\n width: 0 !important;\n margin: 0 !important;\n padding: 0 !important;\n }\n\n input::-webkit-date-and-time-value {\n text-align: inherit !important;\n }\n\n @tailwind components;\n\n @tailwind utilities;\n\n @layer utilities {\n .border-radius-overflow-fix {\n -webkit-mask-image: -webkit-radial-gradient(white, black);\n }\n\n @variants sm, md, lg, xl {\n .grid-rows-auto {\n grid-auto-rows: 1fr;\n }\n\n .icon-inline {\n --iron-icon-height: 1em;\n --iron-icon-width: 1em;\n }\n\n .bg-blurred {\n backdrop-filter: blur(25px);\n background: var(--lumo-tint-80pct);\n }\n\n .max-w-modal {\n max-width: 28rem;\n }\n\n .w-narrow-modal {\n width: 18rem;\n }\n\n .snap-x-mandatory {\n scroll-snap-type: x mandatory;\n }\n\n .snap-start {\n scroll-snap-align: start;\n }\n }\n }\n `,\n ];\n }\n };\n};\n\n/**\n * One of the base classes for each rel-specific element in the collection\n * providing shared TailwindCSS styles for Shadow DOM content.\n * This class MUST NOT be used on its own (hence the `abstract` keyword) or\n * referenced externally (outside of the package).\n *\n * @deprecated\n */\nexport abstract class Themeable extends ScopedElementsMixin(\n ResponsiveMixin(ThemeableMixin(LitElement))\n) {}\n"]}
@@ -72,7 +72,7 @@ export class Translatable extends Themeable {
72
72
  this.__i18n.use(HttpApi);
73
73
  this.__whenI18NReady = this.__i18n.init({
74
74
  ns: ['global'],
75
- supportedLngs: ['nl', 'en', 'es', 'sv', 'fi', 'fr', 'de', 'zh', 'no', 'it'],
75
+ supportedLngs: ['nl', 'en', 'es', 'sv', 'fi', 'fr', 'de', 'zh', 'no', 'it', 'pl'],
76
76
  interpolation: { format: Translatable.__f },
77
77
  fallbackLng: 'en',
78
78
  fallbackNS: 'global',
@@ -1 +1 @@
1
- {"version":3,"file":"translatable.js","sourceRoot":"","sources":["../../src/mixins/translatable.ts"],"names":[],"mappings":"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","sourcesContent":["import { Constructor, LitElement, PropertyDeclarations } from 'lit-element';\nimport i18next, { FormatFunction, StringMap, TFunction, i18n } from 'i18next';\n\nimport HttpApi from 'i18next-http-backend';\nimport { I18n } from '../elements/public/I18n/I18n';\nimport { Themeable } from './themeable';\nimport { cdn } from '../env';\n\n/**\n * One of the base classes for each rel-specific element in the collection,\n * providing internationalization capabilities to the derived components.\n * This class MUST NOT be used on its own (hence the `abstract` keyword) or\n * referenced externally (outside of the package).\n *\n * @deprecated\n */\nexport abstract class Translatable extends Themeable {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n lang: { type: String, noAccessor: true },\n ns: { type: String, noAccessor: true },\n };\n }\n\n /**\n * i18next formatter that converts given value to lowecase.\n * @see https://www.i18next.com/translation-function/formatting\n */\n private static __fLowercase: FormatFunction = (value): string => {\n return value.toLowerCase();\n };\n\n /**\n * i18next formatter that presents an array of serializable items\n * as `[0], [1], [...] and [length - 1]`. For example, given an array like\n * the following: `['a', 'b', 'c']`, it will output `'a, b and c'`.\n * @see https://www.i18next.com/translation-function/formatting\n */\n private static __fList: FormatFunction = (value): string => {\n return (value as string[])\n .map((v, i, a) => {\n if (i === 0) return v;\n const part = i === a.length - 1 ? ` $t(and) ` : ',';\n return `${part} ${v}`;\n })\n .join('');\n };\n\n /**\n * Chooses the right i18next formatter for the given template.\n * @see https://www.i18next.com/translation-function/formatting\n */\n private static __f: FormatFunction = (...args): string => {\n const value = args[0];\n const formats = args[1]?.split(' ') ?? [];\n\n return formats.reduce((result, format) => {\n switch (format) {\n case 'lowercase':\n return Translatable.__fLowercase(result);\n case 'list':\n return Translatable.__fList(result);\n default:\n return result;\n }\n }, value);\n };\n\n private static __whenI18NReady: Promise<TFunction>;\n\n private static __isI18NReady = false;\n\n private static __i18n: i18n;\n\n private __lang = (this._i18n.options.fallbackLng as string[])[0];\n\n private __ns = (this._i18n.options.fallbackNS as string[])[0];\n\n /**\n * Creates class instance and starts loading missing translations\n * in background. Triggers render when ready.\n *\n * @param defaultNS Name of the folder translations for this component are stored in. Usually a node name without vendor prefix.\n */\n constructor(defaultNS = 'global') {\n super();\n this.ns = defaultNS;\n this._whenI18nReady.then(() => this.requestUpdate());\n }\n\n /**\n * Contains the language this component presents its translatable\n * content in. Assigning a value to this property will load new\n * translations in background and trigger a render afterwards.\n *\n * **Example:** `\"en\"`\n */\n public get lang(): string {\n return this.__lang;\n }\n\n public set lang(value: string) {\n if (!value || value === 'undefined') return;\n this.__lang = value;\n this._i18n.loadLanguages(value).then(() => {\n if (this.__lang === value) this.requestUpdate();\n });\n }\n\n /**\n * The namespace to look for the translations in. We use this property to\n * sync namespace settings with the parent element and it's highly unlikely\n * that you'll ever need to set or read it in your code.\n *\n * **Example:** `\"admin\"`\n */\n public get ns(): string {\n return this.__ns;\n }\n\n public set ns(value: string) {\n this.__ns = value;\n this._i18n.loadNamespaces(value).then(() => {\n if (this.__ns === value) this.requestUpdate();\n });\n }\n\n private static __initI18N() {\n this.__i18n = i18next.createInstance();\n this.__i18n.use(HttpApi);\n\n this.__whenI18NReady = this.__i18n.init({\n ns: ['global'],\n supportedLngs: ['nl', 'en', 'es', 'sv', 'fi', 'fr', 'de', 'zh', 'no', 'it'],\n interpolation: { format: Translatable.__f },\n fallbackLng: 'en',\n fallbackNS: 'global',\n defaultNS: 'global',\n detection: {\n order: ['querystring', 'navigator', 'htmlTag', 'path', 'subdomain'],\n caches: [],\n },\n backend: {\n loadPath: `${cdn}/translations/{{ns}}/{{lng}}.json`,\n },\n });\n\n this.__whenI18NReady.then(() => (this.__isI18NReady = true));\n\n return this.__i18n;\n }\n\n protected get _i18n(): i18n {\n return Translatable.__i18n ?? Translatable.__initI18N();\n }\n\n protected get _whenI18nReady(): Promise<TFunction> {\n return Translatable.__whenI18NReady;\n }\n\n protected get _isI18nReady(): boolean {\n return Translatable.__isI18NReady;\n }\n\n protected get _t(): TFunction {\n const ns = [this.__ns, this._i18n.options.fallbackNS as string];\n return this._i18n.getFixedT(this.__lang, ns);\n }\n}\n\ntype Base = Constructor<LitElement> & { properties?: PropertyDeclarations };\ntype Translator = (key: string, options?: StringMap) => string;\n\nexport declare class TranslatableMixinHost {\n /** Optional ISO 639-1 code describing the language element content is written in. */\n lang: string;\n\n /**\n * Namespace used by this element.\n * @since 1.4.0\n */\n ns: string;\n\n /**\n * Translation function from i18next fixed to the current language and element namespace.\n * @since 1.4.0\n */\n get t(): Translator;\n}\n\nexport const TranslatableMixin = <T extends Base>(\n BaseElement: T,\n defaultNS = ''\n): T & Constructor<TranslatableMixinHost> & { defaultNS: string } => {\n return class TranslatableElement extends BaseElement {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n lang: { type: String },\n ns: { type: String },\n };\n }\n\n static get defaultNS(): string {\n return defaultNS;\n }\n\n lang = '';\n\n ns = defaultNS;\n\n t: Translator = (key, options) => {\n const I18nElement = customElements.get('foxy-i18n') as typeof I18n | undefined;\n\n if (!I18nElement) return key;\n\n const keys = [\n ...[defaultNS, ...this.ns.split(' ').reverse()]\n .map(v => v.trim())\n .filter((v, i, a) => a.indexOf(v) === i && v.length > 0)\n .reverse()\n .map((v, i, a) => `${v}:${[...a.slice(i + 1), key].join('.')}`),\n `shared:${key}`,\n ];\n\n return I18nElement.i18next.t(keys, { lng: this.lang, ...options }).toString();\n };\n\n private __untrackTranslations?: () => void;\n\n connectedCallback(): void {\n super.connectedCallback();\n const I18nElement = customElements.get('foxy-i18n') as typeof I18n | undefined;\n this.__untrackTranslations = I18nElement?.onTranslationChange(() => this.requestUpdate());\n }\n\n /** @readonly */\n updated(changedProperties: Map<keyof I18n, unknown>): void {\n super.updated(changedProperties);\n\n const I18nElement = customElements.get('foxy-i18n') as typeof I18n | undefined;\n if (!I18nElement) return;\n\n if (changedProperties.has('lang')) I18nElement.i18next.loadLanguages(this.lang);\n if (changedProperties.has('ns')) I18nElement.i18next.loadNamespaces(this.ns.split(' '));\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this.__untrackTranslations?.();\n }\n };\n};\n"]}
1
+ {"version":3,"file":"translatable.js","sourceRoot":"","sources":["../../src/mixins/translatable.ts"],"names":[],"mappings":"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","sourcesContent":["import { Constructor, LitElement, PropertyDeclarations } from 'lit-element';\nimport i18next, { FormatFunction, StringMap, TFunction, i18n } from 'i18next';\n\nimport HttpApi from 'i18next-http-backend';\nimport { I18n } from '../elements/public/I18n/I18n';\nimport { Themeable } from './themeable';\nimport { cdn } from '../env';\n\n/**\n * One of the base classes for each rel-specific element in the collection,\n * providing internationalization capabilities to the derived components.\n * This class MUST NOT be used on its own (hence the `abstract` keyword) or\n * referenced externally (outside of the package).\n *\n * @deprecated\n */\nexport abstract class Translatable extends Themeable {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n lang: { type: String, noAccessor: true },\n ns: { type: String, noAccessor: true },\n };\n }\n\n /**\n * i18next formatter that converts given value to lowecase.\n * @see https://www.i18next.com/translation-function/formatting\n */\n private static __fLowercase: FormatFunction = (value): string => {\n return value.toLowerCase();\n };\n\n /**\n * i18next formatter that presents an array of serializable items\n * as `[0], [1], [...] and [length - 1]`. For example, given an array like\n * the following: `['a', 'b', 'c']`, it will output `'a, b and c'`.\n * @see https://www.i18next.com/translation-function/formatting\n */\n private static __fList: FormatFunction = (value): string => {\n return (value as string[])\n .map((v, i, a) => {\n if (i === 0) return v;\n const part = i === a.length - 1 ? ` $t(and) ` : ',';\n return `${part} ${v}`;\n })\n .join('');\n };\n\n /**\n * Chooses the right i18next formatter for the given template.\n * @see https://www.i18next.com/translation-function/formatting\n */\n private static __f: FormatFunction = (...args): string => {\n const value = args[0];\n const formats = args[1]?.split(' ') ?? [];\n\n return formats.reduce((result, format) => {\n switch (format) {\n case 'lowercase':\n return Translatable.__fLowercase(result);\n case 'list':\n return Translatable.__fList(result);\n default:\n return result;\n }\n }, value);\n };\n\n private static __whenI18NReady: Promise<TFunction>;\n\n private static __isI18NReady = false;\n\n private static __i18n: i18n;\n\n private __lang = (this._i18n.options.fallbackLng as string[])[0];\n\n private __ns = (this._i18n.options.fallbackNS as string[])[0];\n\n /**\n * Creates class instance and starts loading missing translations\n * in background. Triggers render when ready.\n *\n * @param defaultNS Name of the folder translations for this component are stored in. Usually a node name without vendor prefix.\n */\n constructor(defaultNS = 'global') {\n super();\n this.ns = defaultNS;\n this._whenI18nReady.then(() => this.requestUpdate());\n }\n\n /**\n * Contains the language this component presents its translatable\n * content in. Assigning a value to this property will load new\n * translations in background and trigger a render afterwards.\n *\n * **Example:** `\"en\"`\n */\n public get lang(): string {\n return this.__lang;\n }\n\n public set lang(value: string) {\n if (!value || value === 'undefined') return;\n this.__lang = value;\n this._i18n.loadLanguages(value).then(() => {\n if (this.__lang === value) this.requestUpdate();\n });\n }\n\n /**\n * The namespace to look for the translations in. We use this property to\n * sync namespace settings with the parent element and it's highly unlikely\n * that you'll ever need to set or read it in your code.\n *\n * **Example:** `\"admin\"`\n */\n public get ns(): string {\n return this.__ns;\n }\n\n public set ns(value: string) {\n this.__ns = value;\n this._i18n.loadNamespaces(value).then(() => {\n if (this.__ns === value) this.requestUpdate();\n });\n }\n\n private static __initI18N() {\n this.__i18n = i18next.createInstance();\n this.__i18n.use(HttpApi);\n\n this.__whenI18NReady = this.__i18n.init({\n ns: ['global'],\n supportedLngs: ['nl', 'en', 'es', 'sv', 'fi', 'fr', 'de', 'zh', 'no', 'it', 'pl'],\n interpolation: { format: Translatable.__f },\n fallbackLng: 'en',\n fallbackNS: 'global',\n defaultNS: 'global',\n detection: {\n order: ['querystring', 'navigator', 'htmlTag', 'path', 'subdomain'],\n caches: [],\n },\n backend: {\n loadPath: `${cdn}/translations/{{ns}}/{{lng}}.json`,\n },\n });\n\n this.__whenI18NReady.then(() => (this.__isI18NReady = true));\n\n return this.__i18n;\n }\n\n protected get _i18n(): i18n {\n return Translatable.__i18n ?? Translatable.__initI18N();\n }\n\n protected get _whenI18nReady(): Promise<TFunction> {\n return Translatable.__whenI18NReady;\n }\n\n protected get _isI18nReady(): boolean {\n return Translatable.__isI18NReady;\n }\n\n protected get _t(): TFunction {\n const ns = [this.__ns, this._i18n.options.fallbackNS as string];\n return this._i18n.getFixedT(this.__lang, ns);\n }\n}\n\ntype Base = Constructor<LitElement> & { properties?: PropertyDeclarations };\ntype Translator = (key: string, options?: StringMap) => string;\n\nexport declare class TranslatableMixinHost {\n /** Optional ISO 639-1 code describing the language element content is written in. */\n lang: string;\n\n /**\n * Namespace used by this element.\n * @since 1.4.0\n */\n ns: string;\n\n /**\n * Translation function from i18next fixed to the current language and element namespace.\n * @since 1.4.0\n */\n get t(): Translator;\n}\n\nexport const TranslatableMixin = <T extends Base>(\n BaseElement: T,\n defaultNS = ''\n): T & Constructor<TranslatableMixinHost> & { defaultNS: string } => {\n return class TranslatableElement extends BaseElement {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n lang: { type: String },\n ns: { type: String },\n };\n }\n\n static get defaultNS(): string {\n return defaultNS;\n }\n\n lang = '';\n\n ns = defaultNS;\n\n t: Translator = (key, options) => {\n const I18nElement = customElements.get('foxy-i18n') as typeof I18n | undefined;\n\n if (!I18nElement) return key;\n\n const keys = [\n ...[defaultNS, ...this.ns.split(' ').reverse()]\n .map(v => v.trim())\n .filter((v, i, a) => a.indexOf(v) === i && v.length > 0)\n .reverse()\n .map((v, i, a) => `${v}:${[...a.slice(i + 1), key].join('.')}`),\n `shared:${key}`,\n ];\n\n return I18nElement.i18next.t(keys, { lng: this.lang, ...options }).toString();\n };\n\n private __untrackTranslations?: () => void;\n\n connectedCallback(): void {\n super.connectedCallback();\n const I18nElement = customElements.get('foxy-i18n') as typeof I18n | undefined;\n this.__untrackTranslations = I18nElement?.onTranslationChange(() => this.requestUpdate());\n }\n\n /** @readonly */\n updated(changedProperties: Map<keyof I18n, unknown>): void {\n super.updated(changedProperties);\n\n const I18nElement = customElements.get('foxy-i18n') as typeof I18n | undefined;\n if (!I18nElement) return;\n\n if (changedProperties.has('lang')) I18nElement.i18next.loadLanguages(this.lang);\n if (changedProperties.has('ns')) I18nElement.i18next.loadNamespaces(this.ns.split(' '));\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this.__untrackTranslations?.();\n }\n };\n};\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@foxy.io/elements",
3
3
  "type": "module",
4
- "version": "1.15.0-beta.8",
4
+ "version": "1.15.0",
5
5
  "description": "E-commerce web components by Foxy.",
6
6
  "repository": {
7
7
  "type": "git",
@@ -26,7 +26,7 @@
26
26
  "prepack": "npm run lint && rimraf dist && node ./.build/compile-for-npm.js && rollup -c"
27
27
  },
28
28
  "dependencies": {
29
- "@foxy.io/sdk": "^1.8.1",
29
+ "@foxy.io/sdk": "^1.8.2",
30
30
  "@open-wc/lit-helpers": "^0.3.11",
31
31
  "@open-wc/scoped-elements": "1.2.1",
32
32
  "@polymer/iron-icons": "^3.0.1",
@@ -1 +0,0 @@
1
- import{L as e,_ as t,h as n}from"./shared-63eaded9.js";import{i as r,a as s}from"./shared-e68b9c83.js";import{F as a,A as i}from"./shared-5535f38f.js";const o={type:"backend",init:()=>{},read:(e,t,n)=>{const r=async e=>{const t=e.ok?null:new Error(await e.text()),r=!!e.ok&&await e.json();n(t,r)},s=e=>{const t=e instanceof Error?e:new Error(String(e));n(t,!1)},o=new a("fetch",{cancelable:!0,composed:!0,bubbles:!0,request:new i.WHATWGRequest(`foxy://i18n/${t}/${e}`),resolve:r,reject:s});dispatchEvent(o),o.defaultPrevented||fetch(o.request).then(r).catch(s)},create:()=>{throw new Error("foxy-i18n does not support resource creation")}};function c(e,t=!1){var n;const r=e.replace(/(y|m|w|d)/,""),s=e.replace(/\.?\d+/,"");return{count:".5"===r?.5:parseInt(r),units:t&&null!==(n={y:"year",m:"month",w:"week",d:"day"}[s])&&void 0!==n?n:s}}const l={discount:({type:e,details:t},n,r)=>{const s=e.endsWith("_percentage")?.01:1,a=t.split("|"),i=`${["allunits","incremental","repeat","single"].includes(a[0])?a.shift():"single"}_${e}_discount_summary`;return a.map((e=>{var t,n;const r=null!==(n=null===(t=/[-+]/.exec(e))||void 0===t?void 0:t.index)&&void 0!==n?n:-1,a=parseFloat(e.substring(r))*s,o=parseFloat(e.substring(0,r));return`$t(${i}, ${JSON.stringify({adjustment:a,from:o})})`})).join("; ")},relative:(e,t,n)=>{const r=new Intl.RelativeTimeFormat(n);let{count:s,units:a}=c(e,!0);return.5===s&&"month"===a&&(s=2,a="week"),r.format(s,a)},percent:(e,t,n)=>{let r=null;try{"number"==typeof e&&(r=e.toLocaleString(n,{style:"percent"}))}catch(e){console.warn(`i18next formatter error: ${e.message}`)}return r||String(e)},ordinal:(e,t,n)=>`${e}$t(ordinal_${new Intl.PluralRules(n,{type:"ordinal"}).select(e)})`,price:(e,t,n,r)=>{var s;try{const[t,a]=e.split(" ");return parseFloat(t).toLocaleString(n,{maximumFractionDigits:2,minimumFractionDigits:2,currencyDisplay:null!==(s=null==r?void 0:r.currencyDisplay)&&void 0!==s?s:"symbol",style:"currency",currency:a})}catch(t){return e}},date:(e,t,n)=>{if(!e)return"$t(unknown)";const r=new Date(e),s=(new Date).getFullYear()===r.getFullYear()?void 0:"numeric";return r.toLocaleDateString(n,{month:"long",year:s,day:"numeric"})},time:(e,t,n)=>new Date(e).toLocaleTimeString(n,{hour:"numeric",minute:"numeric"})};let u,d=e=>e;class p extends(s(e,"")){constructor(){super(...arguments),this.options={},this.key=""}static onTranslationChange(e){const t=["initialized","loaded"],n=["removed","added"];return t.forEach((t=>p.i18next.on(t,e))),n.forEach((t=>p.i18next.store.on(t,e))),()=>{t.forEach((t=>p.i18next.off(t,e))),n.forEach((t=>p.i18next.store.off(t,e)))}}static onResourceFetch(e){const t=t=>{if(t instanceof a&&t.request.url.startsWith("foxy://i18n/")){const[n,r]=t.request.url.split("/").reverse();t.respondWith(e(r,n))}};return addEventListener("fetch",t),()=>removeEventListener("fetch",t)}static setGateways({values:e}){for(const t in e)this.i18next.addResource("en","gateways",`gateways.${t}`,e[t].name)}static get properties(){return t(t({},super.properties),{},{options:{type:Object},key:{type:String}})}connectedCallback(){super.connectedCallback(),this.__unsubscribe=p.onTranslationChange((()=>this.requestUpdate()))}render(){return n(u||(u=d`<span>${0}</span>`),this.t(this.key,t(t({},this.options),{},{lng:this.lang})))}disconnectedCallback(){var e;super.disconnectedCallback(),null===(e=this.__unsubscribe)||void 0===e||e.call(this)}}p.FetchEvent=a,p.i18next=r.createInstance().use(o),p.i18next.init({interpolation:{format:(e,t="",n="en",r={})=>t.split(" ").filter((e=>!!e.trim())).reduce(((e,t)=>{var s,a;return null!==(a=null===(s=l[t])||void 0===s?void 0:s.call(l,e,t,n,r))&&void 0!==a?a:e}),e),escapeValue:!1},fallbackLng:"en",fallbackNS:"shared",defaultNS:"shared",ns:["shared"]}),customElements.define("foxy-i18n",p);export{p as I,c as p};
@@ -1 +0,0 @@
1
- import{_ as r}from"./shared-63eaded9.js";import{p as s}from"./shared-11708514.js";function t(t){var a;const e=s(t),n=null!==(a={y:"yearly",m:"monthly",w:"weekly",d:"daily"}[e.units])&&void 0!==a?a:e.units;return r(r({},e),{},{units:n})}export{t as p};
@@ -1,271 +0,0 @@
1
- {
2
- "add_country": "Land hinzufügen",
3
- "add_field": "Feld hinzufügen",
4
- "add_or_clause": "ODER-Klausel hinzufügen",
5
- "add_region": "Region hinzufügen",
6
- "add_value": "Neuen Wert hinzufügen",
7
- "address1": "Adresse Zeile 1",
8
- "address2": "Adresse Zeile 2",
9
- "address_name": "Name Adresse",
10
- "address_plural": "Adressen",
11
- "allowlist": "Alle außer zulassen",
12
- "attribute_plural": "Kennzeichen",
13
- "back": "Zurückkehren",
14
- "backend_developer": "Backend-Entwickler",
15
- "backend_developer_explainer": "Verwaltet serverseitigen Code in PHP, Python, Ruby usw.",
16
- "billing": "Abrechnung",
17
- "blocklist": "Alle außer verbieten",
18
- "cache": "Cachen",
19
- "cancel": "Abbrechen",
20
- "cart_controls": "Menge",
21
- "cart_type": "Warenkorbanzeige",
22
- "cart_type_custom": "Benutzerdefinierte",
23
- "cart_type_custom_explainer": "Erstellen Sie Ihren eigenen JSONP-Warenkorb mit der enthaltenen Konfiguration",
24
- "cart_type_default": "Sidecart",
25
- "cart_type_default_explainer": "Standarddarstellung des Einkaufswagens in Version 2.0",
26
- "cart_type_fullpage": "Full page",
27
- "cart_type_fullpage_explainer": "Schicken Sie alle Kunden zu einem ganzseitigen Warenkorb, während die Minicart-Funktionalität weiterhin enthalten ist",
28
- "checked_by_default": "Standardmäßig aktiviert",
29
- "checkout_type": "Konten",
30
- "checkout_type_account_only": "Nur Kundenkonten zulassen",
31
- "checkout_type_default_account": "Beides zulassen, standardmäßig Kunde",
32
- "checkout_type_default_guest": "Beides zulassen, standardmäßig Gast",
33
- "checkout_type_guest_only": "Nur Gäste zulassen",
34
- "checkout_type_helper_text": "Wenn Sie $t(checkout_type_guest_only) auswählen, kann Ihr Geschäft keine Abonnements verwenden.",
35
- "city": "Stadt",
36
- "client": "Klient",
37
- "close": "Schließen",
38
- "close_icon": "Schließen-Symbol",
39
- "company": "Firma",
40
- "consent": "Zustimmung",
41
- "country": "Land",
42
- "coupon_entry": "Gutscheincode",
43
- "create": "Erstellen",
44
- "custom_config": "Benutzerdefinierte Konfiguration",
45
- "custom_config_helper_text": "Wenn Sie benutzerdefinierte Werte haben, die Sie Ihrer Twig-Vorlage zur Verfügung stellen möchten, können Sie diese hier als gültige JSON-Zeichenfolge hinzufügen.",
46
- "custom_fields": "Benutzerdefinierte Felder",
47
- "custom_fields_helper_text": "Wenn Sie Informationen vom Kunden auf der Checkout-Seite sammeln möchten, können Sie hier benutzerdefinierte Formularfelder hinzufügen, die dem Checkout-Formular hinzugefügt werden. Aus Konsistenzgründen empfehlen wir Ihnen, der gleichen HTML-Containerstruktur zu folgen, die für andere Checkout-Felder verwendet wird. Sie können hier die Twig-Syntax verwenden.",
48
- "custom_footer": "Benutzerdefinierte Fußzeile",
49
- "custom_footer_helper_text": "Alle JS-Snippets oder Konvertierungsskripte, die Sie zur Fußzeile hinzufügen müssen, können hier eingefügt werden und werden vor dem </body>-Tag eingefügt. Sie können hier die Twig-Syntax verwenden. Verwenden Sie für Konvertierungsskripts, die Sie nur einmal auf der Belegseite anzeigen möchten, {% if first_receipt_display %} {# Inhalt des Konvertierungsskripts hier #} {% endif %}.",
50
- "custom_header": "Benutzerdefinierte Kopfzeile",
51
- "custom_header_helper_text": "Jedes CSS oder JS, das Sie zum Header hinzufügen müssen, kann hier eingefügt werden und wird vor dem </head>-Tag Ihrer Vorlagen eingefügt. Denken Sie daran, dass alle Verweise auf Skriptdateien über https erfolgen oder über das Foxy-Caching-System laufen müssen. Die Twig-Syntax ist im Header nicht verfügbar.",
52
- "customer": "Kunde",
53
- "daily": "täglich",
54
- "daily_plural": "Jede {{count}} Tage",
55
- "date": "{{value, date}}",
56
- "date_created": "erstellt am",
57
- "date_modified": "Letzte Änderung",
58
- "day": "Tag",
59
- "day_plural": "Tage",
60
- "default": "Standard",
61
- "default_billing_address": "Vorgegebene Rechnungsadresse",
62
- "default_shipping_address": "Vorgegebene Lieferadresse",
63
- "delete": "Löschen",
64
- "delete_prompt": "Diese Ressource wird endgültig gelöscht. Sind Sie sicher?",
65
- "description": "Beschreibung",
66
- "designer": "Designer",
67
- "designer_explainer": "Verwaltet Erscheinungsbild, Grafik und Benutzeroberfläche.",
68
- "disabled": "Deaktiviert",
69
- "display_sdta": "Zeigen Sie EU-Kunden eine Vereinbarung zur sicheren Datenübertragung an",
70
- "display_sdta_explainer": "Wenn Sie Kunden in der Europäischen Union haben, aktivieren Sie diese Funktion, damit sie sich dafür entscheiden können, ihre Daten an unsere sicheren Server in den Vereinigten Staaten zu senden.",
71
- "display_tos_link": "Zeigen Sie einen Link zu den Allgemeinen Geschäftsbedingungen an",
72
- "display_tos_link_explainer": "Fügen Sie ein Kontrollkästchen ein, um Ihre Kunden zu bitten, Ihren Nutzungsbedingungen zuzustimmen.",
73
- "email": "Email",
74
- "enable_postcode_lookup": "Bieten Sie Städte- und Bundeslandvorschläge basierend auf der Postleitzahl an",
75
- "enabled": "Ermöglicht",
76
- "end_date": "Enddatum",
77
- "end_subscription": "End Subskription",
78
- "end_subscription_explainer": "Ihr Abonnement bleibt bis zum gewählten Enddatum aktiv. Wenn Sie sich entscheiden, dieses Abonnement später fortzusetzen, müssen Sie sich möglicherweise erneut anmelden.",
79
- "expires": "Läuft aus",
80
- "field": "Gebiet",
81
- "field_plural": "Felder",
82
- "first_name": "Vorname",
83
- "foxycomplete": "Standort automatisch vervollständigen",
84
- "foxycomplete_combobox": "Kombinationsfeld",
85
- "foxycomplete_combobox_explainer": "Erweitern Sie, um Optionen zu durchsuchen, geben Sie ein, um zu suchen",
86
- "foxycomplete_disabled": "Deaktiviert",
87
- "foxycomplete_disabled_explainer": "Lassen Sie Kunden eine Option aus einer Liste auswählen",
88
- "foxycomplete_search": "Suche",
89
- "foxycomplete_search_explainer": "Zeigen Sie ein Feld „Suchen während der Eingabe“ an",
90
- "fraud_risk": "Betrugsrisiko: {{ score }}",
91
- "frequency": "$t({{units}}, { \"count\": {{count}} })",
92
- "frequency_label": "Häufigkeit",
93
- "frequency_plural": "$t({{units}}, { \"count\": {{count}} })",
94
- "frontend_developer": "Entwickler für Benutzeroberflächen",
95
- "frontend_developer_explainer": "Verwaltet clientseitigen Code in JS, CSS, HTML usw.",
96
- "full_address": "{{address1}} {{address2}} {{city}} {{region}} {{postal_code}}",
97
- "full_name": "{{first_name}} {{last_name}}",
98
- "ga_account_id": "Account ID",
99
- "ga_account_id_explainer": "Sie finden die ID im Admin-Bereich Ihres Analytics unter Tracking-Info > Tracking-Code.",
100
- "ga_include_on_site": "Über loader.js einbinden",
101
- "ga_include_on_site_explainer": "Aktivieren Sie Google Analytics auf jeder Seite, auf der die Datei loader.js enthalten ist.",
102
- "hidden": "Versteckt",
103
- "hidden_fields": "Versteckte Felder",
104
- "html_template": "HTML-Vorlage",
105
- "invalid_credential_error": "Falsche E-Mail oder falsches Passwort. Bitte überprüfen Sie Ihre Anmeldedaten und versuchen Sie es erneut.",
106
- "is_defined_false": "Nicht definiert",
107
- "is_defined_true": "Definiert",
108
- "item": "Artikel",
109
- "item_plural": "Artikel",
110
- "last_4_digits": "Letzte 4 Stellen",
111
- "last_login_date": "Letzte Anmeldung",
112
- "last_name": "Nachname",
113
- "load_more": "Mehr laden",
114
- "loading_busy": "Wird geladen",
115
- "loading_empty": "Keine Daten",
116
- "loading_end": "Keine Daten mehr",
117
- "loading_error": "Wurde nicht geladen",
118
- "loading_paused": "Unterbrochen",
119
- "location_plural": "Standorte",
120
- "location_url": "Standort (URL)",
121
- "merchant": "Händler",
122
- "merchant_explainer": "Verwaltet Artikel, Finanzen und diesen Laden im Allgemeinen.",
123
- "mfa_remember_device": "Vertrauen Sie diesem Gerät",
124
- "mfa_remember_device_hint": "In Zukunft keinen Bestätigungscode mehr benötigen, wenn Sie sich von diesem Gerät aus anmelden",
125
- "mfa_totp_code": "Einmalcode",
126
- "mfa_totp_code_hint": "Scannen Sie das Bild unten mit Ihrer Authenticator-App, um den Bestätigungscode zu erhalten",
127
- "mfa_totp_code_invalid_error": "Der von Ihnen eingegebene Einmalcode ist ungültig. Bitte versuche es erneut.",
128
- "month": "Monat",
129
- "month_plural": "Monate",
130
- "monthly": "Monatlich",
131
- "monthly_plural": "Jede {{count}} Monate",
132
- "name": "Name",
133
- "new_password": "Neues Passwort",
134
- "new_password_format_error": "Das neue Passwort, das Sie gewählt haben, ist zu schwach. Bitte geben Sie ein sicheres neues Passwort ein.",
135
- "new_password_required_error": "Um Ihr Konto sicher zu halten, ändern Sie bitte Ihr Passwort, bevor Sie sich dieses Mal anmelden.",
136
- "newsletter_subscribe": "Ermöglichen Sie Benutzern, sich für Ihren Newsletter anzumelden",
137
- "newsletter_subscribe_explainer": "Dazu gehört ein Kontrollkästchen an Ihrer Kasse, mit dem Kunden Ihren Newsletter abonnieren können, der in den Transaktionsberichten, der API und den Webhooks verfügbar ist.",
138
- "next_transaction_date": "Nächster Transaktionstermin",
139
- "open_icon": "Öffnen-Symbol",
140
- "operator_equal": "Gleich",
141
- "operator_greaterthan": "Größer als",
142
- "operator_greaterthanorequal": "Größer als oder gleich",
143
- "operator_in": "Einer von",
144
- "operator_isdefined": "Ist definiert",
145
- "operator_lessthan": "Weniger als",
146
- "operator_lessthanorequal": "Weniger als oder gleich",
147
- "operator_not": "Nicht gleich",
148
- "optional": "Optional",
149
- "or": "Oder",
150
- "password": "Passwort",
151
- "payment_method_plural": "Zahlungsmöglichkeiten",
152
- "percent": "{{fraction, percent}}",
153
- "phone": "Telefon",
154
- "postal_code": "Postleitzahl",
155
- "preview": "Vorschau",
156
- "price": "{{amount, price}}",
157
- "price_recurring": "{{amount, price}} $t(frequency, { \"count\": \"{{count}}\", \"units\": \"{{units}}\" })",
158
- "price_twice_a_month": "{{amount, price}} $t(twice_a_month)",
159
- "product_category": "Produktkategorie",
160
- "product_code": "Produktcode",
161
- "product_options": "Produktoptionen",
162
- "product_weight": "Produktgewicht",
163
- "query_builder_group": "Filtergruppe",
164
- "query_builder_rule": "Filter",
165
- "range_from": "Von",
166
- "range_to": "Zu",
167
- "receipt": "Quittung",
168
- "recover_access": "Einmaligen Code erhalten",
169
- "recover_access_hint": "Geben Sie Ihre E-Mail-Adresse ein und wir senden Ihnen ein temporäres Passwort zu",
170
- "recover_access_success": "Erledigt! Bitte prüfen Sie Ihre E-Mail für weitere Anweisungen.",
171
- "region": "Region",
172
- "request": "Anfrage",
173
- "require_consent": "Zustimmung erforderlich, um fortzufahren",
174
- "required": "Erforderlich",
175
- "same_as_shipping": "Genau wie der Versand",
176
- "save": "Speichern",
177
- "shipping": "Versand",
178
- "show_country_flags": "Länderflaggen zeigen",
179
- "show_on_receipt": "Auf Quittung anzeigen",
180
- "sign_in": "Sich anmelden",
181
- "sign_in_hint": "Bitte geben Sie Ihre E-Mail und Ihr Passwort ein",
182
- "sio_account_id": "Write Key",
183
- "sio_account_id_explainer": "Sie finden den Write Key in Ihrer Projekteinrichtungsanleitung oder in den Einstellungen der Quelle.",
184
- "skip_csc_for_saved": "CSC für gespeicherte Karten überspringen",
185
- "skip_csc_for_sso": "CSC für einmaliges Anmelden überspringen",
186
- "sub_enddate": "Enddatum des Abonnements",
187
- "sub_frequency": "Abonnementhäufigkeit",
188
- "sub_nextdate": "Abo nächster Termin",
189
- "sub_startdate": "Startdatum des Abonnements",
190
- "subscription_active": "Nächste Zahlung am {{date, date}}",
191
- "subscription_cancelled": "Beendet am {{date, date}}",
192
- "subscription_failed": "Zahlung fehlgeschlagen am {{date, date}}",
193
- "subscription_plural": "Abonnements",
194
- "subscription_will_be_cancelled": "Wird beendet am {{date, date}}",
195
- "supported_cards": "Karten",
196
- "supported_cards_disclaimer": "Gilt nur für Zahlungsgateways, bei denen der Kunde seine Zahlungskarteninformationen direkt an der Foxy-Kasse eingibt. Ausnahmen: Adyen Embedded, Amazon Pay, Apple Pay, Klarna, Square und Stripe.",
197
- "tax_apply_to_shipping": "Auf Versand anwenden",
198
- "tax_apply_to_shipping_explainer": "Ankreuzen, um diese Steuer auf die Versandkosten anzuwenden.",
199
- "tax_country": "Landessteuer",
200
- "tax_exempt_all_customer_tax_ids": "Alle Kunden mit Steuernummer ausnehmen",
201
- "tax_exempt_all_customer_tax_ids_explainer": "Aktivieren Sie diese Option, um die Steuererhebung für Kunden mit der gespeicherten Steuernummer zu überspringen.",
202
- "tax_global": "Globale Steuer",
203
- "tax_id": "Steuer-ID",
204
- "tax_local": "Ortssteuer",
205
- "tax_rate": "Satz (%)",
206
- "tax_rate_provider": "Preisanbieter",
207
- "tax_rate_provider_default": "Standard (Thomson Reuters; andere)",
208
- "tax_rate_provider_none": "Keine (benutzerdefinierter Tarif)",
209
- "tax_region": "Regionale Steuer",
210
- "tax_union": "Steuer der Europäischen Union",
211
- "tax_use_origin_rates": "Ursprungssteuersätze verwenden",
212
- "tax_use_origin_rates_explainer": "Ankreuzen, um den Steuersatz Ihres Landes zu verwenden, unabhängig davon, wo sich die Kunden befinden.",
213
- "template": "Schablone",
214
- "template_clipboard": "Aus der Zwischenablage",
215
- "template_clipboard_explainer": "Fügen Sie die Vorlage hier ein, um sie zu verwenden",
216
- "template_default": "Standard",
217
- "template_default_explainer": "Verwenden Sie die Standardvorlage",
218
- "template_url": "Von URL",
219
- "template_url_explainer": "Rufen Sie die Vorlage von einer öffentlichen URL ab",
220
- "text_template": "Textvorlage",
221
- "time": "{{value, time}}",
222
- "transaction": "Transaktion",
223
- "transaction_approved": "Zugelassen",
224
- "transaction_authorized": "Autorisiert",
225
- "transaction_captured": "Erfasst",
226
- "transaction_completed": "Abgeschlossen",
227
- "transaction_declined": "Abgelehnt",
228
- "transaction_pending": "Anstehend",
229
- "transaction_plural": "Transaktionen",
230
- "transaction_refunded": "Erstattet",
231
- "transaction_rejected": "Zurückgewiesen",
232
- "transaction_summary": "{{most_expensive_item.name}}",
233
- "transaction_summary_plural": "{{most_expensive_item.name}} und {{count}} mehr",
234
- "transaction_verified": "Überprüft",
235
- "transaction_voided": "Storniert",
236
- "troubleshooting": "Fehlerbehebung",
237
- "troubleshooting_debug": "Protokollieren Sie Debug-Meldungen in der Browser-Konsole",
238
- "troubleshooting_debug_explainer": "Aktivieren Sie diese Option, um console.log()-Aufrufe für unser JS auszulösen, das Ihnen bei der Fehlerbehebung in Ihrem Shop helfen kann.",
239
- "twice_a_month": "Zweimal im Monat",
240
- "type": "Typ",
241
- "type_any": "Feld unbekannten Typs",
242
- "type_attribute": "Schlüsselwertressource",
243
- "type_date": "Datumsfeld",
244
- "type_number": "Numerisches Feld",
245
- "type_string": "Textfeld",
246
- "undo_cancel": "Überprüfung",
247
- "undo_confirm": "Verwerfen",
248
- "undo_header": "Nicht gespeicherte Änderungen",
249
- "undo_message": "Sieht so aus, als hätten Sie Ihre Änderungen nicht gespeichert! Was möchten Sie mit ihnen machen?",
250
- "unknown_error": "Es ist ein unbekannter Fehler aufgetreten. Bitte versuchen Sie es später noch einmal.",
251
- "update": "Aktualisieren",
252
- "update_billing": "Abrechnung aktualisieren",
253
- "update_items": "Bearbeiten",
254
- "v8n_format_error": "Ungültiges Format",
255
- "v8n_invalid_email": "Ungültige E-Mail",
256
- "v8n_required": "Erforderlich",
257
- "v8n_too_long": "Zu lang",
258
- "value": "Wert",
259
- "visibility": "Sichtbarkeit",
260
- "visibility_private": "Nur ich",
261
- "visibility_public": "Jeder",
262
- "visibility_restricted": "Store-Admins",
263
- "week": "Woche",
264
- "week_plural": "Wochen",
265
- "weekly": "Wöchentlich",
266
- "weekly_plural": "Alle {{count}} Wochen",
267
- "year": "Jahr",
268
- "year_plural": "Jahre",
269
- "yearly": "Jährlich",
270
- "yearly_plural": "Alle {{count}} Jahre"
271
- }