@foxy.io/elements 1.11.0-beta.2 → 1.11.0-beta.6

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 (170) hide show
  1. package/dist/cdn/foxy-access-recovery-form.js +1 -1
  2. package/dist/cdn/foxy-address-card.js +4 -4
  3. package/dist/cdn/foxy-address-form.js +1 -1
  4. package/dist/cdn/foxy-applied-tax-card.js +1 -0
  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-custom-field-card.js +1 -0
  11. package/dist/cdn/foxy-custom-field-form.js +1 -0
  12. package/dist/cdn/foxy-customer-api.js +1 -1
  13. package/dist/cdn/foxy-customer-form.js +1 -1
  14. package/dist/cdn/foxy-customer-portal-settings.js +1 -1
  15. package/dist/cdn/foxy-customer-portal.js +2 -2
  16. package/dist/cdn/foxy-customer.js +1 -1
  17. package/dist/cdn/foxy-customers-table.js +1 -1
  18. package/dist/cdn/foxy-discount-card.js +1 -0
  19. package/dist/cdn/foxy-donation.js +1 -1
  20. package/dist/cdn/foxy-error-entry-card.js +1 -1
  21. package/dist/cdn/foxy-form-dialog.js +1 -1
  22. package/dist/cdn/foxy-i18n.js +1 -1
  23. package/dist/cdn/foxy-items-form.js +1 -1
  24. package/dist/cdn/foxy-nucleon-element.js +1 -1
  25. package/dist/cdn/foxy-payment-card.js +1 -0
  26. package/dist/cdn/foxy-payment-method-card.js +1 -1
  27. package/dist/cdn/foxy-sign-in-form.js +1 -230
  28. package/dist/cdn/foxy-spinner.js +2 -2
  29. package/dist/cdn/foxy-subscription-card.js +1 -1
  30. package/dist/cdn/foxy-subscription-form.js +1 -1
  31. package/dist/cdn/foxy-subscriptions-table.js +1 -1
  32. package/dist/cdn/foxy-table.js +1 -1
  33. package/dist/cdn/foxy-transactions-table.js +1 -1
  34. package/dist/cdn/foxy-user-form.js +1 -1
  35. package/dist/cdn/foxy-users-table.js +1 -1
  36. package/dist/cdn/shared-00355097.js +1 -0
  37. package/dist/cdn/shared-050576d4.js +15 -0
  38. package/dist/cdn/{shared-96de56d4.js → shared-0f4c8011.js} +1 -1
  39. package/dist/cdn/shared-2de00e0b.js +1 -0
  40. package/dist/cdn/{shared-497fd63c.js → shared-30016bf0.js} +1 -1
  41. package/dist/cdn/{shared-851b97ef.js → shared-3b229cce.js} +1 -1
  42. package/dist/cdn/shared-3d3d419e.js +1 -0
  43. package/dist/cdn/{shared-bf28ab5e.js → shared-3f710b92.js} +1 -1
  44. package/dist/cdn/{shared-aac9fed8.js → shared-5873e293.js} +1 -1
  45. package/dist/cdn/{shared-43316b66.js → shared-6a9e83d7.js} +1 -1
  46. package/dist/cdn/{shared-bba615b8.js → shared-73252961.js} +19 -19
  47. package/dist/cdn/{shared-84203d52.js → shared-73401142.js} +1 -1
  48. package/dist/cdn/shared-75c86771.js +1 -0
  49. package/dist/cdn/{shared-a5fbfdc7.js → shared-7dbbc98e.js} +1 -1
  50. package/dist/cdn/shared-7dda002f.js +1 -0
  51. package/dist/cdn/{shared-090432b4.js → shared-7f726bf5.js} +1 -1
  52. package/dist/cdn/{shared-525dd8c8.js → shared-8953096d.js} +1 -1
  53. package/dist/cdn/{shared-1e8cda7a.js → shared-897c8104.js} +1 -1
  54. package/dist/cdn/{shared-b0c39c37.js → shared-8caad813.js} +1 -1
  55. package/dist/cdn/{shared-23966eed.js → shared-8d210ad5.js} +1 -1
  56. package/dist/cdn/{shared-5ad54678.js → shared-9248217c.js} +1 -1
  57. package/dist/cdn/{shared-f06d08d5.js → shared-997e696f.js} +1 -1
  58. package/dist/cdn/{shared-a7709d26.js → shared-9bbb65af.js} +1 -1
  59. package/dist/cdn/shared-9fd917e7.js +1 -0
  60. package/dist/cdn/{shared-69d0ca61.js → shared-aa607c54.js} +1 -1
  61. package/dist/cdn/shared-bfba2bef.js +1 -0
  62. package/dist/cdn/{shared-9f78e096.js → shared-c5659975.js} +1 -1
  63. package/dist/cdn/{shared-e058cb87.js → shared-deb50049.js} +1 -1
  64. package/dist/cdn/shared-e762082b.js +1 -0
  65. package/dist/cdn/shared-f4119f12.js +230 -0
  66. package/dist/cdn/translations/shared/de.json +2 -0
  67. package/dist/cdn/translations/shared/en.json +3 -0
  68. package/dist/cdn/translations/shared/es.json +2 -0
  69. package/dist/elements/public/AddressCard/AddressCard.js +2 -2
  70. package/dist/elements/public/AddressCard/AddressCard.js.map +1 -1
  71. package/dist/elements/public/AppliedTaxCard/AppliedTaxCard.d.ts +25 -0
  72. package/dist/elements/public/AppliedTaxCard/AppliedTaxCard.js +62 -0
  73. package/dist/elements/public/AppliedTaxCard/AppliedTaxCard.js.map +1 -0
  74. package/dist/elements/public/AppliedTaxCard/index.d.ts +5 -0
  75. package/dist/elements/public/AppliedTaxCard/index.js +7 -0
  76. package/dist/elements/public/AppliedTaxCard/index.js.map +1 -0
  77. package/dist/elements/public/AppliedTaxCard/types.d.ts +3 -0
  78. package/dist/elements/public/AppliedTaxCard/types.js +2 -0
  79. package/dist/elements/public/AppliedTaxCard/types.js.map +1 -0
  80. package/dist/elements/public/AttributeCard/AttributeCard.js +4 -8
  81. package/dist/elements/public/AttributeCard/AttributeCard.js.map +1 -1
  82. package/dist/elements/public/CollectionPage/CollectionPage.d.ts +2 -0
  83. package/dist/elements/public/CollectionPage/CollectionPage.js +7 -0
  84. package/dist/elements/public/CollectionPage/CollectionPage.js.map +1 -1
  85. package/dist/elements/public/CollectionPage/types.d.ts +3 -0
  86. package/dist/elements/public/CollectionPage/types.js.map +1 -1
  87. package/dist/elements/public/CollectionPages/CollectionPages.d.ts +2 -0
  88. package/dist/elements/public/CollectionPages/CollectionPages.js +7 -0
  89. package/dist/elements/public/CollectionPages/CollectionPages.js.map +1 -1
  90. package/dist/elements/public/CollectionPages/types.d.ts +3 -0
  91. package/dist/elements/public/CollectionPages/types.js.map +1 -1
  92. package/dist/elements/public/CustomFieldCard/CustomFieldCard.d.ts +22 -0
  93. package/dist/elements/public/CustomFieldCard/CustomFieldCard.js +24 -0
  94. package/dist/elements/public/CustomFieldCard/CustomFieldCard.js.map +1 -0
  95. package/dist/elements/public/CustomFieldCard/TwoLineCard.d.ts +29 -0
  96. package/dist/elements/public/CustomFieldCard/TwoLineCard.js +70 -0
  97. package/dist/elements/public/CustomFieldCard/TwoLineCard.js.map +1 -0
  98. package/dist/elements/public/CustomFieldCard/index.d.ts +4 -0
  99. package/dist/elements/public/CustomFieldCard/index.js +6 -0
  100. package/dist/elements/public/CustomFieldCard/index.js.map +1 -0
  101. package/dist/elements/public/CustomFieldCard/types.d.ts +3 -0
  102. package/dist/elements/public/CustomFieldCard/types.js +2 -0
  103. package/dist/elements/public/CustomFieldCard/types.js.map +1 -0
  104. package/dist/elements/public/CustomFieldForm/CustomFieldForm.d.ts +49 -0
  105. package/dist/elements/public/CustomFieldForm/CustomFieldForm.js +235 -0
  106. package/dist/elements/public/CustomFieldForm/CustomFieldForm.js.map +1 -0
  107. package/dist/elements/public/CustomFieldForm/index.d.ts +9 -0
  108. package/dist/elements/public/CustomFieldForm/index.js +11 -0
  109. package/dist/elements/public/CustomFieldForm/index.js.map +1 -0
  110. package/dist/elements/public/CustomFieldForm/types.d.ts +22 -0
  111. package/dist/elements/public/CustomFieldForm/types.js +2 -0
  112. package/dist/elements/public/CustomFieldForm/types.js.map +1 -0
  113. package/dist/elements/public/DiscountCard/DiscountCard.d.ts +25 -0
  114. package/dist/elements/public/DiscountCard/DiscountCard.js +50 -0
  115. package/dist/elements/public/DiscountCard/DiscountCard.js.map +1 -0
  116. package/dist/elements/public/DiscountCard/index.d.ts +5 -0
  117. package/dist/elements/public/DiscountCard/index.js +7 -0
  118. package/dist/elements/public/DiscountCard/index.js.map +1 -0
  119. package/dist/elements/public/DiscountCard/types.d.ts +3 -0
  120. package/dist/elements/public/DiscountCard/types.js +2 -0
  121. package/dist/elements/public/DiscountCard/types.js.map +1 -0
  122. package/dist/elements/public/FormDialog/FormDialog.d.ts +2 -0
  123. package/dist/elements/public/FormDialog/FormDialog.js +4 -0
  124. package/dist/elements/public/FormDialog/FormDialog.js.map +1 -1
  125. package/dist/elements/public/I18n/I18n.d.ts +10 -0
  126. package/dist/elements/public/I18n/I18n.js +13 -0
  127. package/dist/elements/public/I18n/I18n.js.map +1 -1
  128. package/dist/elements/public/I18n/format/index.js +14 -14
  129. package/dist/elements/public/I18n/format/index.js.map +1 -1
  130. package/dist/elements/public/I18n/format/percent.d.ts +6 -0
  131. package/dist/elements/public/I18n/format/percent.js +16 -0
  132. package/dist/elements/public/I18n/format/percent.js.map +1 -0
  133. package/dist/elements/public/I18n/format/price.js +4 -2
  134. package/dist/elements/public/I18n/format/price.js.map +1 -1
  135. package/dist/elements/public/I18n/types.d.ts +7 -0
  136. package/dist/elements/public/I18n/types.js +2 -0
  137. package/dist/elements/public/I18n/types.js.map +1 -0
  138. package/dist/elements/public/NucleonElement/NucleonElement.d.ts +14 -1
  139. package/dist/elements/public/NucleonElement/NucleonElement.js +52 -8
  140. package/dist/elements/public/NucleonElement/NucleonElement.js.map +1 -1
  141. package/dist/elements/public/NucleonElement/serveFromCache.js +11 -6
  142. package/dist/elements/public/NucleonElement/serveFromCache.js.map +1 -1
  143. package/dist/elements/public/PaymentCard/PaymentCard.d.ts +46 -0
  144. package/dist/elements/public/PaymentCard/PaymentCard.js +185 -0
  145. package/dist/elements/public/PaymentCard/PaymentCard.js.map +1 -0
  146. package/dist/elements/public/PaymentCard/index.d.ts +5 -0
  147. package/dist/elements/public/PaymentCard/index.js +7 -0
  148. package/dist/elements/public/PaymentCard/index.js.map +1 -0
  149. package/dist/elements/public/PaymentCard/types.d.ts +17 -0
  150. package/dist/elements/public/PaymentCard/types.js +2 -0
  151. package/dist/elements/public/PaymentCard/types.js.map +1 -0
  152. package/dist/elements/public/SignInForm/SignInForm.d.ts +1 -1
  153. package/dist/elements/public/SignInForm/SignInForm.js.map +1 -1
  154. package/dist/elements/public/Spinner/Spinner.js +1 -1
  155. package/dist/elements/public/Spinner/Spinner.js.map +1 -1
  156. package/dist/elements/public/index.d.ts +5 -0
  157. package/dist/elements/public/index.defined.d.ts +5 -0
  158. package/dist/elements/public/index.defined.js +5 -0
  159. package/dist/elements/public/index.defined.js.map +1 -1
  160. package/dist/elements/public/index.js +5 -0
  161. package/dist/elements/public/index.js.map +1 -1
  162. package/dist/mixins/themeable.js +9 -0
  163. package/dist/mixins/themeable.js.map +1 -1
  164. package/package.json +2 -2
  165. package/dist/cdn/shared-6872bf5c.js +0 -1
  166. package/dist/cdn/shared-750035db.js +0 -15
  167. package/dist/cdn/shared-8057ee9c.js +0 -1
  168. package/dist/cdn/shared-9ba229fb.js +0 -1
  169. package/dist/cdn/shared-a110de43.js +0 -1
  170. package/dist/cdn/shared-c70d9713.js +0 -1
@@ -0,0 +1,22 @@
1
+ import { TemplateResult } from 'lit-html';
2
+ import { Data } from './types';
3
+ import { TwoLineCard } from './TwoLineCard';
4
+ declare const CustomFieldCard_base: typeof TwoLineCard & import("lit-element").Constructor<import("../../../mixins/translatable").TranslatableMixinHost> & {
5
+ defaultNS: string;
6
+ };
7
+ /**
8
+ * Basic card displaying a custom field.
9
+ *
10
+ * @slot title:before
11
+ * @slot title:after
12
+ *
13
+ * @slot subtitle:before
14
+ * @slot subtitle:after
15
+ *
16
+ * @element foxy-custom-field-card
17
+ * @since 1.11.0
18
+ */
19
+ export declare class CustomFieldCard extends CustomFieldCard_base<Data> {
20
+ render(): TemplateResult;
21
+ }
22
+ export {};
@@ -0,0 +1,24 @@
1
+ import { html } from 'lit-html';
2
+ import { TranslatableMixin } from "../../../mixins/translatable.js";
3
+ import { TwoLineCard } from "./TwoLineCard.js";
4
+ /**
5
+ * Basic card displaying a custom field.
6
+ *
7
+ * @slot title:before
8
+ * @slot title:after
9
+ *
10
+ * @slot subtitle:before
11
+ * @slot subtitle:after
12
+ *
13
+ * @element foxy-custom-field-card
14
+ * @since 1.11.0
15
+ */
16
+ export class CustomFieldCard extends TranslatableMixin(TwoLineCard, 'custom-field-card') {
17
+ render() {
18
+ return super.render({
19
+ title: data => html `${data.name}`,
20
+ subtitle: data => html `${data.value}`,
21
+ });
22
+ }
23
+ }
24
+ //# sourceMappingURL=CustomFieldCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomFieldCard.js","sourceRoot":"","sources":["../../../../src/elements/public/CustomFieldCard/CustomFieldCard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,IAAI,EAAE,MAAM,UAAU,CAAC;AAGhD,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,WAAW,EAAE,yBAAsB;AAE5C;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,eAAgB,SAAQ,iBAAiB,CAAC,WAAW,EAAE,mBAAmB,CAAO;IAC5F,MAAM;QACJ,OAAO,KAAK,CAAC,MAAM,CAAC;YAClB,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAA,GAAG,IAAI,CAAC,IAAI,EAAE;YACjC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAA,GAAG,IAAI,CAAC,KAAK,EAAE;SACtC,CAAC,CAAC;IACL,CAAC;CACF","sourcesContent":["import { TemplateResult, html } from 'lit-html';\n\nimport { Data } from './types';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { TwoLineCard } from './TwoLineCard';\n\n/**\n * Basic card displaying a custom field.\n *\n * @slot title:before\n * @slot title:after\n *\n * @slot subtitle:before\n * @slot subtitle:after\n *\n * @element foxy-custom-field-card\n * @since 1.11.0\n */\nexport class CustomFieldCard extends TranslatableMixin(TwoLineCard, 'custom-field-card')<Data> {\n render(): TemplateResult {\n return super.render({\n title: data => html`${data.name}`,\n subtitle: data => html`${data.value}`,\n });\n }\n}\n"]}
@@ -0,0 +1,29 @@
1
+ import { Renderer } from '../../../mixins/configurable';
2
+ import { TemplateResult } from 'lit-html';
3
+ import { HALJSONResource } from '../NucleonElement/types';
4
+ import { NucleonElement } from '../NucleonElement/NucleonElement';
5
+ import { PropertyDeclarations } from 'lit-element';
6
+ export declare type TemplateFn<TData extends HALJSONResource> = (data: TData) => TemplateResult;
7
+ export declare type Templates<TData extends HALJSONResource> = {
8
+ 'title:before'?: Renderer<TData>;
9
+ 'title:after'?: Renderer<TData>;
10
+ 'subtitle:before'?: Renderer<TData>;
11
+ 'subtitle:after'?: Renderer<TData>;
12
+ };
13
+ export declare type RenderOptions<TData extends HALJSONResource> = {
14
+ title: TemplateFn<TData>;
15
+ subtitle: TemplateFn<TData>;
16
+ };
17
+ declare const Base: typeof NucleonElement & {
18
+ styles: import("lit-element").CSSResultArray;
19
+ } & import("lit-element").Constructor<import("../../../mixins/configurable").ConfigurableMixinHost>;
20
+ export declare class TwoLineCard<TData extends HALJSONResource> extends Base<TData> {
21
+ static get properties(): PropertyDeclarations;
22
+ templates: Templates<TData>;
23
+ lang: string;
24
+ ns: string;
25
+ private readonly __renderTitle;
26
+ private readonly __renderSubtitle;
27
+ render(options?: RenderOptions<TData>): TemplateResult;
28
+ }
29
+ export {};
@@ -0,0 +1,70 @@
1
+ import { ConfigurableMixin } from "../../../mixins/configurable.js";
2
+ import { html } from 'lit-html';
3
+ import { NucleonElement } from "../NucleonElement/NucleonElement.js";
4
+ import { ThemeableMixin } from "../../../mixins/themeable.js";
5
+ import { classMap } from "../../../utils/class-map.js";
6
+ const Base = ConfigurableMixin(ThemeableMixin(NucleonElement));
7
+ export class TwoLineCard extends Base {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.templates = {};
11
+ this.lang = '';
12
+ this.ns = '';
13
+ this.__renderTitle = (content) => {
14
+ return html `
15
+ <div data-testid="title">
16
+ ${this.renderTemplateOrSlot('title:before')}
17
+ <div class="text-secondary">${this.data ? content === null || content === void 0 ? void 0 : content(this.data) : ''}&ZeroWidthSpace;</div>
18
+ ${this.renderTemplateOrSlot('title:after')}
19
+ </div>
20
+ `;
21
+ };
22
+ this.__renderSubtitle = (content) => {
23
+ return html `
24
+ <div data-testid="subtitle">
25
+ ${this.renderTemplateOrSlot('subtitle:before')}
26
+ <div class="font-semibold">${this.data ? content === null || content === void 0 ? void 0 : content(this.data) : ''}&ZeroWidthSpace;</div>
27
+ ${this.renderTemplateOrSlot('subtitle:after')}
28
+ </div>
29
+ `;
30
+ };
31
+ }
32
+ static get properties() {
33
+ return {
34
+ ...super.properties,
35
+ lang: { type: String },
36
+ ns: { type: String },
37
+ };
38
+ }
39
+ render(options) {
40
+ var _a, _b;
41
+ const hiddenSelector = this.hiddenSelector;
42
+ return html `
43
+ <div
44
+ aria-live="polite"
45
+ aria-busy=${!this.data && this.in('busy')}
46
+ class="relative text-body text-s font-lumo leading-m"
47
+ >
48
+ ${hiddenSelector.matches('title', true) ? '' : this.__renderTitle(options === null || options === void 0 ? void 0 : options.title)}
49
+ ${hiddenSelector.matches('subtitle', true) ? '' : this.__renderSubtitle(options === null || options === void 0 ? void 0 : options.subtitle)}
50
+
51
+ <div
52
+ class=${classMap({
53
+ 'transition duration-250 ease-in-out absolute inset-0 flex': true,
54
+ 'opacity-0 pointer-events-none': !!this.data,
55
+ })}
56
+ >
57
+ <foxy-spinner
58
+ data-testid="spinner"
59
+ class="m-auto"
60
+ state=${this.in('fail') ? 'error' : this.in({ idle: 'template' }) ? 'empty' : 'busy'}
61
+ lang=${this.lang}
62
+ ns="${this.ns} ${(_b = (_a = customElements.get('foxy-spinner')) === null || _a === void 0 ? void 0 : _a.defaultNS) !== null && _b !== void 0 ? _b : ''}"
63
+ >
64
+ </foxy-spinner>
65
+ </div>
66
+ </div>
67
+ `;
68
+ }
69
+ }
70
+ //# sourceMappingURL=TwoLineCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TwoLineCard.js","sourceRoot":"","sources":["../../../../src/elements/public/CustomFieldCard/TwoLineCard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAY,wCAAqC;AAC3E,OAAO,EAAkB,IAAI,EAAE,MAAM,UAAU,CAAC;AAGhD,OAAO,EAAE,cAAc,EAAE,4CAAyC;AAElE,OAAO,EAAE,cAAc,EAAE,qCAAkC;AAC3D,OAAO,EAAE,QAAQ,EAAE,oCAAiC;AAgBpD,MAAM,IAAI,GAAG,iBAAiB,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC;AAE/D,MAAM,OAAO,WAA2C,SAAQ,IAAW;IAA3E;;QASE,cAAS,GAAqB,EAAE,CAAC;QAEjC,SAAI,GAAG,EAAE,CAAC;QAEV,OAAE,GAAG,EAAE,CAAC;QAES,kBAAa,GAAG,CAAC,OAA2B,EAAE,EAAE;YAC/D,OAAO,IAAI,CAAA;;UAEL,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC;sCACb,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE;UACjE,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC;;KAE7C,CAAC;QACJ,CAAC,CAAC;QAEe,qBAAgB,GAAG,CAAC,OAA2B,EAAE,EAAE;YAClE,OAAO,IAAI,CAAA;;UAEL,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;qCACjB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE;UAChE,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC;;KAEhD,CAAC;QACJ,CAAC,CAAC;IAgCJ,CAAC;IAhEC,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACtB,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SACrB,CAAC;IACJ,CAAC;IA4BD,MAAM,CAAC,OAA8B;;QACnC,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAE3C,OAAO,IAAI,CAAA;;;oBAGK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;;;UAGvC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAC;UAC/E,cAAc,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,CAAC;;;kBAGhF,QAAQ,CAAC;YACf,2DAA2D,EAAE,IAAI;YACjE,+BAA+B,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI;SAC7C,CAAC;;;;;oBAKQ,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;mBAC7E,IAAI,CAAC,IAAI;kBACV,IAAI,CAAC,EAAE,IAAI,YAAA,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,0CAAE,SAAS,mCAAI,EAAE;;;;;KAK3E,CAAC;IACJ,CAAC;CACF","sourcesContent":["import { ConfigurableMixin, Renderer } from '../../../mixins/configurable';\nimport { TemplateResult, html } from 'lit-html';\n\nimport { HALJSONResource } from '../NucleonElement/types';\nimport { NucleonElement } from '../NucleonElement/NucleonElement';\nimport { PropertyDeclarations } from 'lit-element';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { classMap } from '../../../utils/class-map';\n\nexport type TemplateFn<TData extends HALJSONResource> = (data: TData) => TemplateResult;\n\nexport type Templates<TData extends HALJSONResource> = {\n 'title:before'?: Renderer<TData>;\n 'title:after'?: Renderer<TData>;\n 'subtitle:before'?: Renderer<TData>;\n 'subtitle:after'?: Renderer<TData>;\n};\n\nexport type RenderOptions<TData extends HALJSONResource> = {\n title: TemplateFn<TData>;\n subtitle: TemplateFn<TData>;\n};\n\nconst Base = ConfigurableMixin(ThemeableMixin(NucleonElement));\n\nexport class TwoLineCard<TData extends HALJSONResource> extends Base<TData> {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n lang: { type: String },\n ns: { type: String },\n };\n }\n\n templates: Templates<TData> = {};\n\n lang = '';\n\n ns = '';\n\n private readonly __renderTitle = (content?: TemplateFn<TData>) => {\n return html`\n <div data-testid=\"title\">\n ${this.renderTemplateOrSlot('title:before')}\n <div class=\"text-secondary\">${this.data ? content?.(this.data) : ''}&ZeroWidthSpace;</div>\n ${this.renderTemplateOrSlot('title:after')}\n </div>\n `;\n };\n\n private readonly __renderSubtitle = (content?: TemplateFn<TData>) => {\n return html`\n <div data-testid=\"subtitle\">\n ${this.renderTemplateOrSlot('subtitle:before')}\n <div class=\"font-semibold\">${this.data ? content?.(this.data) : ''}&ZeroWidthSpace;</div>\n ${this.renderTemplateOrSlot('subtitle:after')}\n </div>\n `;\n };\n\n render(options?: RenderOptions<TData>): TemplateResult {\n const hiddenSelector = this.hiddenSelector;\n\n return html`\n <div\n aria-live=\"polite\"\n aria-busy=${!this.data && this.in('busy')}\n class=\"relative text-body text-s font-lumo leading-m\"\n >\n ${hiddenSelector.matches('title', true) ? '' : this.__renderTitle(options?.title)}\n ${hiddenSelector.matches('subtitle', true) ? '' : this.__renderSubtitle(options?.subtitle)}\n\n <div\n class=${classMap({\n 'transition duration-250 ease-in-out absolute inset-0 flex': true,\n 'opacity-0 pointer-events-none': !!this.data,\n })}\n >\n <foxy-spinner\n data-testid=\"spinner\"\n class=\"m-auto\"\n state=${this.in('fail') ? 'error' : this.in({ idle: 'template' }) ? 'empty' : 'busy'}\n lang=${this.lang}\n ns=\"${this.ns} ${customElements.get('foxy-spinner')?.defaultNS ?? ''}\"\n >\n </foxy-spinner>\n </div>\n </div>\n `;\n }\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import '../../internal/InternalSandbox/index';
2
+ import '../Spinner/index';
3
+ import { CustomFieldCard } from './CustomFieldCard';
4
+ export { CustomFieldCard };
@@ -0,0 +1,6 @@
1
+ import "../../internal/InternalSandbox/index.js";
2
+ import "../Spinner/index.js";
3
+ import { CustomFieldCard } from "./CustomFieldCard.js";
4
+ customElements.define('foxy-custom-field-card', CustomFieldCard);
5
+ export { CustomFieldCard };
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/CustomFieldCard/index.ts"],"names":[],"mappings":"AAAA,iDAA8C;AAC9C,6BAA0B;AAE1B,OAAO,EAAE,eAAe,EAAE,6BAA0B;AAEpD,cAAc,CAAC,MAAM,CAAC,wBAAwB,EAAE,eAAe,CAAC,CAAC;AAEjE,OAAO,EAAE,eAAe,EAAE,CAAC","sourcesContent":["import '../../internal/InternalSandbox/index';\nimport '../Spinner/index';\n\nimport { CustomFieldCard } from './CustomFieldCard';\n\ncustomElements.define('foxy-custom-field-card', CustomFieldCard);\n\nexport { CustomFieldCard };\n"]}
@@ -0,0 +1,3 @@
1
+ import { Rels } from '@foxy.io/sdk/backend';
2
+ import { Resource } from '@foxy.io/sdk/core';
3
+ export declare type Data = Resource<Rels.CustomField>;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/elements/public/CustomFieldCard/types.ts"],"names":[],"mappings":"","sourcesContent":["import { Rels } from '@foxy.io/sdk/backend';\nimport { Resource } from '@foxy.io/sdk/core';\n\nexport type Data = Resource<Rels.CustomField>;\n"]}
@@ -0,0 +1,49 @@
1
+ import { Data, Templates } from './types';
2
+ import { ScopedElementsMap } from '@open-wc/scoped-elements';
3
+ import { TemplateResult } from 'lit-html';
4
+ import { NucleonElement } from '../NucleonElement/NucleonElement';
5
+ import { NucleonV8N } from '../NucleonElement/types';
6
+ declare const Base: typeof NucleonElement & import("@open-wc/dedupe-mixin").Constructor<import("@open-wc/scoped-elements/src/types").ScopedElementsHost> & {
7
+ styles: import("lit-element").CSSResultArray;
8
+ } & import("lit-element").Constructor<import("../../../mixins/configurable").ConfigurableMixinHost> & import("lit-element").Constructor<import("../../../mixins/translatable").TranslatableMixinHost> & {
9
+ defaultNS: string;
10
+ };
11
+ /**
12
+ * Form element for creating or editing custom fields.
13
+ *
14
+ * @slot name:before
15
+ * @slot name:after
16
+ * @slot value:before
17
+ * @slot value:after
18
+ * @slot visibility:before
19
+ * @slot visibility:after
20
+ * @slot timestamps:before
21
+ * @slot timestamps:after
22
+ * @slot create:before
23
+ * @slot create:after
24
+ * @slot delete:before
25
+ * @slot delete:after
26
+ *
27
+ * @element foxy-custom-field-form
28
+ * @since 1.11.0
29
+ */
30
+ export declare class CustomFieldForm extends Base<Data> {
31
+ static get scopedElements(): ScopedElementsMap;
32
+ static get v8n(): NucleonV8N<Data>;
33
+ templates: Templates;
34
+ private readonly __getValidator;
35
+ private readonly __bindField;
36
+ private readonly __maybeRenderTextField;
37
+ private readonly __renderVisibility;
38
+ private readonly __renderTimestamps;
39
+ private readonly __renderDelete;
40
+ private readonly __renderCreate;
41
+ render(): TemplateResult;
42
+ disconnectedCallback(): void;
43
+ private get __confirmDialog();
44
+ private __getErrorMessage;
45
+ private __handleKeyDown;
46
+ private __handleDeleteClick;
47
+ private __handleConfirmHide;
48
+ }
49
+ export {};
@@ -0,0 +1,235 @@
1
+ import { ScopedElementsMixin } from '@open-wc/scoped-elements';
2
+ import { html } from 'lit-html';
3
+ import { ConfigurableMixin } from "../../../mixins/configurable.js";
4
+ import { NucleonElement } from "../NucleonElement/NucleonElement.js";
5
+ import { PropertyTable } from "../../private/index.js";
6
+ import { ThemeableMixin } from "../../../mixins/themeable.js";
7
+ import { TranslatableMixin } from "../../../mixins/translatable.js";
8
+ import { classMap } from "../../../utils/class-map.js";
9
+ import { ifDefined } from 'lit-html/directives/if-defined';
10
+ import memoize from 'lodash-es/memoize';
11
+ const NS = 'custom-field-form';
12
+ const Base = TranslatableMixin(ConfigurableMixin(ThemeableMixin(ScopedElementsMixin(NucleonElement))), NS);
13
+ /**
14
+ * Form element for creating or editing custom fields.
15
+ *
16
+ * @slot name:before
17
+ * @slot name:after
18
+ * @slot value:before
19
+ * @slot value:after
20
+ * @slot visibility:before
21
+ * @slot visibility:after
22
+ * @slot timestamps:before
23
+ * @slot timestamps:after
24
+ * @slot create:before
25
+ * @slot create:after
26
+ * @slot delete:before
27
+ * @slot delete:after
28
+ *
29
+ * @element foxy-custom-field-form
30
+ * @since 1.11.0
31
+ */
32
+ export class CustomFieldForm extends Base {
33
+ constructor() {
34
+ super(...arguments);
35
+ this.templates = {};
36
+ this.__getValidator = memoize((prefix) => () => {
37
+ return !this.errors.some(err => err.startsWith(prefix));
38
+ });
39
+ this.__bindField = memoize((key) => {
40
+ return (evt) => {
41
+ const target = evt.target;
42
+ this.edit({ [key]: target.value });
43
+ };
44
+ });
45
+ this.__maybeRenderTextField = ({ field }) => {
46
+ var _a, _b;
47
+ const bsid = field.replace(/_/, '-');
48
+ if (this.hiddenSelector.matches(bsid))
49
+ return '';
50
+ return html `
51
+ <div>
52
+ ${this.renderTemplateOrSlot(`${bsid}:before`)}
53
+
54
+ <vaadin-text-field
55
+ class="w-full"
56
+ label=${this.t(field).toString()}
57
+ value=${ifDefined((_b = (_a = this.form) === null || _a === void 0 ? void 0 : _a[field]) === null || _b === void 0 ? void 0 : _b.toString())}
58
+ error-message=${this.__getErrorMessage(field)}
59
+ data-testid=${field}
60
+ .checkValidity=${this.__getValidator(field)}
61
+ ?disabled=${!this.in('idle') || this.disabledSelector.matches(bsid)}
62
+ ?readonly=${this.readonlySelector.matches(bsid)}
63
+ @input=${this.__bindField(field)}
64
+ @keydown=${this.__handleKeyDown}
65
+ >
66
+ </vaadin-text-field>
67
+
68
+ ${this.renderTemplateOrSlot(`${bsid}:after`)}
69
+ </div>
70
+ `;
71
+ };
72
+ this.__renderVisibility = () => {
73
+ const { disabledSelector, form, lang, ns } = this;
74
+ const isDisabled = !this.in('idle') || disabledSelector.matches('visibility', true);
75
+ return html `
76
+ <div>
77
+ ${this.renderTemplateOrSlot('visibility:before')}
78
+
79
+ <vaadin-checkbox ?checked=${!form.is_hidden} ?disabled=${isDisabled}>
80
+ <foxy-i18n lang=${lang} key="show_on_receipt" ns=${ns}></foxy-i18n>
81
+ </vaadin-checkbox>
82
+
83
+ ${this.renderTemplateOrSlot('visibility:after')}
84
+ </div>
85
+ `;
86
+ };
87
+ this.__renderTimestamps = () => {
88
+ const items = ['date_modified', 'date_created'].map(field => ({
89
+ name: this.t(field),
90
+ value: this.t('date', { value: new Date(this.data[field]) }),
91
+ }));
92
+ return html `
93
+ <div>
94
+ ${this.renderTemplateOrSlot('timestamps:before')}
95
+ <x-property-table .items=${items} data-testid="timestamps"></x-property-table>
96
+ ${this.renderTemplateOrSlot('timestamps:after')}
97
+ </div>
98
+ `;
99
+ };
100
+ this.__renderDelete = () => {
101
+ return html `
102
+ <div>
103
+ ${this.renderTemplateOrSlot('delete:before')}
104
+
105
+ <vaadin-button
106
+ class="w-full"
107
+ data-testid="delete"
108
+ theme="error primary"
109
+ ?disabled=${!this.in('idle') || this.disabledSelector.matches('delete', true)}
110
+ @click=${this.__handleDeleteClick}
111
+ >
112
+ <foxy-i18n ns=${this.ns} lang=${this.lang} key="delete"></foxy-i18n>
113
+ </vaadin-button>
114
+
115
+ ${this.renderTemplateOrSlot('delete:after')}
116
+ </div>
117
+ `;
118
+ };
119
+ this.__renderCreate = () => {
120
+ const isTemplateValid = this.in({ idle: { template: { dirty: 'valid' } } });
121
+ const isSnapshotValid = this.in({ idle: { snapshot: { dirty: 'valid' } } });
122
+ const isValid = isTemplateValid || isSnapshotValid;
123
+ return html `
124
+ <div>
125
+ ${this.renderTemplateOrSlot('create:before')}
126
+
127
+ <vaadin-button
128
+ data-testid="create"
129
+ class="w-full"
130
+ theme="success primary"
131
+ ?disabled=${!this.in('idle') || !isValid || this.disabledSelector.matches('create', true)}
132
+ @click=${() => this.submit()}
133
+ >
134
+ <foxy-i18n ns=${this.ns} lang=${this.lang} key="create"></foxy-i18n>
135
+ </vaadin-button>
136
+
137
+ ${this.renderTemplateOrSlot('create:after')}
138
+ </div>
139
+ `;
140
+ };
141
+ }
142
+ static get scopedElements() {
143
+ return {
144
+ 'foxy-internal-confirm-dialog': customElements.get('foxy-internal-confirm-dialog'),
145
+ 'foxy-internal-sandbox': customElements.get('foxy-internal-sandbox'),
146
+ 'vaadin-text-field': customElements.get('vaadin-text-field'),
147
+ 'vaadin-checkbox': customElements.get('vaadin-checkbox'),
148
+ 'x-property-table': PropertyTable,
149
+ 'vaadin-button': customElements.get('vaadin-button'),
150
+ 'foxy-i18n': customElements.get('foxy-i18n'),
151
+ 'foxy-spinner': customElements.get('foxy-spinner'),
152
+ };
153
+ }
154
+ static get v8n() {
155
+ return [
156
+ ({ value }) => (value && value.length > 0) || 'value_required',
157
+ ({ value }) => (value && value.length <= 1000) || 'value_too_long',
158
+ ({ name }) => (name && name.length > 0) || 'name_required',
159
+ ({ name }) => (name && name.length <= 500) || 'name_too_long',
160
+ ];
161
+ }
162
+ render() {
163
+ const { hiddenSelector, data, lang, ns } = this;
164
+ const isBusy = this.in('busy');
165
+ const isFail = this.in('fail');
166
+ return html `
167
+ <foxy-internal-confirm-dialog
168
+ data-testid="confirm"
169
+ message="delete_prompt"
170
+ confirm="delete"
171
+ cancel="cancel"
172
+ header="delete"
173
+ theme="primary error"
174
+ lang=${lang}
175
+ ns=${ns}
176
+ id="confirm"
177
+ @hide=${this.__handleConfirmHide}
178
+ >
179
+ </foxy-internal-confirm-dialog>
180
+
181
+ <div class="relative" aria-busy=${this.in('busy')} aria-live="polite">
182
+ <div class="grid grid-cols-1 gap-l">
183
+ ${this.__maybeRenderTextField({ field: 'name' })}
184
+ ${this.__maybeRenderTextField({ field: 'value' })}
185
+ ${hiddenSelector.matches('visibility', true) ? '' : this.__renderVisibility()}
186
+ ${hiddenSelector.matches('timestamps', true) || !data ? '' : this.__renderTimestamps()}
187
+ ${hiddenSelector.matches('delete', true) || !data ? '' : this.__renderDelete()}
188
+ ${hiddenSelector.matches('create', true) || data ? '' : this.__renderCreate()}
189
+ </div>
190
+
191
+ <div
192
+ data-testid="spinner"
193
+ class=${classMap({
194
+ 'transition duration-500 ease-in-out absolute inset-0 flex': true,
195
+ 'opacity-0 pointer-events-none': !isBusy && !isFail,
196
+ })}
197
+ >
198
+ <foxy-spinner
199
+ layout="vertical"
200
+ class="m-auto p-m bg-base shadow-xs rounded-t-l rounded-b-l"
201
+ state=${isFail ? 'error' : isBusy ? 'busy' : 'empty'}
202
+ lang=${lang}
203
+ ns=${ns}
204
+ >
205
+ </foxy-spinner>
206
+ </div>
207
+ </div>
208
+ `;
209
+ }
210
+ disconnectedCallback() {
211
+ var _a, _b, _c, _d;
212
+ super.disconnectedCallback();
213
+ (_b = (_a = this.__bindField.cache).clear) === null || _b === void 0 ? void 0 : _b.call(_a);
214
+ (_d = (_c = this.__getValidator.cache).clear) === null || _d === void 0 ? void 0 : _d.call(_c);
215
+ }
216
+ get __confirmDialog() {
217
+ return this.renderRoot.querySelector('#confirm');
218
+ }
219
+ __getErrorMessage(prefix) {
220
+ const error = this.errors.find(err => err.startsWith(prefix));
221
+ return error ? this.t(error.replace(prefix, 'v8n')).toString() : '';
222
+ }
223
+ __handleKeyDown(evt) {
224
+ if (evt.key === 'Enter')
225
+ this.submit();
226
+ }
227
+ __handleDeleteClick(evt) {
228
+ this.__confirmDialog.show(evt.currentTarget);
229
+ }
230
+ __handleConfirmHide(evt) {
231
+ if (!evt.detail.cancelled)
232
+ this.delete();
233
+ }
234
+ }
235
+ //# sourceMappingURL=CustomFieldForm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomFieldForm.js","sourceRoot":"","sources":["../../../../src/elements/public/CustomFieldForm/CustomFieldForm.ts"],"names":[],"mappings":"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","sourcesContent":["import { Data, Templates, TextFieldParams } from './types';\nimport { ScopedElementsMap, ScopedElementsMixin } from '@open-wc/scoped-elements';\nimport { TemplateResult, html } from 'lit-html';\n\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { DialogHideEvent } from '../../private/Dialog/DialogHideEvent';\nimport { InternalConfirmDialog } from '../../internal/InternalConfirmDialog/InternalConfirmDialog';\nimport { NucleonElement } from '../NucleonElement/NucleonElement';\nimport { NucleonV8N } from '../NucleonElement/types';\nimport { PropertyTable } from '../../private/index';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { classMap } from '../../../utils/class-map';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport memoize from 'lodash-es/memoize';\n\nconst NS = 'custom-field-form';\nconst Base = TranslatableMixin(\n ConfigurableMixin(ThemeableMixin(ScopedElementsMixin(NucleonElement))),\n NS\n);\n\n/**\n * Form element for creating or editing custom fields.\n *\n * @slot name:before\n * @slot name:after\n * @slot value:before\n * @slot value:after\n * @slot visibility:before\n * @slot visibility:after\n * @slot timestamps:before\n * @slot timestamps:after\n * @slot create:before\n * @slot create:after\n * @slot delete:before\n * @slot delete:after\n *\n * @element foxy-custom-field-form\n * @since 1.11.0\n */\nexport class CustomFieldForm extends Base<Data> {\n static get scopedElements(): ScopedElementsMap {\n return {\n 'foxy-internal-confirm-dialog': customElements.get('foxy-internal-confirm-dialog'),\n 'foxy-internal-sandbox': customElements.get('foxy-internal-sandbox'),\n 'vaadin-text-field': customElements.get('vaadin-text-field'),\n 'vaadin-checkbox': customElements.get('vaadin-checkbox'),\n 'x-property-table': PropertyTable,\n 'vaadin-button': customElements.get('vaadin-button'),\n 'foxy-i18n': customElements.get('foxy-i18n'),\n 'foxy-spinner': customElements.get('foxy-spinner'),\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ value }) => (value && value.length > 0) || 'value_required',\n ({ value }) => (value && value.length <= 1000) || 'value_too_long',\n ({ name }) => (name && name.length > 0) || 'name_required',\n ({ name }) => (name && name.length <= 500) || 'name_too_long',\n ];\n }\n\n templates: Templates = {};\n\n private readonly __getValidator = memoize((prefix: string) => () => {\n return !this.errors.some(err => err.startsWith(prefix));\n });\n\n private readonly __bindField = memoize((key: keyof Data) => {\n return (evt: CustomEvent) => {\n const target = evt.target as HTMLInputElement;\n this.edit({ [key]: target.value });\n };\n });\n\n private readonly __maybeRenderTextField = ({ field }: TextFieldParams) => {\n const bsid = field.replace(/_/, '-');\n if (this.hiddenSelector.matches(bsid)) return '';\n\n return html`\n <div>\n ${this.renderTemplateOrSlot(`${bsid}:before`)}\n\n <vaadin-text-field\n class=\"w-full\"\n label=${this.t(field).toString()}\n value=${ifDefined(this.form?.[field]?.toString())}\n error-message=${this.__getErrorMessage(field)}\n data-testid=${field}\n .checkValidity=${this.__getValidator(field)}\n ?disabled=${!this.in('idle') || this.disabledSelector.matches(bsid)}\n ?readonly=${this.readonlySelector.matches(bsid)}\n @input=${this.__bindField(field)}\n @keydown=${this.__handleKeyDown}\n >\n </vaadin-text-field>\n\n ${this.renderTemplateOrSlot(`${bsid}:after`)}\n </div>\n `;\n };\n\n private readonly __renderVisibility = () => {\n const { disabledSelector, form, lang, ns } = this;\n const isDisabled = !this.in('idle') || disabledSelector.matches('visibility', true);\n\n return html`\n <div>\n ${this.renderTemplateOrSlot('visibility:before')}\n\n <vaadin-checkbox ?checked=${!form.is_hidden} ?disabled=${isDisabled}>\n <foxy-i18n lang=${lang} key=\"show_on_receipt\" ns=${ns}></foxy-i18n>\n </vaadin-checkbox>\n\n ${this.renderTemplateOrSlot('visibility:after')}\n </div>\n `;\n };\n\n private readonly __renderTimestamps = () => {\n const items = (['date_modified', 'date_created'] as const).map(field => ({\n name: this.t(field),\n value: this.t('date', { value: new Date(this.data![field]) }),\n }));\n\n return html`\n <div>\n ${this.renderTemplateOrSlot('timestamps:before')}\n <x-property-table .items=${items} data-testid=\"timestamps\"></x-property-table>\n ${this.renderTemplateOrSlot('timestamps:after')}\n </div>\n `;\n };\n\n private readonly __renderDelete = () => {\n return html`\n <div>\n ${this.renderTemplateOrSlot('delete:before')}\n\n <vaadin-button\n class=\"w-full\"\n data-testid=\"delete\"\n theme=\"error primary\"\n ?disabled=${!this.in('idle') || this.disabledSelector.matches('delete', true)}\n @click=${this.__handleDeleteClick}\n >\n <foxy-i18n ns=${this.ns} lang=${this.lang} key=\"delete\"></foxy-i18n>\n </vaadin-button>\n\n ${this.renderTemplateOrSlot('delete:after')}\n </div>\n `;\n };\n\n private readonly __renderCreate = () => {\n const isTemplateValid = this.in({ idle: { template: { dirty: 'valid' } } });\n const isSnapshotValid = this.in({ idle: { snapshot: { dirty: 'valid' } } });\n const isValid = isTemplateValid || isSnapshotValid;\n\n return html`\n <div>\n ${this.renderTemplateOrSlot('create:before')}\n\n <vaadin-button\n data-testid=\"create\"\n class=\"w-full\"\n theme=\"success primary\"\n ?disabled=${!this.in('idle') || !isValid || this.disabledSelector.matches('create', true)}\n @click=${() => this.submit()}\n >\n <foxy-i18n ns=${this.ns} lang=${this.lang} key=\"create\"></foxy-i18n>\n </vaadin-button>\n\n ${this.renderTemplateOrSlot('create:after')}\n </div>\n `;\n };\n\n render(): TemplateResult {\n const { hiddenSelector, data, lang, ns } = this;\n const isBusy = this.in('busy');\n const isFail = this.in('fail');\n\n return html`\n <foxy-internal-confirm-dialog\n data-testid=\"confirm\"\n message=\"delete_prompt\"\n confirm=\"delete\"\n cancel=\"cancel\"\n header=\"delete\"\n theme=\"primary error\"\n lang=${lang}\n ns=${ns}\n id=\"confirm\"\n @hide=${this.__handleConfirmHide}\n >\n </foxy-internal-confirm-dialog>\n\n <div class=\"relative\" aria-busy=${this.in('busy')} aria-live=\"polite\">\n <div class=\"grid grid-cols-1 gap-l\">\n ${this.__maybeRenderTextField({ field: 'name' })}\n ${this.__maybeRenderTextField({ field: 'value' })}\n ${hiddenSelector.matches('visibility', true) ? '' : this.__renderVisibility()}\n ${hiddenSelector.matches('timestamps', true) || !data ? '' : this.__renderTimestamps()}\n ${hiddenSelector.matches('delete', true) || !data ? '' : this.__renderDelete()}\n ${hiddenSelector.matches('create', true) || data ? '' : this.__renderCreate()}\n </div>\n\n <div\n data-testid=\"spinner\"\n class=${classMap({\n 'transition duration-500 ease-in-out absolute inset-0 flex': true,\n 'opacity-0 pointer-events-none': !isBusy && !isFail,\n })}\n >\n <foxy-spinner\n layout=\"vertical\"\n class=\"m-auto p-m bg-base shadow-xs rounded-t-l rounded-b-l\"\n state=${isFail ? 'error' : isBusy ? 'busy' : 'empty'}\n lang=${lang}\n ns=${ns}\n >\n </foxy-spinner>\n </div>\n </div>\n `;\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this.__bindField.cache.clear?.();\n this.__getValidator.cache.clear?.();\n }\n\n private get __confirmDialog(): InternalConfirmDialog {\n return this.renderRoot.querySelector('#confirm') as InternalConfirmDialog;\n }\n\n private __getErrorMessage(prefix: string) {\n const error = this.errors.find(err => err.startsWith(prefix));\n return error ? this.t(error.replace(prefix, 'v8n')).toString() : '';\n }\n\n private __handleKeyDown(evt: KeyboardEvent) {\n if (evt.key === 'Enter') this.submit();\n }\n\n private __handleDeleteClick(evt: Event) {\n this.__confirmDialog.show(evt.currentTarget as HTMLElement);\n }\n\n private __handleConfirmHide(evt: DialogHideEvent) {\n if (!evt.detail.cancelled) this.delete();\n }\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import '@vaadin/vaadin-text-field';
2
+ import '@vaadin/vaadin-checkbox';
3
+ import '@vaadin/vaadin-button';
4
+ import '../../internal/InternalConfirmDialog/index';
5
+ import '../../internal/InternalSandbox/index';
6
+ import '../Spinner/index';
7
+ import '../I18n/index';
8
+ import { CustomFieldForm } from './CustomFieldForm';
9
+ export { CustomFieldForm };
@@ -0,0 +1,11 @@
1
+ import '@vaadin/vaadin-text-field';
2
+ import '@vaadin/vaadin-checkbox';
3
+ import '@vaadin/vaadin-button';
4
+ import "../../internal/InternalConfirmDialog/index.js";
5
+ import "../../internal/InternalSandbox/index.js";
6
+ import "../Spinner/index.js";
7
+ import "../I18n/index.js";
8
+ import { CustomFieldForm } from "./CustomFieldForm.js";
9
+ customElements.define('foxy-custom-field-form', CustomFieldForm);
10
+ export { CustomFieldForm };
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/CustomFieldForm/index.ts"],"names":[],"mappings":"AAAA,OAAO,2BAA2B,CAAC;AACnC,OAAO,yBAAyB,CAAC;AACjC,OAAO,uBAAuB,CAAC;AAC/B,uDAAoD;AACpD,iDAA8C;AAC9C,6BAA0B;AAC1B,0BAAuB;AAEvB,OAAO,EAAE,eAAe,EAAE,6BAA0B;AAEpD,cAAc,CAAC,MAAM,CAAC,wBAAwB,EAAE,eAAe,CAAC,CAAC;AAEjE,OAAO,EAAE,eAAe,EAAE,CAAC","sourcesContent":["import '@vaadin/vaadin-text-field';\nimport '@vaadin/vaadin-checkbox';\nimport '@vaadin/vaadin-button';\nimport '../../internal/InternalConfirmDialog/index';\nimport '../../internal/InternalSandbox/index';\nimport '../Spinner/index';\nimport '../I18n/index';\n\nimport { CustomFieldForm } from './CustomFieldForm';\n\ncustomElements.define('foxy-custom-field-form', CustomFieldForm);\n\nexport { CustomFieldForm };\n"]}
@@ -0,0 +1,22 @@
1
+ import { CustomFieldForm } from './CustomFieldForm';
2
+ import { Rels } from '@foxy.io/sdk/backend';
3
+ import { Renderer } from '../../../mixins/configurable';
4
+ import { Resource } from '@foxy.io/sdk/core';
5
+ export declare type Data = Resource<Rels.CustomField>;
6
+ export declare type TextFieldParams = {
7
+ field: keyof Data;
8
+ };
9
+ export declare type Templates = {
10
+ 'name:before'?: Renderer<CustomFieldForm>;
11
+ 'name:after'?: Renderer<CustomFieldForm>;
12
+ 'value:before'?: Renderer<CustomFieldForm>;
13
+ 'value:after'?: Renderer<CustomFieldForm>;
14
+ 'visibility:before'?: Renderer<CustomFieldForm>;
15
+ 'visibility:after'?: Renderer<CustomFieldForm>;
16
+ 'timestamps:before'?: Renderer<CustomFieldForm>;
17
+ 'timestamps:after'?: Renderer<CustomFieldForm>;
18
+ 'delete:before'?: Renderer<CustomFieldForm>;
19
+ 'delete:after'?: Renderer<CustomFieldForm>;
20
+ 'create:before'?: Renderer<CustomFieldForm>;
21
+ 'create:after'?: Renderer<CustomFieldForm>;
22
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/elements/public/CustomFieldForm/types.ts"],"names":[],"mappings":"","sourcesContent":["import { CustomFieldForm } from './CustomFieldForm';\nimport { Rels } from '@foxy.io/sdk/backend';\nimport { Renderer } from '../../../mixins/configurable';\nimport { Resource } from '@foxy.io/sdk/core';\n\nexport type Data = Resource<Rels.CustomField>;\nexport type TextFieldParams = { field: keyof Data };\nexport type Templates = {\n 'name:before'?: Renderer<CustomFieldForm>;\n 'name:after'?: Renderer<CustomFieldForm>;\n 'value:before'?: Renderer<CustomFieldForm>;\n 'value:after'?: Renderer<CustomFieldForm>;\n 'visibility:before'?: Renderer<CustomFieldForm>;\n 'visibility:after'?: Renderer<CustomFieldForm>;\n 'timestamps:before'?: Renderer<CustomFieldForm>;\n 'timestamps:after'?: Renderer<CustomFieldForm>;\n 'delete:before'?: Renderer<CustomFieldForm>;\n 'delete:after'?: Renderer<CustomFieldForm>;\n 'create:before'?: Renderer<CustomFieldForm>;\n 'create:after'?: Renderer<CustomFieldForm>;\n};\n"]}
@@ -0,0 +1,25 @@
1
+ import { TemplateResult } from 'lit-html';
2
+ import { Data } from './types';
3
+ import { TwoLineCard } from '../CustomFieldCard/TwoLineCard';
4
+ declare const DiscountCard_base: typeof TwoLineCard & import("lit-element").Constructor<import("../../../mixins/translatable").TranslatableMixinHost> & {
5
+ defaultNS: string;
6
+ };
7
+ /**
8
+ * Basic card displaying a discount.
9
+ *
10
+ * @slot title:before
11
+ * @slot title:after
12
+ *
13
+ * @slot subtitle:before
14
+ * @slot subtitle:after
15
+ *
16
+ * @element foxy-discount-card
17
+ * @since 1.11.0
18
+ */
19
+ export declare class DiscountCard extends DiscountCard_base<Data> {
20
+ private __currencyDisplay;
21
+ private __currency;
22
+ render(): TemplateResult;
23
+ protected _sendGet(): Promise<Data>;
24
+ }
25
+ export {};