@foxy.io/elements 1.13.0-beta.3 → 1.14.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cdn/foxy-access-recovery-form.js +1 -1
- package/dist/cdn/foxy-address-card.js +1 -1
- package/dist/cdn/foxy-address-form.js +1 -1
- package/dist/cdn/foxy-applied-tax-card.js +1 -1
- package/dist/cdn/foxy-attribute-card.js +1 -1
- package/dist/cdn/foxy-attribute-form.js +1 -1
- package/dist/cdn/foxy-cancellation-form.js +1 -1
- package/dist/cdn/foxy-collection-page.js +1 -1
- package/dist/cdn/foxy-collection-pages.js +1 -1
- package/dist/cdn/foxy-custom-field-card.js +1 -1
- package/dist/cdn/foxy-custom-field-form.js +1 -1
- package/dist/cdn/foxy-customer-api.js +1 -1
- package/dist/cdn/foxy-customer-card.js +1 -1
- package/dist/cdn/foxy-customer-form.js +1 -1
- package/dist/cdn/foxy-customer-portal-settings.js +2 -2
- package/dist/cdn/foxy-customer-portal.js +1 -1
- package/dist/cdn/foxy-customer.js +1 -1
- package/dist/cdn/foxy-customers-table.js +1 -1
- package/dist/cdn/foxy-discount-card.js +1 -1
- package/dist/cdn/foxy-donation.js +1 -1
- package/dist/cdn/foxy-email-template-form.js +1 -0
- package/dist/cdn/foxy-error-entry-card.js +1 -1
- package/dist/cdn/foxy-form-dialog.js +1 -1
- package/dist/cdn/foxy-i18n.js +1 -1
- package/dist/cdn/foxy-items-form.js +1 -1
- package/dist/cdn/foxy-nucleon-element.js +1 -1
- package/dist/cdn/foxy-payment-card.js +1 -1
- package/dist/cdn/foxy-payment-method-card.js +1 -1
- package/dist/cdn/foxy-query-builder.js +2 -2
- package/dist/cdn/foxy-sign-in-form.js +1 -1
- package/dist/cdn/foxy-spinner.js +2 -2
- package/dist/cdn/foxy-subscription-card.js +1 -1
- package/dist/cdn/foxy-subscription-form.js +24 -7
- package/dist/cdn/foxy-subscriptions-table.js +1 -1
- package/dist/cdn/foxy-table.js +1 -1
- package/dist/cdn/foxy-tax-card.js +1 -1
- package/dist/cdn/foxy-tax-form.js +1 -1
- package/dist/cdn/foxy-template-form.js +1 -0
- package/dist/cdn/foxy-transaction-card.js +1 -1
- package/dist/cdn/foxy-transactions-table.js +1 -1
- package/dist/cdn/foxy-user-form.js +1 -1
- package/dist/cdn/foxy-users-table.js +1 -1
- package/dist/cdn/{shared-b98f88c9.js → shared-04b77f79.js} +1 -1
- package/dist/cdn/{shared-bf09e011.js → shared-1108653b.js} +23 -18
- package/dist/cdn/{shared-d4dad105.js → shared-14788132.js} +1 -1
- package/dist/cdn/{shared-54702b33.js → shared-27d93838.js} +1 -1
- package/dist/cdn/shared-2b2b56f6.js +1 -0
- package/dist/cdn/{shared-91a9e922.js → shared-2d99835c.js} +4 -4
- package/dist/cdn/{shared-f47647ac.js → shared-302d8a7b.js} +1 -1
- package/dist/cdn/{shared-5fedf5e4.js → shared-3534b284.js} +2 -2
- package/dist/cdn/shared-3553ff4d.js +1 -0
- package/dist/cdn/{shared-4059f633.js → shared-3e14c0d2.js} +1 -1
- package/dist/cdn/{shared-45d647e4.js → shared-46ee137f.js} +1 -1
- package/dist/cdn/{shared-296637c5.js → shared-4ee97558.js} +1 -1
- package/dist/cdn/{shared-d9159fe1.js → shared-57522229.js} +1 -1
- package/dist/cdn/{shared-2860a3d3.js → shared-59a0cb0f.js} +2 -2
- package/dist/cdn/{shared-cd700eac.js → shared-60126eee.js} +1 -1
- package/dist/cdn/{shared-84fa75d9.js → shared-652ef7fe.js} +1 -1
- package/dist/cdn/{shared-036a8b21.js → shared-72678c5d.js} +1 -1
- package/dist/cdn/shared-7fd12533.js +1 -0
- package/dist/cdn/shared-82dd0556.js +15 -0
- package/dist/cdn/{shared-67157a25.js → shared-84df58e1.js} +1 -1
- package/dist/cdn/{shared-ed4ed7a5.js → shared-8e38d64f.js} +2 -2
- package/dist/cdn/{shared-54c485d2.js → shared-92442eb1.js} +21 -21
- package/dist/cdn/{shared-98ee7fad.js → shared-94c83b2b.js} +1 -1
- package/dist/cdn/{shared-4a990126.js → shared-a0c2bbe0.js} +1 -1
- package/dist/cdn/{shared-e55b6bb7.js → shared-a21a7562.js} +1 -1
- package/dist/cdn/{shared-f0199313.js → shared-a4410f22.js} +1 -1
- package/dist/cdn/{shared-e0248713.js → shared-a71bd9f0.js} +1 -1
- package/dist/cdn/{shared-e9920617.js → shared-acf49ecc.js} +1 -1
- package/dist/cdn/{shared-cf248335.js → shared-b8349f79.js} +1 -1
- package/dist/cdn/{shared-f2cf6cfb.js → shared-bbc97ae0.js} +1 -1
- package/dist/cdn/shared-bec929ac.js +1 -0
- package/dist/cdn/{shared-145cc9eb.js → shared-c7f352fa.js} +5 -5
- package/dist/cdn/{shared-f4119f12.js → shared-d196432b.js} +1 -1
- package/dist/cdn/shared-d19e2399.js +1 -0
- package/dist/cdn/{shared-17968c53.js → shared-d97a6ee5.js} +0 -0
- package/dist/cdn/{shared-3ae39e52.js → shared-dce03b47.js} +3 -3
- package/dist/cdn/{shared-a99dea97.js → shared-dd66b354.js} +1 -1
- package/dist/cdn/{shared-b77179fd.js → shared-e969772e.js} +1 -1
- package/dist/cdn/{shared-e5de8675.js → shared-fda14a3d.js} +1 -1
- package/dist/cdn/{shared-747b0842.js → shared-ff79f3f9.js} +1 -1
- package/dist/cdn/translations/shared/en.json +11 -0
- package/dist/elements/private/Choice/Choice.js +0 -2
- package/dist/elements/private/Choice/Choice.js.map +1 -1
- package/dist/elements/private/I18N/I18N.js +1 -1
- package/dist/elements/private/I18N/I18N.js.map +1 -1
- package/dist/elements/public/AddressForm/AddressForm.js +8 -4
- package/dist/elements/public/AddressForm/AddressForm.js.map +1 -1
- package/dist/elements/public/AttributeForm/AttributeForm.js +8 -4
- package/dist/elements/public/AttributeForm/AttributeForm.js.map +1 -1
- package/dist/elements/public/CustomFieldForm/CustomFieldForm.js +8 -4
- package/dist/elements/public/CustomFieldForm/CustomFieldForm.js.map +1 -1
- package/dist/elements/public/CustomerForm/CustomerForm.js +8 -4
- package/dist/elements/public/CustomerForm/CustomerForm.js.map +1 -1
- package/dist/elements/public/EmailTemplateForm/EmailTemplateForm.d.ts +24 -0
- package/dist/elements/public/EmailTemplateForm/EmailTemplateForm.js +311 -0
- package/dist/elements/public/EmailTemplateForm/EmailTemplateForm.js.map +1 -0
- package/dist/elements/public/EmailTemplateForm/index.d.ts +9 -0
- package/dist/elements/public/EmailTemplateForm/index.js +11 -0
- package/dist/elements/public/EmailTemplateForm/index.js.map +1 -0
- package/dist/elements/public/EmailTemplateForm/types.d.ts +3 -0
- package/dist/elements/public/EmailTemplateForm/types.js +2 -0
- package/dist/elements/public/EmailTemplateForm/types.js.map +1 -0
- package/dist/elements/public/ItemsForm/ItemsForm.js +2 -2
- package/dist/elements/public/ItemsForm/ItemsForm.js.map +1 -1
- package/dist/elements/public/NucleonElement/serveFromCache.js +1 -0
- package/dist/elements/public/NucleonElement/serveFromCache.js.map +1 -1
- package/dist/elements/public/TaxForm/TaxForm.js +8 -4
- package/dist/elements/public/TaxForm/TaxForm.js.map +1 -1
- package/dist/elements/public/TemplateForm/TemplateForm.d.ts +23 -0
- package/dist/elements/public/TemplateForm/TemplateForm.js +303 -0
- package/dist/elements/public/TemplateForm/TemplateForm.js.map +1 -0
- package/dist/elements/public/TemplateForm/index.d.ts +9 -0
- package/dist/elements/public/TemplateForm/index.js +11 -0
- package/dist/elements/public/TemplateForm/index.js.map +1 -0
- package/dist/elements/public/TemplateForm/types.d.ts +3 -0
- package/dist/elements/public/TemplateForm/types.js +2 -0
- package/dist/elements/public/TemplateForm/types.js.map +1 -0
- package/dist/elements/public/index.d.ts +2 -0
- package/dist/elements/public/index.defined.d.ts +2 -0
- package/dist/elements/public/index.defined.js +2 -0
- package/dist/elements/public/index.defined.js.map +1 -1
- package/dist/elements/public/index.js +2 -0
- package/dist/elements/public/index.js.map +1 -1
- package/dist/mixins/themeable.js +43 -12
- package/dist/mixins/themeable.js.map +1 -1
- package/package.json +2 -7
- package/dist/cdn/shared-50744508.js +0 -15
- package/dist/cdn/shared-b0b1d248.js +0 -1
- package/dist/cdn/shared-c0161e6a.js +0 -1
- package/dist/cdn/shared-c1e0e11f.js +0 -1
- package/dist/cdn/shared-dbcffd8e.js +0 -1
- package/dist/cdn/shared-e21a2aac.js +0 -1
|
@@ -198,7 +198,7 @@ export class ItemsForm extends SignableFields {
|
|
|
198
198
|
},
|
|
199
199
|
},
|
|
200
200
|
frequencies: {
|
|
201
|
-
converter:
|
|
201
|
+
converter: value => {
|
|
202
202
|
if (!value) {
|
|
203
203
|
return [];
|
|
204
204
|
}
|
|
@@ -391,7 +391,7 @@ export class ItemsForm extends SignableFields {
|
|
|
391
391
|
this.addItems(itemsArray);
|
|
392
392
|
}
|
|
393
393
|
/** Removes item from the form based on a condition */
|
|
394
|
-
__removeItems(condition = (
|
|
394
|
+
__removeItems(condition = () => true) {
|
|
395
395
|
this.__itemElements.forEach(p => {
|
|
396
396
|
if (condition(p)) {
|
|
397
397
|
p.remove();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ItemsForm.js","sourceRoot":"","sources":["../../../../src/elements/public/ItemsForm/ItemsForm.ts"],"names":[],"mappings":"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","sourcesContent":["import '@vaadin/vaadin-button';\nimport { html, PropertyDeclarations, TemplateResult } from 'lit-element';\nimport { parseDuration } from '../../../utils/parse-duration';\nimport { Dropdown, ErrorScreen } from '../../private/index';\nimport { ItemsFormChangeEvent, ItemsFormSubmitEvent } from './events';\nimport { Item } from './private/Item';\nimport { ItemInterface } from './types';\nimport { SignableFields } from './private/SignableFields';\n\nexport { Item };\n\n/**\n * A custom element providing a customizable donation form.\n *\n * @fires ItemsForm#change - changed form data.\n * @fires ItemsForm#submit - submitted form data\n * @fires ItemsForm#load - ProgressEvent instance with server response\n *\n * @slot items - items to be added to the form.\n *\n * @element foxy-items-form\n *\n */\nexport class ItemsForm extends SignableFields {\n /** @readonly */\n public static get scopedElements(): Record<string, unknown> {\n return {\n 'x-error-screen': ErrorScreen,\n 'vaadin-button': customElements.get('vaadin-button'),\n 'x-dropdown': Dropdown,\n 'x-item': Item,\n };\n }\n\n /** @readonly */\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n currency: { type: String },\n readonly: { type: Boolean },\n cart: {\n type: String, // only accepts checkout or add\n converter: value => {\n if (value && !['checkout', 'add'].includes(value)) {\n return null;\n }\n return value;\n },\n },\n target: { type: String },\n store: { type: String, attribute: 'store' },\n sub_frequency: { type: String },\n sub_startdate: {\n type: String,\n converter: value => {\n if (!ItemsForm.__validDate(value)) {\n console.error('Invalid start date', value);\n return '';\n }\n return value;\n },\n },\n sub_enddate: {\n type: String,\n converter: value => {\n if (!ItemsForm.__validDateFuture(value)) {\n console.error('Invalid end date', value);\n return '';\n }\n return value;\n },\n },\n sub_token: { type: String },\n sub_modify: {\n type: String,\n converter: value => {\n if (value === '' || value === 'append') {\n return '';\n } else {\n return 'replace';\n }\n },\n },\n sub_restart: {\n type: String,\n converter: value => {\n if (value === 'true') {\n return value;\n } else {\n return 'auto';\n }\n },\n },\n frequencies: {\n converter: (value, type) => {\n if (!value) {\n return [];\n }\n const freqArray = JSON.parse(value);\n if (!Array.isArray(freqArray)) {\n console.error('Invalid frequency', `Frequency options must be an array.`);\n return [];\n }\n for (const f of freqArray) {\n if (!ItemsForm.__validFrequency(f)) {\n console.error(\n 'Invalid frequency',\n `Invalid frequency option.\n Please, check https://wiki.foxycart.com/v/2.0/products#subscription_product_options for possible values.\n Each frequency must be a in the format:\n - 1d (a number followed by d, for day)\n - 1w (a number followed by w, for week)\n - 1m (a number followed by m, for month)\n - 1y (a number followed by y, for year)\n or .5m (no other decimals are allowed, and this is only for months)\n `,\n f\n );\n return [];\n }\n }\n return freqArray.filter(ItemsForm.__validFrequency);\n },\n },\n items: { type: Array },\n __hasValidItems: { attribute: false },\n __total: { attribute: false },\n __data: { attribute: false },\n };\n }\n\n /**\n * **Required** store subdomain, It is similar to mystore.foxycart.com,\n * unless you use a custom subdomain.\n *\n * **Examples:** `\"mystore.foxycart.com\"` `\"custom.mycoolstore.com\"`\n */\n public store?: string;\n\n /**\n * **Required** 3-letter lowercase currency code.\n *\n * **Example:** `\"usd\"`\n */\n public currency?: string;\n\n /**\n * Makes the entire form readonly.\n */\n public readonly = false;\n\n /**\n * Defines target of the form\n *\n * This attribute controls the destination window of the form submission.\n */\n public target = '_top';\n\n /**\n * Defines the next cart step\n *\n * It can only be either add or checkout.\n * If \"add\" is chosen, this form will add items to the cart and the user will\n * be directed to the cart with these products added upon submission.\n *\n * If set to \"checkout\" (this is the default) the user will be directed to\n * checkout.\n */\n public cart = 'checkout';\n\n /**\n * Optional frequency string encoded as count (integer) + units (one of: `d`\n * for days, `w` for weeks, `m` for months, `y` for years). A special value\n * for twice a month is also supported: `.5m`. If set, the form will create a\n * subscription with the specified frequency in the cart.\n *\n * **Example:** `\"1m\"`\n */\n public sub_frequency?: string;\n\n /**\n * Optional subscription start date encoded as four integer for the year, two\n * for the month and two for the day. If only two or one digits are provided,\n * it is assumed to be next occurence of that day of the month, from the\n * current date.\n *\n * See [Products wiki for more details](https://wiki.foxycart.com/v/2.0/products#a_complete_list_of_product_parameters)\n *\n * ** Example:** `\"10\"`\n */\n public sub_startdate?: string;\n\n /**\n * Optional subscription token, unique URL of a subscription, retrieved from\n * the API, XML datafeeds or Admin interface.\n */\n public sub_token?: string;\n\n /**\n * Optional. Allows the “add to cart” link or form to completely replace the\n * existing subscription loaded\n *\n * Can be either \"replace\", \"append\" or \"\" (a blank string).\n * Using \"append\" or \"\" will result in adding these items to an existing\n * subscription in addition to the existing ones.\n *\n * The \"append\" value is set for convenience, as it describes the behaviour.\n * The submitted value, in this case, will be \"\". The submitted value, in\n * this case, will be \"\".\n *\n * Using \"replace\" results in replacing the existing subscription with the\n * current itmes.\n * See [Products subscription options](https://wiki.foxycart.com/v/2.0/products/subscriptions#subscription-related_product_options)\n */\n public sub_modify = 'replace';\n\n /**\n * Set to \"true\" to indicate that payment is collectable right now.\n * Set to \"auto\" to indicate that payment is collectable right now if the\n * subscription's past-due amount is greater than 0\n */\n public sub_restart = 'auto';\n\n /**\n * Optional subscription end date encoded as four integer for the year, two\n * for the month and two for the day.\n *\n * The absence of a sub_enddate, together with a sub_frequency, means a\n * subscription with indefinite and date.\n *\n * See [Products wiki for more details](https://wiki.foxycart.com/v/2.0/products#a_complete_list_of_product_parameters)\n *\n * ** Example:** `\"20221010\"`\n */\n public sub_enddate?: string;\n\n /**\n * Optional frequency variants in the same format as `frequency`. If this property is set,\n * the form will render the frequency selection interface. If this array includes\n * the value of the `frequency` property, it will be pre-selected in the form.\n *\n * **Example:** `[\"7d\", \".5m\", \"1y\"]`\n */\n public frequencies: string[] = [];\n\n /**\n * Handles the submission of the form\n *\n * - creates a FormData\n * - fill the FormData with item values\n * - add order wide fields to the FormData\n * - submits the form\n */\n private handleSubmit = {\n handleEvent: () => {\n if (this.__data !== null) {\n if (this.dispatchEvent(new ItemsFormSubmitEvent(this.__data!))) {\n this.shadowRoot!.querySelector('form')!.submit();\n }\n }\n },\n };\n\n private __childItemsObserver?: MutationObserver;\n\n private __hasValidItems = false;\n\n private __total = 0;\n\n /**\n * Handles the user input for frequenty field\n * - converts week, year, day and month into first letter only\n * - removes spaces\n * - removes leading zeroes\n * - validates input as propper frequency option\n **/\n private __handleFrequency = {\n handleEvent: (ev: CustomEvent) => {\n const newfrequency = (ev as CustomEvent).detail\n .replace(/([wydm])\\w*/, '$1')\n .replace(/ /g, '')\n .replace(/^0/, '');\n if (ItemsForm.__validFrequency(newfrequency)) {\n this.sub_frequency = newfrequency;\n } else {\n this.sub_frequency = '';\n }\n this.__updateData();\n },\n };\n\n private __data: FormData | null = new FormData();\n\n constructor() {\n super('items-form');\n this.__childItemsObserver = new MutationObserver(this.__observeChildren.bind(this));\n this.__childItemsObserver.observe(this, {\n childList: true,\n attributes: false,\n subtree: true,\n });\n this.updateComplete.then(() => {\n this.__acknowledgeItemElements();\n this.__computeTotalPrice();\n this.__updateData();\n });\n }\n\n public get items(): ItemInterface[] {\n const temp: ItemInterface[] = [];\n this.__itemElements.forEach(e => {\n const proxy = new Proxy(e, {\n set: function (target: Item, property: string | number | symbol, value) {\n const allowedAttributes = Object.keys(target.value);\n if (typeof property === 'string' && allowedAttributes.includes(property)) {\n (target as unknown as ItemInterface)[property] = value;\n return true;\n } else {\n return false;\n }\n },\n get: function (target: Item, property: string | number) {\n return target.value[property];\n },\n });\n temp.push(proxy as unknown as ItemInterface);\n });\n return temp;\n }\n\n /**\n * Optional an array of ItemInterface objects with at least the following properties:\n * - name: the name of the item\n * - price: the price of each of this item\n * The following optional properties will be used:\n * - quantity: (defaults to 1) how many of each item are added to the form\n * - image: an image url to be displayed in the form for this item\n * - items: an array of other items that are to be treated as bundled with this item\n * - signatures: an object containing a key value list of previously generated HMAC validation codes\n *\n * Other item properties are accepted and sent to foxy cart\n * See [Products wiki for more details](https://wiki.foxycart.com/v/2.0/products#a_complete_list_of_product_parameters)\n */\n public set items(value: ItemInterface[]) {\n this.__removeItems();\n this.__createItemsFromItemArray(value);\n }\n\n /**\n * The total value of the items to be submitted.\n */\n public get total(): number {\n return this.__total;\n }\n\n public render(): TemplateResult {\n if (!this.store || !this.currency) {\n return html`<x-error-screen type=\"setup_needed\" class=\"relative\"></x-error-screen>`;\n }\n\n return html`\n <div>\n <form\n class=\"overflow-hidden\"\n method=\"POST\"\n target=\"${this.target}\"\n action=\"https://${this.store}/cart\"\n data-testid=\"form\"\n class=\"hidden\"\n hidden\n >\n ${this.__data\n ? html` ${[...this.__data.entries()].map(\n ([name, value]) => html`<input type=\"hidden\" name=${name} value=${value} />`\n )}`\n : ''}\n </form>\n\n <section class=\"items\">\n <slot></slot>\n </section>\n\n ${!this.readonly\n ? html`\n <section class=\"actions flex flex-wrap justify-end m-m\">\n ${this.frequencies && this.frequencies.length\n ? html`\n <x-dropdown\n type=\"text\"\n name=\"frequency\"\n class=\"subscription m-s w-full sm-w-auto\"\n lang=${this.lang}\n .value=${this.sub_frequency ?? '0'}\n .items=${this.frequencies.concat(['0'])}\n .getText=${this.__translateFrequency.bind(this)}\n @change=${this.__handleFrequency}\n >\n </x-dropdown>\n `\n : ''}\n\n <vaadin-button\n class=\"m-s w-full sm-w-auto\"\n theme=\"primary\"\n data-testid=\"submit\"\n ?disabled=${!this.__hasValidItems}\n @click=${this.handleSubmit}\n >\n <span class=\"total\">\n ${this.__submitBtnText(this.__translateAmount(this.total))}\n </span>\n </vaadin-button>\n </section>\n `\n : ''}\n </div>\n `;\n }\n\n /** Add new items */\n public addItems(newItems: ItemInterface[]): void {\n for (const p of newItems) {\n const newItem = this.createItem(p);\n this.appendChild(newItem);\n this.__acknowledgeItemElement(newItem as Item);\n }\n }\n\n /** Remove items */\n public removeItems(itemIds: number[]): void {\n this.__removeItems((p: Item) => itemIds.includes(p.pid));\n }\n\n public updated(): void {\n this.dispatchEvent(new ItemsFormChangeEvent(this.__data!));\n }\n\n public createItem(p: ItemInterface): Element {\n const scopedItem = (this.constructor as any).getScopedTagName('x-item');\n const newItem = document.createElement(scopedItem);\n newItem.value = p;\n newItem.currency = this.currency;\n newItem.readonly = this.readonly;\n return newItem;\n }\n\n private __submitBtnText(value: string): string {\n if (!this.sub_frequency || this.sub_frequency == '0') {\n return this._t('checkout.buy', { value });\n } else {\n const duration = parseDuration(this.sub_frequency);\n if (duration.count === 1) {\n return this._t('checkout.subscribe_single_unit', {\n value,\n period: this._t(duration.units).toLowerCase(),\n });\n } else {\n return this._t('checkout.subscribe_muiltiple_units', {\n value,\n period: this.__translateFrequency(this.sub_frequency).toLowerCase(),\n });\n }\n }\n }\n\n /**\n * An array with both items created as elements and created parameter\n */\n private get __itemElements(): NodeListOf<Item> {\n return this.querySelectorAll('[data-item]');\n }\n\n /** Create child Items from items array\n */\n private __createItemsFromItemArray(itemsArray: ItemInterface[]) {\n this.addItems(itemsArray);\n }\n\n /** Removes item from the form based on a condition */\n private __removeItems(condition = (e: Item) => true) {\n this.__itemElements.forEach(p => {\n if (condition(p)) {\n p.remove();\n }\n });\n }\n\n /**\n * Adds a signature to a post field\n *\n * This method does not compute the signature. It must be provided.\n *\n * @argument string name The name of the field\n * @argument string signature The computed signature to add to the field\n * @argument string open Whether the field value is customized by the user\n * @return string signedName the name of the field with the signature\n */\n private __addSignature(name: string, signature: string, open?: string | boolean): string {\n return `${name}||${signature}${open ? '||open' : ''}`;\n }\n\n /**\n * Add all items from this.__itemElements to a FormData\n *\n * - Iterate of items in itemElements\n * - Add valid items to Form Data\n *\n * @argument FormData fd the FormData instance to fill\n * @return number the number of items added\n **/\n private __formDataFill(fd: FormData): number {\n let added = 0;\n this.__itemElements.forEach(e => {\n added += this.__formDataAddItem(fd, e);\n });\n this.__formDataAddCartWideSubscriptionFields(fd);\n return added;\n }\n\n /**\n * Add custom user provided fields\n */\n private __formDataCustomInputs(fd: FormData) {\n this.querySelectorAll(`[name]`).forEach(e => {\n const el = e as HTMLInputElement;\n if (el.tagName == 'INPUT' && ['checkbox', 'radio'].includes(el.type)) {\n if (!el.checked) return;\n }\n if (el.tagName == 'OPTION') {\n return;\n }\n if (el.value && ['number', 'string'].includes(typeof el.value)) {\n fd.set(el.name, el.value);\n }\n });\n }\n\n // Reserved attributes are not to be submitted\n // other attributes, included custom attributes added by the user, will be submitted\n private __isAttributeReserved(attribute: string): boolean {\n const reservedAttributes = [\n 'alt',\n 'currency',\n 'description',\n 'isChildren',\n 'isItem',\n 'items',\n 'open',\n 'pid',\n 'signatures',\n 'slot',\n 'total',\n ];\n return reservedAttributes.includes(attribute);\n }\n\n /**\n * Adds a item to a form data\n *\n * @argument {FormData} fd the FormData to which the item will be added\n * @argument {Item} the item to add\n **/\n private __formDataAddItem(fd: FormData, itemEl: Item, parent: Item | null = null): number {\n let added = 0;\n if (this.__validItem(itemEl)) {\n if (!itemEl.value['pid']) {\n throw new Error('Attempt to convert a item without a propper ID');\n }\n if (parent && parent.getAttribute('code')) {\n itemEl.setAttribute('parent_code', parent.getAttribute('code')!);\n }\n for (let i = 0; i < itemEl.attributes.length; i++) {\n const field = itemEl.attributes[i];\n if (!this.__isAttributeReserved(field.name) && !field.name.startsWith('data-')) {\n let fieldValue: unknown = (itemEl as any)[field.name];\n // Adds a signature if possible\n if (itemEl.code && ['string', 'number'].includes(typeof fieldValue)) {\n if (parent && field.name == 'quantity') {\n fieldValue = Number(field.value) * parent.quantity;\n }\n fd.set(itemEl.signedName(field.name), (fieldValue as string | number).toString());\n }\n }\n }\n added += 1;\n this.__formDataAddSubscriptionFields(fd, itemEl);\n }\n const childItems = itemEl.querySelectorAll('[data-bundled]');\n if (childItems && itemEl.quantity > 0) {\n for (const child of childItems) {\n added += this.__formDataAddItem(fd, child as Item, itemEl);\n }\n }\n return added;\n }\n\n /**\n * Adds subscription fields to a FormData\n *\n * @argument {FormData} fd the FormData to which subscription fields will be added\n **/\n private __formDataAddSubscriptionFields(fd: FormData, itemEl: Item): void {\n // added if sub_frequency is set\n if (this.sub_frequency) {\n for (const s of ['sub_frequency', 'sub_startdate', 'sub_enddate']) {\n if ((this as any)[s]) {\n fd.set(itemEl.signedName(s), (this as any)[s]);\n }\n }\n }\n }\n\n /**\n * Adds cart wide subscription fields to a FormData\n *\n * @argument {FormData} fd the FormData to which subscription fields will be added\n */\n private __formDataAddCartWideSubscriptionFields(fd: FormData): void {\n if (this.sub_frequency) {\n // added if itself is set\n if (this.sub_token) fd.set(this.signedName('sub_token'), this.sub_token);\n // added regardless\n fd.set(this.signedName('sub_modify'), this.sub_modify);\n fd.set(this.signedName('sub_restart'), this.sub_restart);\n }\n }\n\n /**\n * Adds cart related fields to a FormData\n *\n * @argument {FormData} fd the FormData to which the cart fields will be added.\n */\n private __formDataAddCartFields(fd: FormData): void {\n if (this.cart) {\n fd.set('cart', this.cart!);\n } else {\n fd.delete('cart');\n }\n }\n\n /**\n * Validates a string for subscription start date or end date according to\n *\n * @argument string strDate the date as a string to be used as start or end date.\n *\n * https://wiki.foxycart.com/v/2.0/products#subscription_product_options\n * See [Products subscription options for more details](https://wiki.foxycart.com/v/2.0/products#subscription_product_options)\n */\n private static __validDate(strDate: string | null | undefined): boolean {\n if (strDate === null || strDate === undefined) {\n return false;\n }\n if (strDate.match(/^(\\d{1,2}|\\d{8})$/)) {\n if (strDate.match(/^\\d{2}$/)) {\n if (Number(strDate) > 31) {\n return false;\n }\n }\n return true;\n }\n if (!strDate.match(/^\\.5m/) && ItemsForm.__validFrequency(strDate)) {\n return true;\n }\n return false;\n }\n\n /**\n * Checks if a string date is in the future.\n *\n * @argument string strdate the date, as a string, to be checked.\n * @returns boolean the date is a valid future date.\n */\n private static __validDateFuture(strDate: string | null | undefined): boolean {\n let valid = false;\n if (ItemsForm.__validDate(strDate)) {\n if (strDate!.match(/^\\d{8}/)) {\n const now = new Date();\n valid = now.toISOString().replace(/(-|T.*)/g, '') <= strDate!;\n } else {\n valid = true;\n }\n }\n return valid;\n }\n\n /**\n * Checks if a frequency complies with possible values\n *\n * @argument string strFrequency the frequency string to be validated.\n * @returns boolean the string is a foxy cart frequency string.\n */\n private static __validFrequency(strFrequency: string | null | undefined): boolean {\n if (!strFrequency) {\n return false;\n } else {\n return !!strFrequency.match(/^(\\.5m|\\d+[dwmy])$/);\n }\n }\n\n /** Subscribe to late inserted items.\n *\n * @argument MutationRecord[] the list of changes occurred.\n **/\n private __observeChildren(mutationList: MutationRecord[]): void {\n mutationList.forEach(m => {\n if (m.type == 'childList') {\n m.addedNodes.forEach(n => {\n const e = n as HTMLElement;\n e.addEventListener('change', this.__itemChange.bind(this));\n });\n }\n });\n this.__acknowledgeItemElements();\n this.__computeTotalPrice();\n this.__updateData();\n }\n\n /** Updates the form on item change */\n private __itemChange(): void {\n this.__computeTotalPrice();\n this.__updateData();\n }\n\n /** Compute the total price of all items in the form */\n private __computeTotalPrice(): void {\n let total = 0;\n this.__itemElements.forEach(e => {\n const item = e as Item;\n if (item.total) {\n total += Number(item.total);\n }\n });\n this.__total = Number(total.toFixed(2));\n }\n\n /** Go through all pcroduct elements and executes acknoledges each one */\n private __acknowledgeItemElements(): void {\n this.__itemElements.forEach((e: Element) => {\n const i = e as Item;\n this.__acknowledgeItemElement(i);\n });\n }\n\n /**\n * Treat this item item element as part of the form:\n *\n * - listen to its change events\n * - set its currency to be the forms currency\n */\n private __acknowledgeItemElement(item: Item) {\n item.addEventListener('change', this.__itemChange.bind(this));\n item.currency = this.currency!;\n }\n\n /**\n * Checks if item has quantity and price\n *\n * @argument Item the item to be validated\n * @returns boolean the item is valid\n **/\n private __validItem(item: Item): boolean {\n const pid = item.getAttribute('pid');\n const qty = Number(item.getAttribute('quantity'));\n const price = Number(item.getAttribute('price'));\n return !!(pid && qty > 0 && price >= 0);\n }\n\n /**\n * Translates a frequency string\n *\n * @argument string the frequency string to be translated\n * @returns string the translated string\n */\n private __translateFrequency(frequency: string) {\n if (frequency.startsWith('0')) return this._t('frequency_once');\n if (frequency === '.5m') return this._t('frequency_0_5m');\n const { count, units } = parseDuration(frequency);\n return this._t('frequency', {\n units: this._t(units, { count }),\n count,\n });\n }\n\n /**\n * Translate a given amount\n *\n * @argument number the amount to be translated\n * @returns string the translated amount\n */\n private __translateAmount(amount: number) {\n return amount.toLocaleString(this.lang, {\n minimumFractionDigits: 2,\n currency: this.currency!,\n style: 'currency',\n });\n }\n\n private __updateData() {\n this.__data = null;\n const form = this.shadowRoot!.querySelector('form');\n if (!form) return;\n const data = new FormData();\n const itemsAdded = this.__formDataFill(data);\n this.__hasValidItems = !!itemsAdded;\n this.__formDataAddCartFields(data);\n this.__formDataCustomInputs(data);\n this.__data = data;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ItemsForm.js","sourceRoot":"","sources":["../../../../src/elements/public/ItemsForm/ItemsForm.ts"],"names":[],"mappings":"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","sourcesContent":["import '@vaadin/vaadin-button';\nimport { html, PropertyDeclarations, TemplateResult } from 'lit-element';\nimport { parseDuration } from '../../../utils/parse-duration';\nimport { Dropdown, ErrorScreen } from '../../private/index';\nimport { ItemsFormChangeEvent, ItemsFormSubmitEvent } from './events';\nimport { Item } from './private/Item';\nimport { ItemInterface } from './types';\nimport { SignableFields } from './private/SignableFields';\n\nexport { Item };\n\n/**\n * A custom element providing a customizable donation form.\n *\n * @fires ItemsForm#change - changed form data.\n * @fires ItemsForm#submit - submitted form data\n * @fires ItemsForm#load - ProgressEvent instance with server response\n *\n * @slot items - items to be added to the form.\n *\n * @element foxy-items-form\n *\n */\nexport class ItemsForm extends SignableFields {\n /** @readonly */\n public static get scopedElements(): Record<string, unknown> {\n return {\n 'x-error-screen': ErrorScreen,\n 'vaadin-button': customElements.get('vaadin-button'),\n 'x-dropdown': Dropdown,\n 'x-item': Item,\n };\n }\n\n /** @readonly */\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n currency: { type: String },\n readonly: { type: Boolean },\n cart: {\n type: String, // only accepts checkout or add\n converter: value => {\n if (value && !['checkout', 'add'].includes(value)) {\n return null;\n }\n return value;\n },\n },\n target: { type: String },\n store: { type: String, attribute: 'store' },\n sub_frequency: { type: String },\n sub_startdate: {\n type: String,\n converter: value => {\n if (!ItemsForm.__validDate(value)) {\n console.error('Invalid start date', value);\n return '';\n }\n return value;\n },\n },\n sub_enddate: {\n type: String,\n converter: value => {\n if (!ItemsForm.__validDateFuture(value)) {\n console.error('Invalid end date', value);\n return '';\n }\n return value;\n },\n },\n sub_token: { type: String },\n sub_modify: {\n type: String,\n converter: value => {\n if (value === '' || value === 'append') {\n return '';\n } else {\n return 'replace';\n }\n },\n },\n sub_restart: {\n type: String,\n converter: value => {\n if (value === 'true') {\n return value;\n } else {\n return 'auto';\n }\n },\n },\n frequencies: {\n converter: value => {\n if (!value) {\n return [];\n }\n const freqArray = JSON.parse(value);\n if (!Array.isArray(freqArray)) {\n console.error('Invalid frequency', `Frequency options must be an array.`);\n return [];\n }\n for (const f of freqArray) {\n if (!ItemsForm.__validFrequency(f)) {\n console.error(\n 'Invalid frequency',\n `Invalid frequency option.\n Please, check https://wiki.foxycart.com/v/2.0/products#subscription_product_options for possible values.\n Each frequency must be a in the format:\n - 1d (a number followed by d, for day)\n - 1w (a number followed by w, for week)\n - 1m (a number followed by m, for month)\n - 1y (a number followed by y, for year)\n or .5m (no other decimals are allowed, and this is only for months)\n `,\n f\n );\n return [];\n }\n }\n return freqArray.filter(ItemsForm.__validFrequency);\n },\n },\n items: { type: Array },\n __hasValidItems: { attribute: false },\n __total: { attribute: false },\n __data: { attribute: false },\n };\n }\n\n /**\n * **Required** store subdomain, It is similar to mystore.foxycart.com,\n * unless you use a custom subdomain.\n *\n * **Examples:** `\"mystore.foxycart.com\"` `\"custom.mycoolstore.com\"`\n */\n public store?: string;\n\n /**\n * **Required** 3-letter lowercase currency code.\n *\n * **Example:** `\"usd\"`\n */\n public currency?: string;\n\n /**\n * Makes the entire form readonly.\n */\n public readonly = false;\n\n /**\n * Defines target of the form\n *\n * This attribute controls the destination window of the form submission.\n */\n public target = '_top';\n\n /**\n * Defines the next cart step\n *\n * It can only be either add or checkout.\n * If \"add\" is chosen, this form will add items to the cart and the user will\n * be directed to the cart with these products added upon submission.\n *\n * If set to \"checkout\" (this is the default) the user will be directed to\n * checkout.\n */\n public cart = 'checkout';\n\n /**\n * Optional frequency string encoded as count (integer) + units (one of: `d`\n * for days, `w` for weeks, `m` for months, `y` for years). A special value\n * for twice a month is also supported: `.5m`. If set, the form will create a\n * subscription with the specified frequency in the cart.\n *\n * **Example:** `\"1m\"`\n */\n public sub_frequency?: string;\n\n /**\n * Optional subscription start date encoded as four integer for the year, two\n * for the month and two for the day. If only two or one digits are provided,\n * it is assumed to be next occurence of that day of the month, from the\n * current date.\n *\n * See [Products wiki for more details](https://wiki.foxycart.com/v/2.0/products#a_complete_list_of_product_parameters)\n *\n * ** Example:** `\"10\"`\n */\n public sub_startdate?: string;\n\n /**\n * Optional subscription token, unique URL of a subscription, retrieved from\n * the API, XML datafeeds or Admin interface.\n */\n public sub_token?: string;\n\n /**\n * Optional. Allows the “add to cart” link or form to completely replace the\n * existing subscription loaded\n *\n * Can be either \"replace\", \"append\" or \"\" (a blank string).\n * Using \"append\" or \"\" will result in adding these items to an existing\n * subscription in addition to the existing ones.\n *\n * The \"append\" value is set for convenience, as it describes the behaviour.\n * The submitted value, in this case, will be \"\". The submitted value, in\n * this case, will be \"\".\n *\n * Using \"replace\" results in replacing the existing subscription with the\n * current itmes.\n * See [Products subscription options](https://wiki.foxycart.com/v/2.0/products/subscriptions#subscription-related_product_options)\n */\n public sub_modify = 'replace';\n\n /**\n * Set to \"true\" to indicate that payment is collectable right now.\n * Set to \"auto\" to indicate that payment is collectable right now if the\n * subscription's past-due amount is greater than 0\n */\n public sub_restart = 'auto';\n\n /**\n * Optional subscription end date encoded as four integer for the year, two\n * for the month and two for the day.\n *\n * The absence of a sub_enddate, together with a sub_frequency, means a\n * subscription with indefinite and date.\n *\n * See [Products wiki for more details](https://wiki.foxycart.com/v/2.0/products#a_complete_list_of_product_parameters)\n *\n * ** Example:** `\"20221010\"`\n */\n public sub_enddate?: string;\n\n /**\n * Optional frequency variants in the same format as `frequency`. If this property is set,\n * the form will render the frequency selection interface. If this array includes\n * the value of the `frequency` property, it will be pre-selected in the form.\n *\n * **Example:** `[\"7d\", \".5m\", \"1y\"]`\n */\n public frequencies: string[] = [];\n\n /**\n * Handles the submission of the form\n *\n * - creates a FormData\n * - fill the FormData with item values\n * - add order wide fields to the FormData\n * - submits the form\n */\n private handleSubmit = {\n handleEvent: () => {\n if (this.__data !== null) {\n if (this.dispatchEvent(new ItemsFormSubmitEvent(this.__data!))) {\n this.shadowRoot!.querySelector('form')!.submit();\n }\n }\n },\n };\n\n private __childItemsObserver?: MutationObserver;\n\n private __hasValidItems = false;\n\n private __total = 0;\n\n /**\n * Handles the user input for frequenty field\n * - converts week, year, day and month into first letter only\n * - removes spaces\n * - removes leading zeroes\n * - validates input as propper frequency option\n **/\n private __handleFrequency = {\n handleEvent: (ev: CustomEvent) => {\n const newfrequency = (ev as CustomEvent).detail\n .replace(/([wydm])\\w*/, '$1')\n .replace(/ /g, '')\n .replace(/^0/, '');\n if (ItemsForm.__validFrequency(newfrequency)) {\n this.sub_frequency = newfrequency;\n } else {\n this.sub_frequency = '';\n }\n this.__updateData();\n },\n };\n\n private __data: FormData | null = new FormData();\n\n constructor() {\n super('items-form');\n this.__childItemsObserver = new MutationObserver(this.__observeChildren.bind(this));\n this.__childItemsObserver.observe(this, {\n childList: true,\n attributes: false,\n subtree: true,\n });\n this.updateComplete.then(() => {\n this.__acknowledgeItemElements();\n this.__computeTotalPrice();\n this.__updateData();\n });\n }\n\n public get items(): ItemInterface[] {\n const temp: ItemInterface[] = [];\n this.__itemElements.forEach(e => {\n const proxy = new Proxy(e, {\n set: function (target: Item, property: string | number | symbol, value) {\n const allowedAttributes = Object.keys(target.value);\n if (typeof property === 'string' && allowedAttributes.includes(property)) {\n (target as unknown as ItemInterface)[property] = value;\n return true;\n } else {\n return false;\n }\n },\n get: function (target: Item, property: string | number) {\n return target.value[property];\n },\n });\n temp.push(proxy as unknown as ItemInterface);\n });\n return temp;\n }\n\n /**\n * Optional an array of ItemInterface objects with at least the following properties:\n * - name: the name of the item\n * - price: the price of each of this item\n * The following optional properties will be used:\n * - quantity: (defaults to 1) how many of each item are added to the form\n * - image: an image url to be displayed in the form for this item\n * - items: an array of other items that are to be treated as bundled with this item\n * - signatures: an object containing a key value list of previously generated HMAC validation codes\n *\n * Other item properties are accepted and sent to foxy cart\n * See [Products wiki for more details](https://wiki.foxycart.com/v/2.0/products#a_complete_list_of_product_parameters)\n */\n public set items(value: ItemInterface[]) {\n this.__removeItems();\n this.__createItemsFromItemArray(value);\n }\n\n /**\n * The total value of the items to be submitted.\n */\n public get total(): number {\n return this.__total;\n }\n\n public render(): TemplateResult {\n if (!this.store || !this.currency) {\n return html`<x-error-screen type=\"setup_needed\" class=\"relative\"></x-error-screen>`;\n }\n\n return html`\n <div>\n <form\n class=\"overflow-hidden\"\n method=\"POST\"\n target=\"${this.target}\"\n action=\"https://${this.store}/cart\"\n data-testid=\"form\"\n class=\"hidden\"\n hidden\n >\n ${this.__data\n ? html` ${[...this.__data.entries()].map(\n ([name, value]) => html`<input type=\"hidden\" name=${name} value=${value} />`\n )}`\n : ''}\n </form>\n\n <section class=\"items\">\n <slot></slot>\n </section>\n\n ${!this.readonly\n ? html`\n <section class=\"actions flex flex-wrap justify-end m-m\">\n ${this.frequencies && this.frequencies.length\n ? html`\n <x-dropdown\n type=\"text\"\n name=\"frequency\"\n class=\"subscription m-s w-full sm-w-auto\"\n lang=${this.lang}\n .value=${this.sub_frequency ?? '0'}\n .items=${this.frequencies.concat(['0'])}\n .getText=${this.__translateFrequency.bind(this)}\n @change=${this.__handleFrequency}\n >\n </x-dropdown>\n `\n : ''}\n\n <vaadin-button\n class=\"m-s w-full sm-w-auto\"\n theme=\"primary\"\n data-testid=\"submit\"\n ?disabled=${!this.__hasValidItems}\n @click=${this.handleSubmit}\n >\n <span class=\"total\">\n ${this.__submitBtnText(this.__translateAmount(this.total))}\n </span>\n </vaadin-button>\n </section>\n `\n : ''}\n </div>\n `;\n }\n\n /** Add new items */\n public addItems(newItems: ItemInterface[]): void {\n for (const p of newItems) {\n const newItem = this.createItem(p);\n this.appendChild(newItem);\n this.__acknowledgeItemElement(newItem as Item);\n }\n }\n\n /** Remove items */\n public removeItems(itemIds: number[]): void {\n this.__removeItems((p: Item) => itemIds.includes(p.pid));\n }\n\n public updated(): void {\n this.dispatchEvent(new ItemsFormChangeEvent(this.__data!));\n }\n\n public createItem(p: ItemInterface): Element {\n const scopedItem = (this.constructor as any).getScopedTagName('x-item');\n const newItem = document.createElement(scopedItem);\n newItem.value = p;\n newItem.currency = this.currency;\n newItem.readonly = this.readonly;\n return newItem;\n }\n\n private __submitBtnText(value: string): string {\n if (!this.sub_frequency || this.sub_frequency == '0') {\n return this._t('checkout.buy', { value });\n } else {\n const duration = parseDuration(this.sub_frequency);\n if (duration.count === 1) {\n return this._t('checkout.subscribe_single_unit', {\n value,\n period: this._t(duration.units).toLowerCase(),\n });\n } else {\n return this._t('checkout.subscribe_muiltiple_units', {\n value,\n period: this.__translateFrequency(this.sub_frequency).toLowerCase(),\n });\n }\n }\n }\n\n /**\n * An array with both items created as elements and created parameter\n */\n private get __itemElements(): NodeListOf<Item> {\n return this.querySelectorAll('[data-item]');\n }\n\n /** Create child Items from items array\n */\n private __createItemsFromItemArray(itemsArray: ItemInterface[]) {\n this.addItems(itemsArray);\n }\n\n /** Removes item from the form based on a condition */\n private __removeItems(condition: (e: Item) => boolean = () => true) {\n this.__itemElements.forEach(p => {\n if (condition(p)) {\n p.remove();\n }\n });\n }\n\n /**\n * Adds a signature to a post field\n *\n * This method does not compute the signature. It must be provided.\n *\n * @argument string name The name of the field\n * @argument string signature The computed signature to add to the field\n * @argument string open Whether the field value is customized by the user\n * @return string signedName the name of the field with the signature\n */\n private __addSignature(name: string, signature: string, open?: string | boolean): string {\n return `${name}||${signature}${open ? '||open' : ''}`;\n }\n\n /**\n * Add all items from this.__itemElements to a FormData\n *\n * - Iterate of items in itemElements\n * - Add valid items to Form Data\n *\n * @argument FormData fd the FormData instance to fill\n * @return number the number of items added\n **/\n private __formDataFill(fd: FormData): number {\n let added = 0;\n this.__itemElements.forEach(e => {\n added += this.__formDataAddItem(fd, e);\n });\n this.__formDataAddCartWideSubscriptionFields(fd);\n return added;\n }\n\n /**\n * Add custom user provided fields\n */\n private __formDataCustomInputs(fd: FormData) {\n this.querySelectorAll(`[name]`).forEach(e => {\n const el = e as HTMLInputElement;\n if (el.tagName == 'INPUT' && ['checkbox', 'radio'].includes(el.type)) {\n if (!el.checked) return;\n }\n if (el.tagName == 'OPTION') {\n return;\n }\n if (el.value && ['number', 'string'].includes(typeof el.value)) {\n fd.set(el.name, el.value);\n }\n });\n }\n\n // Reserved attributes are not to be submitted\n // other attributes, included custom attributes added by the user, will be submitted\n private __isAttributeReserved(attribute: string): boolean {\n const reservedAttributes = [\n 'alt',\n 'currency',\n 'description',\n 'isChildren',\n 'isItem',\n 'items',\n 'open',\n 'pid',\n 'signatures',\n 'slot',\n 'total',\n ];\n return reservedAttributes.includes(attribute);\n }\n\n /**\n * Adds a item to a form data\n *\n * @argument {FormData} fd the FormData to which the item will be added\n * @argument {Item} the item to add\n **/\n private __formDataAddItem(fd: FormData, itemEl: Item, parent: Item | null = null): number {\n let added = 0;\n if (this.__validItem(itemEl)) {\n if (!itemEl.value['pid']) {\n throw new Error('Attempt to convert a item without a propper ID');\n }\n if (parent && parent.getAttribute('code')) {\n itemEl.setAttribute('parent_code', parent.getAttribute('code')!);\n }\n for (let i = 0; i < itemEl.attributes.length; i++) {\n const field = itemEl.attributes[i];\n if (!this.__isAttributeReserved(field.name) && !field.name.startsWith('data-')) {\n let fieldValue: unknown = (itemEl as any)[field.name];\n // Adds a signature if possible\n if (itemEl.code && ['string', 'number'].includes(typeof fieldValue)) {\n if (parent && field.name == 'quantity') {\n fieldValue = Number(field.value) * parent.quantity;\n }\n fd.set(itemEl.signedName(field.name), (fieldValue as string | number).toString());\n }\n }\n }\n added += 1;\n this.__formDataAddSubscriptionFields(fd, itemEl);\n }\n const childItems = itemEl.querySelectorAll('[data-bundled]');\n if (childItems && itemEl.quantity > 0) {\n for (const child of childItems) {\n added += this.__formDataAddItem(fd, child as Item, itemEl);\n }\n }\n return added;\n }\n\n /**\n * Adds subscription fields to a FormData\n *\n * @argument {FormData} fd the FormData to which subscription fields will be added\n **/\n private __formDataAddSubscriptionFields(fd: FormData, itemEl: Item): void {\n // added if sub_frequency is set\n if (this.sub_frequency) {\n for (const s of ['sub_frequency', 'sub_startdate', 'sub_enddate']) {\n if ((this as any)[s]) {\n fd.set(itemEl.signedName(s), (this as any)[s]);\n }\n }\n }\n }\n\n /**\n * Adds cart wide subscription fields to a FormData\n *\n * @argument {FormData} fd the FormData to which subscription fields will be added\n */\n private __formDataAddCartWideSubscriptionFields(fd: FormData): void {\n if (this.sub_frequency) {\n // added if itself is set\n if (this.sub_token) fd.set(this.signedName('sub_token'), this.sub_token);\n // added regardless\n fd.set(this.signedName('sub_modify'), this.sub_modify);\n fd.set(this.signedName('sub_restart'), this.sub_restart);\n }\n }\n\n /**\n * Adds cart related fields to a FormData\n *\n * @argument {FormData} fd the FormData to which the cart fields will be added.\n */\n private __formDataAddCartFields(fd: FormData): void {\n if (this.cart) {\n fd.set('cart', this.cart!);\n } else {\n fd.delete('cart');\n }\n }\n\n /**\n * Validates a string for subscription start date or end date according to\n *\n * @argument string strDate the date as a string to be used as start or end date.\n *\n * https://wiki.foxycart.com/v/2.0/products#subscription_product_options\n * See [Products subscription options for more details](https://wiki.foxycart.com/v/2.0/products#subscription_product_options)\n */\n private static __validDate(strDate: string | null | undefined): boolean {\n if (strDate === null || strDate === undefined) {\n return false;\n }\n if (strDate.match(/^(\\d{1,2}|\\d{8})$/)) {\n if (strDate.match(/^\\d{2}$/)) {\n if (Number(strDate) > 31) {\n return false;\n }\n }\n return true;\n }\n if (!strDate.match(/^\\.5m/) && ItemsForm.__validFrequency(strDate)) {\n return true;\n }\n return false;\n }\n\n /**\n * Checks if a string date is in the future.\n *\n * @argument string strdate the date, as a string, to be checked.\n * @returns boolean the date is a valid future date.\n */\n private static __validDateFuture(strDate: string | null | undefined): boolean {\n let valid = false;\n if (ItemsForm.__validDate(strDate)) {\n if (strDate!.match(/^\\d{8}/)) {\n const now = new Date();\n valid = now.toISOString().replace(/(-|T.*)/g, '') <= strDate!;\n } else {\n valid = true;\n }\n }\n return valid;\n }\n\n /**\n * Checks if a frequency complies with possible values\n *\n * @argument string strFrequency the frequency string to be validated.\n * @returns boolean the string is a foxy cart frequency string.\n */\n private static __validFrequency(strFrequency: string | null | undefined): boolean {\n if (!strFrequency) {\n return false;\n } else {\n return !!strFrequency.match(/^(\\.5m|\\d+[dwmy])$/);\n }\n }\n\n /** Subscribe to late inserted items.\n *\n * @argument MutationRecord[] the list of changes occurred.\n **/\n private __observeChildren(mutationList: MutationRecord[]): void {\n mutationList.forEach(m => {\n if (m.type == 'childList') {\n m.addedNodes.forEach(n => {\n const e = n as HTMLElement;\n e.addEventListener('change', this.__itemChange.bind(this));\n });\n }\n });\n this.__acknowledgeItemElements();\n this.__computeTotalPrice();\n this.__updateData();\n }\n\n /** Updates the form on item change */\n private __itemChange(): void {\n this.__computeTotalPrice();\n this.__updateData();\n }\n\n /** Compute the total price of all items in the form */\n private __computeTotalPrice(): void {\n let total = 0;\n this.__itemElements.forEach(e => {\n const item = e as Item;\n if (item.total) {\n total += Number(item.total);\n }\n });\n this.__total = Number(total.toFixed(2));\n }\n\n /** Go through all pcroduct elements and executes acknoledges each one */\n private __acknowledgeItemElements(): void {\n this.__itemElements.forEach((e: Element) => {\n const i = e as Item;\n this.__acknowledgeItemElement(i);\n });\n }\n\n /**\n * Treat this item item element as part of the form:\n *\n * - listen to its change events\n * - set its currency to be the forms currency\n */\n private __acknowledgeItemElement(item: Item) {\n item.addEventListener('change', this.__itemChange.bind(this));\n item.currency = this.currency!;\n }\n\n /**\n * Checks if item has quantity and price\n *\n * @argument Item the item to be validated\n * @returns boolean the item is valid\n **/\n private __validItem(item: Item): boolean {\n const pid = item.getAttribute('pid');\n const qty = Number(item.getAttribute('quantity'));\n const price = Number(item.getAttribute('price'));\n return !!(pid && qty > 0 && price >= 0);\n }\n\n /**\n * Translates a frequency string\n *\n * @argument string the frequency string to be translated\n * @returns string the translated string\n */\n private __translateFrequency(frequency: string) {\n if (frequency.startsWith('0')) return this._t('frequency_once');\n if (frequency === '.5m') return this._t('frequency_0_5m');\n const { count, units } = parseDuration(frequency);\n return this._t('frequency', {\n units: this._t(units, { count }),\n count,\n });\n }\n\n /**\n * Translate a given amount\n *\n * @argument number the amount to be translated\n * @returns string the translated amount\n */\n private __translateAmount(amount: number) {\n return amount.toLocaleString(this.lang, {\n minimumFractionDigits: 2,\n currency: this.currency!,\n style: 'currency',\n });\n }\n\n private __updateData() {\n this.__data = null;\n const form = this.shadowRoot!.querySelector('form');\n if (!form) return;\n const data = new FormData();\n const itemsAdded = this.__formDataFill(data);\n this.__hasValidItems = !!itemsAdded;\n this.__formDataAddCartFields(data);\n this.__formDataCustomInputs(data);\n this.__data = data;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serveFromCache.js","sourceRoot":"","sources":["../../../../src/elements/public/NucleonElement/serveFromCache.ts"],"names":[],"mappings":"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","sourcesContent":["import traverse from 'traverse';\n\nexport function serveFromCache(requestUrl: string, data: any): Response {\n let body: string | null = null;\n\n traverse(data).forEach(function () {\n // looking for a standalone resource in the data first\n if (this.node?._links?.self?.href) {\n const fullHref = this.node?._links?.self?.href;\n const noZoomURL = new URL(this.node?._links?.self?.href);\n noZoomURL.searchParams.delete('zoom');\n\n if (requestUrl === fullHref || requestUrl === noZoomURL.toString()) {\n body = JSON.stringify(this.node);\n this.stop();\n return;\n }\n }\n\n // alternatively, looking for an embedded collection in the data\n Object.entries(this.node?._links ?? {}).some(([curie, link]) => {\n if ((link as any).href !== requestUrl) return false;\n\n // one of the related collection's href matches requested url, let's see if it's embedded...\n const embed = this.node?._embedded?.[curie];\n if (!embed || !Array.isArray(embed)) return false;\n\n // we found an embed, now let's build a response body\n // assuming that there's more than 20 items in the collection if 20 was returned\n\n const totalItems = embed.length < 20 ? embed.length : 21;\n const next = new URL(requestUrl);\n const last = new URL(requestUrl);\n\n next.searchParams.set('offset', embed.length.toString());\n last.searchParams.set('offset', totalItems.toString());\n\n body = JSON.stringify({\n returned_items: embed.length,\n total_items: totalItems,\n offset: 0,\n limit: 20,\n _embedded: { [curie]: embed },\n _links: {\n curies: this.node._links.curies,\n first: { href: requestUrl },\n last: { href: last.toString() },\n prev: { href: requestUrl },\n next: { href: next.toString() },\n self: { href: requestUrl },\n },\n });\n\n this.stop();\n return true;\n });\n });\n\n return new Response(body, { status: body ? 200 : 404 });\n}\n"]}
|
|
1
|
+
{"version":3,"file":"serveFromCache.js","sourceRoot":"","sources":["../../../../src/elements/public/NucleonElement/serveFromCache.ts"],"names":[],"mappings":"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","sourcesContent":["import traverse from 'traverse';\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function serveFromCache(requestUrl: string, data: any): Response {\n let body: string | null = null;\n\n traverse(data).forEach(function () {\n // looking for a standalone resource in the data first\n if (this.node?._links?.self?.href) {\n const fullHref = this.node?._links?.self?.href;\n const noZoomURL = new URL(this.node?._links?.self?.href);\n noZoomURL.searchParams.delete('zoom');\n\n if (requestUrl === fullHref || requestUrl === noZoomURL.toString()) {\n body = JSON.stringify(this.node);\n this.stop();\n return;\n }\n }\n\n // alternatively, looking for an embedded collection in the data\n Object.entries(this.node?._links ?? {}).some(([curie, link]) => {\n if ((link as any).href !== requestUrl) return false;\n\n // one of the related collection's href matches requested url, let's see if it's embedded...\n const embed = this.node?._embedded?.[curie];\n if (!embed || !Array.isArray(embed)) return false;\n\n // we found an embed, now let's build a response body\n // assuming that there's more than 20 items in the collection if 20 was returned\n\n const totalItems = embed.length < 20 ? embed.length : 21;\n const next = new URL(requestUrl);\n const last = new URL(requestUrl);\n\n next.searchParams.set('offset', embed.length.toString());\n last.searchParams.set('offset', totalItems.toString());\n\n body = JSON.stringify({\n returned_items: embed.length,\n total_items: totalItems,\n offset: 0,\n limit: 20,\n _embedded: { [curie]: embed },\n _links: {\n curies: this.node._links.curies,\n first: { href: requestUrl },\n last: { href: last.toString() },\n prev: { href: requestUrl },\n next: { href: next.toString() },\n self: { href: requestUrl },\n },\n });\n\n this.stop();\n return true;\n });\n });\n\n return new Response(body, { status: body ? 200 : 404 });\n}\n"]}
|
|
@@ -648,10 +648,14 @@ export class TaxForm extends Base {
|
|
|
648
648
|
|
|
649
649
|
<x-property-table
|
|
650
650
|
data-testid="timestamps"
|
|
651
|
-
.items=${['date_modified', 'date_created'].map(field =>
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
651
|
+
.items=${['date_modified', 'date_created'].map(field => {
|
|
652
|
+
var _a;
|
|
653
|
+
return ({
|
|
654
|
+
name: this.t(field),
|
|
655
|
+
value: ((_a = this.data) === null || _a === void 0 ? void 0 : _a[field]) ? this.t('date', { value: new Date(this.data[field]) })
|
|
656
|
+
: '',
|
|
657
|
+
});
|
|
658
|
+
})}
|
|
655
659
|
>
|
|
656
660
|
</x-property-table>
|
|
657
661
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaxForm.js","sourceRoot":"","sources":["../../../../src/elements/public/TaxForm/TaxForm.ts"],"names":[],"mappings":"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","sourcesContent":["import { Checkbox, Dropdown, PropertyTable } from '../../private/index';\nimport { CheckboxChangeEvent, DropdownChangeEvent } from '../../private/events';\nimport { Data, Templates } from './types';\nimport { Nucleon, Resource } from '@foxy.io/sdk/core';\nimport { ScopedElementsMap, ScopedElementsMixin } from '@open-wc/scoped-elements';\nimport { TemplateResult, html } from 'lit-html';\n\nimport { ButtonElement } from '@vaadin/vaadin-button';\nimport { ComboBoxElement } from '@vaadin/vaadin-combo-box';\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { DialogHideEvent } from '../../private/Dialog/DialogHideEvent';\nimport { IntegerFieldElement } from '@vaadin/vaadin-text-field/vaadin-integer-field';\nimport { InternalConfirmDialog } from '../../internal/InternalConfirmDialog/InternalConfirmDialog';\nimport { NucleonElement } from '../NucleonElement/NucleonElement';\nimport { NucleonV8N } from '../NucleonElement/types';\nimport { PropertyDeclarations } from 'lit-element';\nimport { Rels } from '@foxy.io/sdk/backend';\nimport { TextFieldElement } from '@vaadin/vaadin-text-field';\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 { interpret } from 'xstate';\n\n// prettier-ignore\nconst defaultLiveRateCountries: (string | undefined)[] = ['US', 'CA', 'AT', 'BE', 'BG', 'CY', 'CZ', 'DE', 'DK', 'EE', 'ES', 'FI', 'FR', 'GB', 'GR', 'HR', 'HU', 'IE', 'IM', 'IT', 'LT', 'LU', 'LV', 'MC', 'MT', 'NL', 'PL', 'PT', 'RO', 'SE', 'SI', 'SK'];\nconst taxJarLiveRateCountries = [...defaultLiveRateCountries, 'AU'];\n\nconst NS = 'tax-form';\nconst Base = ConfigurableMixin(\n ThemeableMixin(ScopedElementsMixin(TranslatableMixin(NucleonElement, NS)))\n);\n\n/**\n * Form element for creating or editing taxes (`fx:tax`).\n *\n * @slot name:before\n * @slot name:after\n *\n * @slot type:before\n * @slot type:after\n *\n * @slot country:before\n * @slot country:after\n *\n * @slot region:before\n * @slot region:after\n *\n * @slot city:before\n * @slot city:after\n *\n * @slot provider:before\n * @slot provider:after\n *\n * @slot rate:before\n * @slot rate:after\n *\n * @slot apply-to-shipping:before\n * @slot apply-to-shipping:after\n *\n * @slot use-origin-rates:before\n * @slot use-origin-rates:after\n *\n * @slot exempt-all-customer-tax-ids:before\n * @slot exempt-all-customer-tax-ids:after\n *\n * @slot timestamps:before\n * @slot timestamps:after\n *\n * @slot delete:before\n * @slot delete:after\n *\n * @slot create:before\n * @slot create:after\n *\n * @element foxy-tax-form\n * @since 1.13.0\n */\nexport class TaxForm extends Base<Data> {\n static get scopedElements(): ScopedElementsMap {\n return {\n 'vaadin-integer-field': customElements.get('vaadin-integer-field'),\n 'vaadin-text-field': customElements.get('vaadin-text-field'),\n 'vaadin-combo-box': customElements.get('vaadin-combo-box'),\n 'vaadin-button': customElements.get('vaadin-button'),\n 'foxy-internal-confirm-dialog': customElements.get('foxy-internal-confirm-dialog'),\n 'foxy-internal-sandbox': customElements.get('foxy-internal-sandbox'),\n 'foxy-spinner': customElements.get('foxy-spinner'),\n 'foxy-i18n': customElements.get('foxy-i18n'),\n 'x-property-table': PropertyTable,\n 'x-checkbox': Checkbox,\n 'x-dropdown': Dropdown,\n };\n }\n\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n countries: { type: String, noAccessor: true },\n regions: { type: String, noAccessor: true },\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ name: v }) => !!v || 'name_required',\n ({ name: v }) => !v || v.length <= 30 || 'name_too_long',\n ({ country: c, type: t }) => t !== 'country' || !!c || 'country_required',\n ({ country: c, type: t }) => t !== 'region' || !!c || 'country_required',\n ({ country: c, use_origin_rates: r }) => !r || !!c || 'country_required',\n ({ country: v }) => !v || !!v.match(/[A-Z]{2}/) || 'country_invalid',\n ({ region: v, type: t }) => t != 'region' || !!v || 'region_required',\n ({ region: v }) => !v || v.length <= 20 || 'region_too_long',\n ({ city: v }) => !v || v.length <= 50 || 'city_too_long',\n ({ city: c, type: t }) => t != 'local' || !!c || 'city_required',\n ({ rate: v }) => !v || v <= 100 || 'rate_invalid',\n ];\n }\n\n templates: Templates = {};\n\n private __previousCountry: string | undefined = undefined;\n\n private __countries = '';\n\n private __regions = '';\n\n private __countriesService = interpret(\n Nucleon.machine.withConfig({\n services: {\n sendGet: async () => {\n const response = await new TaxForm.API(this).fetch(this.countries);\n if (!response.ok) throw new Error(await response.text());\n return await response.json();\n },\n },\n })\n );\n\n private __regionsService = interpret(\n Nucleon.machine.withConfig({\n services: {\n sendGet: async () => {\n const url = new URL(this.regions);\n url.searchParams.set('country_code', this.form.country ?? 'US');\n const response = await new TaxForm.API(this).fetch(url.toString());\n if (!response.ok) throw new Error(await response.text());\n return await response.json();\n },\n },\n })\n );\n\n /** URI of the `fx:countries` hAPI resource. */\n get countries(): string {\n return this.__countries;\n }\n\n set countries(value: string) {\n this.__countries = value;\n\n if (value) {\n this.__countriesService.send({ type: 'FETCH' });\n } else {\n this.__countriesService.send({ type: 'SET_DATA', data: null });\n }\n }\n\n /** URI of the `fx:regions` hAPI resource. */\n get regions(): string {\n return this.__regions;\n }\n\n set regions(value: string) {\n this.__regions = value;\n\n if (value) {\n this.__regionsService.send({ type: 'FETCH' });\n } else {\n this.__regionsService.send({ type: 'SET_DATA', data: null });\n }\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n\n this.__countriesService.onTransition(({ changed }) => changed && this.requestUpdate());\n this.__countriesService.onChange(() => this.requestUpdate());\n this.__countriesService.start();\n\n this.__regionsService.onTransition(({ changed }) => changed && this.requestUpdate());\n this.__regionsService.onChange(() => this.requestUpdate());\n this.__regionsService.start();\n }\n\n render(): TemplateResult {\n return html`\n <div class=\"relative space-y-m\">\n ${this.__isNameHidden ? null : this.__renderName()}\n ${this.__isTypeHidden ? null : this.__renderType()}\n ${this.__isCountryHidden ? null : this.__renderCountry()}\n ${this.__isRegionHidden ? null : this.__renderRegion()}\n ${this.__isCityHidden ? null : this.__renderCity()}\n ${this.__isProviderHidden ? null : this.__renderProvider()}\n ${this.__isRateHidden ? null : this.__renderRate()}\n ${this.__isApplyToShippingHidden ? null : this.__renderApplyToShipping()}\n ${this.__isUseOriginRatesHidden ? null : this.__renderUseOriginRates()}\n ${this.__isExemptAllCustomerTaxIdsHidden ? null : this.__renderExemptAllCustomerTaxIds()}\n ${this.__isTimestampsHidden ? null : this.__renderTimestamps()}\n ${this.__isCreateHidden ? null : this.__renderCreate()}\n ${this.__isDeleteHidden ? null : this.__renderDelete()}\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': !this.in('busy') && !this.in('fail'),\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=${this.in('fail') ? 'error' : this.in('busy') ? 'busy' : 'empty'}\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 updated(changes: Map<keyof this, unknown>): void {\n super.updated(changes);\n\n if (this.form.country !== this.__previousCountry) {\n this.__previousCountry = this.form.country;\n this.__regionsService.send({ type: 'FETCH' });\n }\n\n // vaadin's combo box doesn't seem to validate on its own\n this.renderRoot.querySelectorAll('vaadin-combo-box').forEach(e => e.validate());\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n\n this.__countriesService.stop();\n this.__regionsService.stop();\n }\n\n private get __isNameHidden(): boolean {\n return this.hiddenSelector.matches('name', true);\n }\n\n private get __isTypeHidden(): boolean {\n return this.hiddenSelector.matches('type', true);\n }\n\n private get __isCountryHidden(): boolean {\n if (this.hiddenSelector.matches('country', true)) return true;\n if (this.form.type === 'union') return !this.form.use_origin_rates;\n return !(['country', 'region', 'local'] as unknown[]).includes(this.form.type);\n }\n\n private get __isRegionHidden(): boolean {\n if (this.hiddenSelector.matches('region', true)) return true;\n return this.form.type !== 'local' && this.form.type !== 'region';\n }\n\n private get __isCityHidden(): boolean {\n if (this.hiddenSelector.matches('city', true)) return true;\n return this.form.type !== 'local';\n }\n\n private get __isProviderHidden(): boolean {\n if (this.hiddenSelector.matches('provider', true)) return true;\n return !this.form.type || this.form.type === 'global' || this.form.type === 'local';\n }\n\n private get __isRateHidden(): boolean {\n if (this.hiddenSelector.matches('rate', true)) return true;\n return !this.form.type || this.form.is_live === true;\n }\n\n private get __isApplyToShippingHidden(): boolean {\n if (this.hiddenSelector.matches('apply-to-shipping', true)) return true;\n if (this.form.type === undefined) return true;\n return !!this.form.is_live && defaultLiveRateCountries.includes(this.form.country);\n }\n\n private get __isUseOriginRatesHidden(): boolean {\n if (this.hiddenSelector.matches('use-origin-rates', true)) return true;\n return this.form.type !== 'union' || !this.form.is_live || !!this.form.service_provider;\n }\n\n private get __isExemptAllCustomerTaxIdsHidden(): boolean {\n if (this.hiddenSelector.matches('exempt-all-customer-tax-ids', true)) return true;\n const provider = this.form.service_provider as string | undefined;\n return provider === undefined || provider === 'onesource' || provider === 'avalara';\n }\n\n private get __isTimestampsHidden(): boolean {\n if (this.hiddenSelector.matches('timestamps', true)) return true;\n return !this.data;\n }\n\n private get __isCreateHidden(): boolean {\n if (this.hiddenSelector.matches('create', true)) return true;\n return !!this.data;\n }\n\n private get __isDeleteHidden(): boolean {\n if (this.hiddenSelector.matches('delete', true)) return true;\n return !this.data;\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 __getValidator(prefix: string) {\n return () => !this.errors.some(err => err.startsWith(prefix));\n }\n\n private __renderName(): TemplateResult {\n return html`\n <div>\n ${this.renderTemplateOrSlot('name:before')}\n\n <vaadin-text-field\n data-testid=\"name\"\n class=\"w-full\"\n label=${this.t('name')}\n value=${ifDefined(this.form.name)}\n .checkValidity=${this.__getValidator('name')}\n .errorMessage=${this.__getErrorMessage('name')}\n ?disabled=${this.in('busy') || this.disabledSelector.matches('name', true)}\n ?readonly=${this.readonlySelector.matches('name', true)}\n required\n @keydown=${this.__submitOnEnter}\n @input=${(evt: CustomEvent) => {\n const newName = (evt.currentTarget as TextFieldElement).value;\n this.edit({ name: newName });\n }}\n >\n </vaadin-text-field>\n\n ${this.renderTemplateOrSlot('name:after')}\n </div>\n `;\n }\n\n private __renderType(): TemplateResult {\n if (!this.form.type) this.edit({ type: 'global' });\n\n return html`\n <div>\n ${this.renderTemplateOrSlot('type:before')}\n\n <x-dropdown\n data-testid=\"type\"\n label=${this.t('type')}\n value=${ifDefined(this.form.type)}\n class=\"w-full\"\n .items=${['global', 'union', 'country', 'region', 'local']}\n .getText=${(value: string) => this.t(`tax_${value}`)}\n ?disabled=${this.in('busy') || this.disabledSelector.matches('type', true)}\n ?readonly=${this.readonlySelector.matches('type', true)}\n @change=${(evt: DropdownChangeEvent) => {\n this.edit({\n type: evt.detail as Data['type'],\n country: '',\n region: '',\n city: '',\n service_provider: '',\n apply_to_shipping: false,\n use_origin_rates: false,\n exempt_all_customer_tax_ids: false,\n is_live: false,\n rate: 0,\n });\n }}\n >\n </x-dropdown>\n\n ${this.renderTemplateOrSlot('type:after')}\n </div>\n `;\n }\n\n private __renderCountry(): TemplateResult {\n const isLoadingItems = this.__countriesService.state.matches('busy');\n const isLoadingData = this.in('busy');\n const isLoading = isLoadingItems || isLoadingData;\n const json = this.__countriesService.state.context.data as Resource<Rels.Countries> | null;\n const items = Object.values(json?.values ?? {});\n\n return html`\n <div>\n ${this.renderTemplateOrSlot('country:before')}\n\n <vaadin-combo-box\n item-value-path=\"cc2\"\n item-label-path=\"default\"\n item-id-path=\"cc2\"\n data-testid=\"country\"\n label=\"${this.t('country')}${isLoadingItems ? ` • ${this.t('loading_busy')}` : ''}\"\n value=${ifDefined(isLoadingItems ? undefined : this.form.country)}\n class=\"w-full\"\n .checkValidity=${this.__getValidator('country')}\n .errorMessage=${this.__getErrorMessage('country')}\n .items=${items}\n ?allow-custom-value=${items.length === 0}\n ?disabled=${isLoading || this.disabledSelector.matches('country', true)}\n ?readonly=${this.readonlySelector.matches('country', true)}\n required\n @change=${(evt: CustomEvent) => {\n this.edit({\n country: (evt.currentTarget as ComboBoxElement).value,\n region: '',\n city: '',\n is_live: false,\n service_provider: '',\n });\n\n if (this.__isApplyToShippingHidden) this.edit({ apply_to_shipping: false });\n this.__regionsService.send({ type: 'FETCH' });\n }}\n >\n </vaadin-combo-box>\n\n ${this.renderTemplateOrSlot('country:after')}\n </div>\n `;\n }\n\n private __renderRegion(): TemplateResult {\n const isLoadingItems = this.__regionsService.state.matches('busy');\n const isLoadingData = this.in('busy');\n const isLoading = isLoadingItems || isLoadingData;\n const json = this.__regionsService.state.context.data as Resource<Rels.Regions> | null;\n const items = Object.values(json?.values ?? {});\n\n return html`\n <div>\n ${this.renderTemplateOrSlot('region:before')}\n\n <vaadin-combo-box\n item-value-path=\"code\"\n item-label-path=\"default\"\n item-id-path=\"code\"\n data-testid=\"region\"\n label=\"${this.t('region')}${isLoadingItems ? ` • ${this.t('loading_busy')}` : ''}\"\n value=${ifDefined(isLoadingItems ? undefined : this.form.region)}\n class=\"w-full\"\n .checkValidity=${this.__getValidator('region')}\n .errorMessage=${this.__getErrorMessage('region')}\n .items=${items}\n ?allow-custom-value=${items.length === 0}\n ?disabled=${isLoading || this.disabledSelector.matches('region', true)}\n ?readonly=${this.readonlySelector.matches('region', true)}\n required\n @change=${(evt: CustomEvent) => {\n const newRegion = (evt.currentTarget as ComboBoxElement).value;\n this.edit({ region: newRegion, city: '' });\n }}\n >\n </vaadin-combo-box>\n\n ${this.renderTemplateOrSlot('region:after')}\n </div>\n `;\n }\n\n private __renderCity(): TemplateResult {\n return html`\n <div>\n ${this.renderTemplateOrSlot('city:before')}\n\n <vaadin-text-field\n data-testid=\"city\"\n class=\"w-full\"\n label=${this.t('city')}\n value=${ifDefined(this.form.city)}\n .checkValidity=${this.__getValidator('city')}\n .errorMessage=${this.__getErrorMessage('city')}\n ?disabled=${this.in('busy') || this.disabledSelector.matches('city', true)}\n ?readonly=${this.readonlySelector.matches('city', true)}\n required\n @keydown=${this.__submitOnEnter}\n @input=${(evt: CustomEvent) => {\n const newCity = (evt.currentTarget as TextFieldElement).value;\n this.edit({ city: newCity });\n }}\n >\n </vaadin-text-field>\n\n ${this.renderTemplateOrSlot('city:after')}\n </div>\n `;\n }\n\n private __renderProvider(): TemplateResult {\n const items = [\n { label: this.t('tax_rate_provider_none'), value: 'none' },\n { label: 'Avalara AvaTax 15', value: 'avalara' },\n { label: 'Thomson Reuters ONESOURCE', value: 'onesource' },\n ];\n\n if (this.form.type === 'union' || defaultLiveRateCountries.includes(this.form.country)) {\n items.push({ label: this.t('tax_rate_provider_default'), value: 'default' });\n }\n\n if (taxJarLiveRateCountries.includes(this.form.country)) {\n items.push({ label: 'TaxJar', value: 'taxjar' });\n }\n\n return html`\n <div>\n ${this.renderTemplateOrSlot('provider:before')}\n\n <x-dropdown\n data-testid=\"provider\"\n label=${this.t('tax_rate_provider')}\n value=${this.form.service_provider || (this.form.is_live ? 'default' : 'none')}\n class=\"w-full\"\n .items=${items.map(item => item.value)}\n .getText=${(value: string) => items.find(item => item.value === value)?.label}\n ?disabled=${this.in('busy') || this.disabledSelector.matches('provider', true)}\n ?readonly=${this.readonlySelector.matches('provider', true)}\n @change=${(evt: DropdownChangeEvent) => {\n const newValue = evt.detail as string;\n const newProvider = ['none', 'default'].includes(newValue) ? '' : newValue;\n\n this.edit({\n service_provider: newProvider as Data['service_provider'],\n is_live: newValue !== 'none',\n });\n\n if (this.__isExemptAllCustomerTaxIdsHidden) {\n this.edit({ exempt_all_customer_tax_ids: false });\n }\n\n if (this.__isApplyToShippingHidden) this.edit({ apply_to_shipping: false });\n if (this.__isUseOriginRatesHidden) this.edit({ use_origin_rates: false });\n }}\n >\n </x-dropdown>\n\n ${this.renderTemplateOrSlot('provider:after')}\n </div>\n `;\n }\n\n private __renderRate(): TemplateResult {\n return html`\n <div>\n ${this.renderTemplateOrSlot('rate:before')}\n\n <vaadin-integer-field\n data-testid=\"rate\"\n class=\"w-full\"\n label=${this.t('tax_rate')}\n value=${ifDefined(this.form.rate)}\n min=\"0\"\n prevent-invalid-input\n has-controls\n .checkValidity=${this.__getValidator('rate')}\n .errorMessage=${this.__getErrorMessage('rate')}\n ?disabled=${this.in('busy') || this.disabledSelector.matches('rate', true)}\n ?readonly=${this.readonlySelector.matches('rate', true)}\n required\n @keydown=${this.__submitOnEnter}\n @change=${(evt: CustomEvent) => {\n const newRate = parseInt((evt.currentTarget as IntegerFieldElement).value);\n this.edit({ rate: newRate });\n }}\n >\n </vaadin-integer-field>\n\n ${this.renderTemplateOrSlot('rate:after')}\n </div>\n `;\n }\n\n private __renderApplyToShipping(): TemplateResult {\n return html`\n <div>\n ${this.renderTemplateOrSlot('apply-to-shipping:before')}\n\n <x-checkbox\n data-testid=\"apply-to-shipping\"\n class=\"leading-s\"\n ?disabled=${this.in('busy') || this.disabledSelector.matches('apply-to-shipping', true)}\n ?readonly=${this.readonlySelector.matches('apply-to-shipping', true)}\n ?checked=${!!this.form.apply_to_shipping}\n @change=${(evt: CheckboxChangeEvent) => this.edit({ apply_to_shipping: evt.detail })}\n >\n <foxy-i18n\n class=\"block text-m text-body\"\n lang=${this.lang}\n key=\"tax_apply_to_shipping\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <foxy-i18n\n class=\"block text-s text-secondary\"\n lang=${this.lang}\n key=\"tax_apply_to_shipping_explainer\"\n ns=${this.ns}\n >\n </foxy-i18n>\n </x-checkbox>\n\n ${this.renderTemplateOrSlot('apply-to-shipping:after')}\n </div>\n `;\n }\n\n private __renderUseOriginRates(): TemplateResult {\n return html`\n <div>\n ${this.renderTemplateOrSlot('use-origin-rates:before')}\n\n <x-checkbox\n data-testid=\"use-origin-rates\"\n class=\"leading-s\"\n ?disabled=${this.in('busy') || this.disabledSelector.matches('use-origin-rates', true)}\n ?readonly=${this.readonlySelector.matches('use-origin-rates', true)}\n ?checked=${!!this.form.use_origin_rates}\n @change=${(evt: CheckboxChangeEvent) => this.edit({ use_origin_rates: evt.detail })}\n >\n <foxy-i18n\n class=\"block text-m text-body\"\n lang=${this.lang}\n key=\"tax_use_origin_rates\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <foxy-i18n\n class=\"block text-s text-secondary\"\n lang=${this.lang}\n key=\"tax_use_origin_rates_explainer\"\n ns=${this.ns}\n >\n </foxy-i18n>\n </x-checkbox>\n\n ${this.renderTemplateOrSlot('use-origin-rates:after')}\n </div>\n `;\n }\n\n private __renderExemptAllCustomerTaxIds(): TemplateResult {\n const scope = 'exempt-all-customer-tax-ids';\n\n return html`\n <div>\n ${this.renderTemplateOrSlot(`${scope}:before`)}\n\n <x-checkbox\n data-testid=\"${scope}\"\n class=\"leading-s\"\n ?disabled=${this.in('busy') || this.disabledSelector.matches(scope, true)}\n ?readonly=${this.readonlySelector.matches(scope, true)}\n ?checked=${!!this.form.exempt_all_customer_tax_ids}\n @change=${(evt: CheckboxChangeEvent) => {\n this.edit({ exempt_all_customer_tax_ids: evt.detail });\n }}\n >\n <foxy-i18n\n class=\"block text-m text-body\"\n lang=${this.lang}\n key=\"tax_exempt_all_customer_tax_ids\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <foxy-i18n\n class=\"block text-s text-secondary\"\n lang=${this.lang}\n key=\"tax_exempt_all_customer_tax_ids_explainer\"\n ns=${this.ns}\n >\n </foxy-i18n>\n </x-checkbox>\n\n ${this.renderTemplateOrSlot(`${scope}:after`)}\n </div>\n `;\n }\n\n private __renderTimestamps(): TemplateResult {\n return html`\n <div>\n ${this.renderTemplateOrSlot('timestamps:before')}\n\n <x-property-table\n data-testid=\"timestamps\"\n .items=${(['date_modified', 'date_created'] as const).map(field => ({\n name: this.t(field),\n value: this.data ? this.t('date', { value: new Date(this.data[field]) }) : '',\n }))}\n >\n </x-property-table>\n\n ${this.renderTemplateOrSlot('timestamps:after')}\n </div>\n `;\n }\n\n private __renderCreate(): TemplateResult {\n const isCleanTemplateInvalid = this.in({ idle: { template: { clean: 'invalid' } } });\n const isDirtyTemplateInvalid = this.in({ idle: { template: { dirty: 'invalid' } } });\n const isCleanSnapshotInvalid = this.in({ idle: { snapshot: { clean: 'invalid' } } });\n const isDirtySnapshotInvalid = this.in({ idle: { snapshot: { dirty: 'invalid' } } });\n const isTemplateInvalid = isCleanTemplateInvalid || isDirtyTemplateInvalid;\n const isSnaphotInvalid = isCleanSnapshotInvalid || isDirtySnapshotInvalid;\n const isInvalid = isTemplateInvalid || isSnaphotInvalid;\n const isBusy = this.in('busy');\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=\"primary success\"\n ?disabled=${isBusy || isInvalid || this.disabledSelector.matches('create', true)}\n @click=${this.submit}\n >\n <foxy-i18n ns=${this.ns} key=\"create\" lang=${this.lang}></foxy-i18n>\n </vaadin-button>\n\n ${this.renderTemplateOrSlot('create:after')}\n </div>\n `;\n }\n\n private __renderDelete(): TemplateResult {\n return html`\n <div>\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=${this.lang}\n ns=${this.ns}\n id=\"confirm\"\n @hide=${(evt: DialogHideEvent) => !evt.detail.cancelled && this.delete()}\n >\n </foxy-internal-confirm-dialog>\n\n ${this.renderTemplateOrSlot('delete:before')}\n\n <vaadin-button\n data-testid=\"delete\"\n theme=\"primary error\"\n class=\"w-full\"\n ?disabled=${this.in('busy') || this.disabledSelector.matches('delete', true)}\n @click=${(evt: CustomEvent) => {\n const confirm = this.renderRoot.querySelector('#confirm') as InternalConfirmDialog;\n confirm.show(evt.currentTarget as ButtonElement);\n }}\n >\n <foxy-i18n ns=${this.ns} key=\"delete\" lang=${this.lang}></foxy-i18n>\n </vaadin-button>\n\n ${this.renderTemplateOrSlot('delete:after')}\n </div>\n `;\n }\n\n private __submitOnEnter(evt: KeyboardEvent) {\n if (evt.key === 'Enter') this.submit();\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"TaxForm.js","sourceRoot":"","sources":["../../../../src/elements/public/TaxForm/TaxForm.ts"],"names":[],"mappings":"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","sourcesContent":["import { Checkbox, Dropdown, PropertyTable } from '../../private/index';\nimport { CheckboxChangeEvent, DropdownChangeEvent } from '../../private/events';\nimport { Data, Templates } from './types';\nimport { Nucleon, Resource } from '@foxy.io/sdk/core';\nimport { ScopedElementsMap, ScopedElementsMixin } from '@open-wc/scoped-elements';\nimport { TemplateResult, html } from 'lit-html';\n\nimport { ButtonElement } from '@vaadin/vaadin-button';\nimport { ComboBoxElement } from '@vaadin/vaadin-combo-box';\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { DialogHideEvent } from '../../private/Dialog/DialogHideEvent';\nimport { IntegerFieldElement } from '@vaadin/vaadin-text-field/vaadin-integer-field';\nimport { InternalConfirmDialog } from '../../internal/InternalConfirmDialog/InternalConfirmDialog';\nimport { NucleonElement } from '../NucleonElement/NucleonElement';\nimport { NucleonV8N } from '../NucleonElement/types';\nimport { PropertyDeclarations } from 'lit-element';\nimport { Rels } from '@foxy.io/sdk/backend';\nimport { TextFieldElement } from '@vaadin/vaadin-text-field';\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 { interpret } from 'xstate';\n\n// prettier-ignore\nconst defaultLiveRateCountries: (string | undefined)[] = ['US', 'CA', 'AT', 'BE', 'BG', 'CY', 'CZ', 'DE', 'DK', 'EE', 'ES', 'FI', 'FR', 'GB', 'GR', 'HR', 'HU', 'IE', 'IM', 'IT', 'LT', 'LU', 'LV', 'MC', 'MT', 'NL', 'PL', 'PT', 'RO', 'SE', 'SI', 'SK'];\nconst taxJarLiveRateCountries = [...defaultLiveRateCountries, 'AU'];\n\nconst NS = 'tax-form';\nconst Base = ConfigurableMixin(\n ThemeableMixin(ScopedElementsMixin(TranslatableMixin(NucleonElement, NS)))\n);\n\n/**\n * Form element for creating or editing taxes (`fx:tax`).\n *\n * @slot name:before\n * @slot name:after\n *\n * @slot type:before\n * @slot type:after\n *\n * @slot country:before\n * @slot country:after\n *\n * @slot region:before\n * @slot region:after\n *\n * @slot city:before\n * @slot city:after\n *\n * @slot provider:before\n * @slot provider:after\n *\n * @slot rate:before\n * @slot rate:after\n *\n * @slot apply-to-shipping:before\n * @slot apply-to-shipping:after\n *\n * @slot use-origin-rates:before\n * @slot use-origin-rates:after\n *\n * @slot exempt-all-customer-tax-ids:before\n * @slot exempt-all-customer-tax-ids:after\n *\n * @slot timestamps:before\n * @slot timestamps:after\n *\n * @slot delete:before\n * @slot delete:after\n *\n * @slot create:before\n * @slot create:after\n *\n * @element foxy-tax-form\n * @since 1.13.0\n */\nexport class TaxForm extends Base<Data> {\n static get scopedElements(): ScopedElementsMap {\n return {\n 'vaadin-integer-field': customElements.get('vaadin-integer-field'),\n 'vaadin-text-field': customElements.get('vaadin-text-field'),\n 'vaadin-combo-box': customElements.get('vaadin-combo-box'),\n 'vaadin-button': customElements.get('vaadin-button'),\n 'foxy-internal-confirm-dialog': customElements.get('foxy-internal-confirm-dialog'),\n 'foxy-internal-sandbox': customElements.get('foxy-internal-sandbox'),\n 'foxy-spinner': customElements.get('foxy-spinner'),\n 'foxy-i18n': customElements.get('foxy-i18n'),\n 'x-property-table': PropertyTable,\n 'x-checkbox': Checkbox,\n 'x-dropdown': Dropdown,\n };\n }\n\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n countries: { type: String, noAccessor: true },\n regions: { type: String, noAccessor: true },\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ name: v }) => !!v || 'name_required',\n ({ name: v }) => !v || v.length <= 30 || 'name_too_long',\n ({ country: c, type: t }) => t !== 'country' || !!c || 'country_required',\n ({ country: c, type: t }) => t !== 'region' || !!c || 'country_required',\n ({ country: c, use_origin_rates: r }) => !r || !!c || 'country_required',\n ({ country: v }) => !v || !!v.match(/[A-Z]{2}/) || 'country_invalid',\n ({ region: v, type: t }) => t != 'region' || !!v || 'region_required',\n ({ region: v }) => !v || v.length <= 20 || 'region_too_long',\n ({ city: v }) => !v || v.length <= 50 || 'city_too_long',\n ({ city: c, type: t }) => t != 'local' || !!c || 'city_required',\n ({ rate: v }) => !v || v <= 100 || 'rate_invalid',\n ];\n }\n\n templates: Templates = {};\n\n private __previousCountry: string | undefined = undefined;\n\n private __countries = '';\n\n private __regions = '';\n\n private __countriesService = interpret(\n Nucleon.machine.withConfig({\n services: {\n sendGet: async () => {\n const response = await new TaxForm.API(this).fetch(this.countries);\n if (!response.ok) throw new Error(await response.text());\n return await response.json();\n },\n },\n })\n );\n\n private __regionsService = interpret(\n Nucleon.machine.withConfig({\n services: {\n sendGet: async () => {\n const url = new URL(this.regions);\n url.searchParams.set('country_code', this.form.country ?? 'US');\n const response = await new TaxForm.API(this).fetch(url.toString());\n if (!response.ok) throw new Error(await response.text());\n return await response.json();\n },\n },\n })\n );\n\n /** URI of the `fx:countries` hAPI resource. */\n get countries(): string {\n return this.__countries;\n }\n\n set countries(value: string) {\n this.__countries = value;\n\n if (value) {\n this.__countriesService.send({ type: 'FETCH' });\n } else {\n this.__countriesService.send({ type: 'SET_DATA', data: null });\n }\n }\n\n /** URI of the `fx:regions` hAPI resource. */\n get regions(): string {\n return this.__regions;\n }\n\n set regions(value: string) {\n this.__regions = value;\n\n if (value) {\n this.__regionsService.send({ type: 'FETCH' });\n } else {\n this.__regionsService.send({ type: 'SET_DATA', data: null });\n }\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n\n this.__countriesService.onTransition(({ changed }) => changed && this.requestUpdate());\n this.__countriesService.onChange(() => this.requestUpdate());\n this.__countriesService.start();\n\n this.__regionsService.onTransition(({ changed }) => changed && this.requestUpdate());\n this.__regionsService.onChange(() => this.requestUpdate());\n this.__regionsService.start();\n }\n\n render(): TemplateResult {\n return html`\n <div class=\"relative space-y-m\">\n ${this.__isNameHidden ? null : this.__renderName()}\n ${this.__isTypeHidden ? null : this.__renderType()}\n ${this.__isCountryHidden ? null : this.__renderCountry()}\n ${this.__isRegionHidden ? null : this.__renderRegion()}\n ${this.__isCityHidden ? null : this.__renderCity()}\n ${this.__isProviderHidden ? null : this.__renderProvider()}\n ${this.__isRateHidden ? null : this.__renderRate()}\n ${this.__isApplyToShippingHidden ? null : this.__renderApplyToShipping()}\n ${this.__isUseOriginRatesHidden ? null : this.__renderUseOriginRates()}\n ${this.__isExemptAllCustomerTaxIdsHidden ? null : this.__renderExemptAllCustomerTaxIds()}\n ${this.__isTimestampsHidden ? null : this.__renderTimestamps()}\n ${this.__isCreateHidden ? null : this.__renderCreate()}\n ${this.__isDeleteHidden ? null : this.__renderDelete()}\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': !this.in('busy') && !this.in('fail'),\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=${this.in('fail') ? 'error' : this.in('busy') ? 'busy' : 'empty'}\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 updated(changes: Map<keyof this, unknown>): void {\n super.updated(changes);\n\n if (this.form.country !== this.__previousCountry) {\n this.__previousCountry = this.form.country;\n this.__regionsService.send({ type: 'FETCH' });\n }\n\n // vaadin's combo box doesn't seem to validate on its own\n this.renderRoot.querySelectorAll('vaadin-combo-box').forEach(e => e.validate());\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n\n this.__countriesService.stop();\n this.__regionsService.stop();\n }\n\n private get __isNameHidden(): boolean {\n return this.hiddenSelector.matches('name', true);\n }\n\n private get __isTypeHidden(): boolean {\n return this.hiddenSelector.matches('type', true);\n }\n\n private get __isCountryHidden(): boolean {\n if (this.hiddenSelector.matches('country', true)) return true;\n if (this.form.type === 'union') return !this.form.use_origin_rates;\n return !(['country', 'region', 'local'] as unknown[]).includes(this.form.type);\n }\n\n private get __isRegionHidden(): boolean {\n if (this.hiddenSelector.matches('region', true)) return true;\n return this.form.type !== 'local' && this.form.type !== 'region';\n }\n\n private get __isCityHidden(): boolean {\n if (this.hiddenSelector.matches('city', true)) return true;\n return this.form.type !== 'local';\n }\n\n private get __isProviderHidden(): boolean {\n if (this.hiddenSelector.matches('provider', true)) return true;\n return !this.form.type || this.form.type === 'global' || this.form.type === 'local';\n }\n\n private get __isRateHidden(): boolean {\n if (this.hiddenSelector.matches('rate', true)) return true;\n return !this.form.type || this.form.is_live === true;\n }\n\n private get __isApplyToShippingHidden(): boolean {\n if (this.hiddenSelector.matches('apply-to-shipping', true)) return true;\n if (this.form.type === undefined) return true;\n return !!this.form.is_live && defaultLiveRateCountries.includes(this.form.country);\n }\n\n private get __isUseOriginRatesHidden(): boolean {\n if (this.hiddenSelector.matches('use-origin-rates', true)) return true;\n return this.form.type !== 'union' || !this.form.is_live || !!this.form.service_provider;\n }\n\n private get __isExemptAllCustomerTaxIdsHidden(): boolean {\n if (this.hiddenSelector.matches('exempt-all-customer-tax-ids', true)) return true;\n const provider = this.form.service_provider as string | undefined;\n return provider === undefined || provider === 'onesource' || provider === 'avalara';\n }\n\n private get __isTimestampsHidden(): boolean {\n if (this.hiddenSelector.matches('timestamps', true)) return true;\n return !this.data;\n }\n\n private get __isCreateHidden(): boolean {\n if (this.hiddenSelector.matches('create', true)) return true;\n return !!this.data;\n }\n\n private get __isDeleteHidden(): boolean {\n if (this.hiddenSelector.matches('delete', true)) return true;\n return !this.data;\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 __getValidator(prefix: string) {\n return () => !this.errors.some(err => err.startsWith(prefix));\n }\n\n private __renderName(): TemplateResult {\n return html`\n <div>\n ${this.renderTemplateOrSlot('name:before')}\n\n <vaadin-text-field\n data-testid=\"name\"\n class=\"w-full\"\n label=${this.t('name')}\n value=${ifDefined(this.form.name)}\n .checkValidity=${this.__getValidator('name')}\n .errorMessage=${this.__getErrorMessage('name')}\n ?disabled=${this.in('busy') || this.disabledSelector.matches('name', true)}\n ?readonly=${this.readonlySelector.matches('name', true)}\n required\n @keydown=${this.__submitOnEnter}\n @input=${(evt: CustomEvent) => {\n const newName = (evt.currentTarget as TextFieldElement).value;\n this.edit({ name: newName });\n }}\n >\n </vaadin-text-field>\n\n ${this.renderTemplateOrSlot('name:after')}\n </div>\n `;\n }\n\n private __renderType(): TemplateResult {\n if (!this.form.type) this.edit({ type: 'global' });\n\n return html`\n <div>\n ${this.renderTemplateOrSlot('type:before')}\n\n <x-dropdown\n data-testid=\"type\"\n label=${this.t('type')}\n value=${ifDefined(this.form.type)}\n class=\"w-full\"\n .items=${['global', 'union', 'country', 'region', 'local']}\n .getText=${(value: string) => this.t(`tax_${value}`)}\n ?disabled=${this.in('busy') || this.disabledSelector.matches('type', true)}\n ?readonly=${this.readonlySelector.matches('type', true)}\n @change=${(evt: DropdownChangeEvent) => {\n this.edit({\n type: evt.detail as Data['type'],\n country: '',\n region: '',\n city: '',\n service_provider: '',\n apply_to_shipping: false,\n use_origin_rates: false,\n exempt_all_customer_tax_ids: false,\n is_live: false,\n rate: 0,\n });\n }}\n >\n </x-dropdown>\n\n ${this.renderTemplateOrSlot('type:after')}\n </div>\n `;\n }\n\n private __renderCountry(): TemplateResult {\n const isLoadingItems = this.__countriesService.state.matches('busy');\n const isLoadingData = this.in('busy');\n const isLoading = isLoadingItems || isLoadingData;\n const json = this.__countriesService.state.context.data as Resource<Rels.Countries> | null;\n const items = Object.values(json?.values ?? {});\n\n return html`\n <div>\n ${this.renderTemplateOrSlot('country:before')}\n\n <vaadin-combo-box\n item-value-path=\"cc2\"\n item-label-path=\"default\"\n item-id-path=\"cc2\"\n data-testid=\"country\"\n label=\"${this.t('country')}${isLoadingItems ? ` • ${this.t('loading_busy')}` : ''}\"\n value=${ifDefined(isLoadingItems ? undefined : this.form.country)}\n class=\"w-full\"\n .checkValidity=${this.__getValidator('country')}\n .errorMessage=${this.__getErrorMessage('country')}\n .items=${items}\n ?allow-custom-value=${items.length === 0}\n ?disabled=${isLoading || this.disabledSelector.matches('country', true)}\n ?readonly=${this.readonlySelector.matches('country', true)}\n required\n @change=${(evt: CustomEvent) => {\n this.edit({\n country: (evt.currentTarget as ComboBoxElement).value,\n region: '',\n city: '',\n is_live: false,\n service_provider: '',\n });\n\n if (this.__isApplyToShippingHidden) this.edit({ apply_to_shipping: false });\n this.__regionsService.send({ type: 'FETCH' });\n }}\n >\n </vaadin-combo-box>\n\n ${this.renderTemplateOrSlot('country:after')}\n </div>\n `;\n }\n\n private __renderRegion(): TemplateResult {\n const isLoadingItems = this.__regionsService.state.matches('busy');\n const isLoadingData = this.in('busy');\n const isLoading = isLoadingItems || isLoadingData;\n const json = this.__regionsService.state.context.data as Resource<Rels.Regions> | null;\n const items = Object.values(json?.values ?? {});\n\n return html`\n <div>\n ${this.renderTemplateOrSlot('region:before')}\n\n <vaadin-combo-box\n item-value-path=\"code\"\n item-label-path=\"default\"\n item-id-path=\"code\"\n data-testid=\"region\"\n label=\"${this.t('region')}${isLoadingItems ? ` • ${this.t('loading_busy')}` : ''}\"\n value=${ifDefined(isLoadingItems ? undefined : this.form.region)}\n class=\"w-full\"\n .checkValidity=${this.__getValidator('region')}\n .errorMessage=${this.__getErrorMessage('region')}\n .items=${items}\n ?allow-custom-value=${items.length === 0}\n ?disabled=${isLoading || this.disabledSelector.matches('region', true)}\n ?readonly=${this.readonlySelector.matches('region', true)}\n required\n @change=${(evt: CustomEvent) => {\n const newRegion = (evt.currentTarget as ComboBoxElement).value;\n this.edit({ region: newRegion, city: '' });\n }}\n >\n </vaadin-combo-box>\n\n ${this.renderTemplateOrSlot('region:after')}\n </div>\n `;\n }\n\n private __renderCity(): TemplateResult {\n return html`\n <div>\n ${this.renderTemplateOrSlot('city:before')}\n\n <vaadin-text-field\n data-testid=\"city\"\n class=\"w-full\"\n label=${this.t('city')}\n value=${ifDefined(this.form.city)}\n .checkValidity=${this.__getValidator('city')}\n .errorMessage=${this.__getErrorMessage('city')}\n ?disabled=${this.in('busy') || this.disabledSelector.matches('city', true)}\n ?readonly=${this.readonlySelector.matches('city', true)}\n required\n @keydown=${this.__submitOnEnter}\n @input=${(evt: CustomEvent) => {\n const newCity = (evt.currentTarget as TextFieldElement).value;\n this.edit({ city: newCity });\n }}\n >\n </vaadin-text-field>\n\n ${this.renderTemplateOrSlot('city:after')}\n </div>\n `;\n }\n\n private __renderProvider(): TemplateResult {\n const items = [\n { label: this.t('tax_rate_provider_none'), value: 'none' },\n { label: 'Avalara AvaTax 15', value: 'avalara' },\n { label: 'Thomson Reuters ONESOURCE', value: 'onesource' },\n ];\n\n if (this.form.type === 'union' || defaultLiveRateCountries.includes(this.form.country)) {\n items.push({ label: this.t('tax_rate_provider_default'), value: 'default' });\n }\n\n if (taxJarLiveRateCountries.includes(this.form.country)) {\n items.push({ label: 'TaxJar', value: 'taxjar' });\n }\n\n return html`\n <div>\n ${this.renderTemplateOrSlot('provider:before')}\n\n <x-dropdown\n data-testid=\"provider\"\n label=${this.t('tax_rate_provider')}\n value=${this.form.service_provider || (this.form.is_live ? 'default' : 'none')}\n class=\"w-full\"\n .items=${items.map(item => item.value)}\n .getText=${(value: string) => items.find(item => item.value === value)?.label}\n ?disabled=${this.in('busy') || this.disabledSelector.matches('provider', true)}\n ?readonly=${this.readonlySelector.matches('provider', true)}\n @change=${(evt: DropdownChangeEvent) => {\n const newValue = evt.detail as string;\n const newProvider = ['none', 'default'].includes(newValue) ? '' : newValue;\n\n this.edit({\n service_provider: newProvider as Data['service_provider'],\n is_live: newValue !== 'none',\n });\n\n if (this.__isExemptAllCustomerTaxIdsHidden) {\n this.edit({ exempt_all_customer_tax_ids: false });\n }\n\n if (this.__isApplyToShippingHidden) this.edit({ apply_to_shipping: false });\n if (this.__isUseOriginRatesHidden) this.edit({ use_origin_rates: false });\n }}\n >\n </x-dropdown>\n\n ${this.renderTemplateOrSlot('provider:after')}\n </div>\n `;\n }\n\n private __renderRate(): TemplateResult {\n return html`\n <div>\n ${this.renderTemplateOrSlot('rate:before')}\n\n <vaadin-integer-field\n data-testid=\"rate\"\n class=\"w-full\"\n label=${this.t('tax_rate')}\n value=${ifDefined(this.form.rate)}\n min=\"0\"\n prevent-invalid-input\n has-controls\n .checkValidity=${this.__getValidator('rate')}\n .errorMessage=${this.__getErrorMessage('rate')}\n ?disabled=${this.in('busy') || this.disabledSelector.matches('rate', true)}\n ?readonly=${this.readonlySelector.matches('rate', true)}\n required\n @keydown=${this.__submitOnEnter}\n @change=${(evt: CustomEvent) => {\n const newRate = parseInt((evt.currentTarget as IntegerFieldElement).value);\n this.edit({ rate: newRate });\n }}\n >\n </vaadin-integer-field>\n\n ${this.renderTemplateOrSlot('rate:after')}\n </div>\n `;\n }\n\n private __renderApplyToShipping(): TemplateResult {\n return html`\n <div>\n ${this.renderTemplateOrSlot('apply-to-shipping:before')}\n\n <x-checkbox\n data-testid=\"apply-to-shipping\"\n class=\"leading-s\"\n ?disabled=${this.in('busy') || this.disabledSelector.matches('apply-to-shipping', true)}\n ?readonly=${this.readonlySelector.matches('apply-to-shipping', true)}\n ?checked=${!!this.form.apply_to_shipping}\n @change=${(evt: CheckboxChangeEvent) => this.edit({ apply_to_shipping: evt.detail })}\n >\n <foxy-i18n\n class=\"block text-m text-body\"\n lang=${this.lang}\n key=\"tax_apply_to_shipping\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <foxy-i18n\n class=\"block text-s text-secondary\"\n lang=${this.lang}\n key=\"tax_apply_to_shipping_explainer\"\n ns=${this.ns}\n >\n </foxy-i18n>\n </x-checkbox>\n\n ${this.renderTemplateOrSlot('apply-to-shipping:after')}\n </div>\n `;\n }\n\n private __renderUseOriginRates(): TemplateResult {\n return html`\n <div>\n ${this.renderTemplateOrSlot('use-origin-rates:before')}\n\n <x-checkbox\n data-testid=\"use-origin-rates\"\n class=\"leading-s\"\n ?disabled=${this.in('busy') || this.disabledSelector.matches('use-origin-rates', true)}\n ?readonly=${this.readonlySelector.matches('use-origin-rates', true)}\n ?checked=${!!this.form.use_origin_rates}\n @change=${(evt: CheckboxChangeEvent) => this.edit({ use_origin_rates: evt.detail })}\n >\n <foxy-i18n\n class=\"block text-m text-body\"\n lang=${this.lang}\n key=\"tax_use_origin_rates\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <foxy-i18n\n class=\"block text-s text-secondary\"\n lang=${this.lang}\n key=\"tax_use_origin_rates_explainer\"\n ns=${this.ns}\n >\n </foxy-i18n>\n </x-checkbox>\n\n ${this.renderTemplateOrSlot('use-origin-rates:after')}\n </div>\n `;\n }\n\n private __renderExemptAllCustomerTaxIds(): TemplateResult {\n const scope = 'exempt-all-customer-tax-ids';\n\n return html`\n <div>\n ${this.renderTemplateOrSlot(`${scope}:before`)}\n\n <x-checkbox\n data-testid=\"${scope}\"\n class=\"leading-s\"\n ?disabled=${this.in('busy') || this.disabledSelector.matches(scope, true)}\n ?readonly=${this.readonlySelector.matches(scope, true)}\n ?checked=${!!this.form.exempt_all_customer_tax_ids}\n @change=${(evt: CheckboxChangeEvent) => {\n this.edit({ exempt_all_customer_tax_ids: evt.detail });\n }}\n >\n <foxy-i18n\n class=\"block text-m text-body\"\n lang=${this.lang}\n key=\"tax_exempt_all_customer_tax_ids\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <foxy-i18n\n class=\"block text-s text-secondary\"\n lang=${this.lang}\n key=\"tax_exempt_all_customer_tax_ids_explainer\"\n ns=${this.ns}\n >\n </foxy-i18n>\n </x-checkbox>\n\n ${this.renderTemplateOrSlot(`${scope}:after`)}\n </div>\n `;\n }\n\n private __renderTimestamps(): TemplateResult {\n return html`\n <div>\n ${this.renderTemplateOrSlot('timestamps:before')}\n\n <x-property-table\n data-testid=\"timestamps\"\n .items=${(['date_modified', 'date_created'] as const).map(field => ({\n name: this.t(field),\n value: this.data?.[field]\n ? this.t('date', { value: new Date(this.data[field] as string) })\n : '',\n }))}\n >\n </x-property-table>\n\n ${this.renderTemplateOrSlot('timestamps:after')}\n </div>\n `;\n }\n\n private __renderCreate(): TemplateResult {\n const isCleanTemplateInvalid = this.in({ idle: { template: { clean: 'invalid' } } });\n const isDirtyTemplateInvalid = this.in({ idle: { template: { dirty: 'invalid' } } });\n const isCleanSnapshotInvalid = this.in({ idle: { snapshot: { clean: 'invalid' } } });\n const isDirtySnapshotInvalid = this.in({ idle: { snapshot: { dirty: 'invalid' } } });\n const isTemplateInvalid = isCleanTemplateInvalid || isDirtyTemplateInvalid;\n const isSnaphotInvalid = isCleanSnapshotInvalid || isDirtySnapshotInvalid;\n const isInvalid = isTemplateInvalid || isSnaphotInvalid;\n const isBusy = this.in('busy');\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=\"primary success\"\n ?disabled=${isBusy || isInvalid || this.disabledSelector.matches('create', true)}\n @click=${this.submit}\n >\n <foxy-i18n ns=${this.ns} key=\"create\" lang=${this.lang}></foxy-i18n>\n </vaadin-button>\n\n ${this.renderTemplateOrSlot('create:after')}\n </div>\n `;\n }\n\n private __renderDelete(): TemplateResult {\n return html`\n <div>\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=${this.lang}\n ns=${this.ns}\n id=\"confirm\"\n @hide=${(evt: DialogHideEvent) => !evt.detail.cancelled && this.delete()}\n >\n </foxy-internal-confirm-dialog>\n\n ${this.renderTemplateOrSlot('delete:before')}\n\n <vaadin-button\n data-testid=\"delete\"\n theme=\"primary error\"\n class=\"w-full\"\n ?disabled=${this.in('busy') || this.disabledSelector.matches('delete', true)}\n @click=${(evt: CustomEvent) => {\n const confirm = this.renderRoot.querySelector('#confirm') as InternalConfirmDialog;\n confirm.show(evt.currentTarget as ButtonElement);\n }}\n >\n <foxy-i18n ns=${this.ns} key=\"delete\" lang=${this.lang}></foxy-i18n>\n </vaadin-button>\n\n ${this.renderTemplateOrSlot('delete:after')}\n </div>\n `;\n }\n\n private __submitOnEnter(evt: KeyboardEvent) {\n if (evt.key === 'Enter') this.submit();\n }\n}\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { CSSResultArray, PropertyDeclarations, TemplateResult } from 'lit-element';
|
|
2
|
+
import { ScopedElementsMap } from '@open-wc/scoped-elements';
|
|
3
|
+
import { Data } from './types';
|
|
4
|
+
import { NucleonElement } from '../NucleonElement/NucleonElement';
|
|
5
|
+
declare const Base: typeof NucleonElement & import("lit-element").Constructor<import("../../../mixins/translatable").TranslatableMixinHost> & {
|
|
6
|
+
defaultNS: string;
|
|
7
|
+
} & import("lit-element").Constructor<import("../../../mixins/configurable").ConfigurableMixinHost> & {
|
|
8
|
+
styles: CSSResultArray;
|
|
9
|
+
} & import("@open-wc/dedupe-mixin").Constructor<import("@open-wc/scoped-elements/src/types").ScopedElementsHost>;
|
|
10
|
+
export declare class TemplateForm extends Base<Data> {
|
|
11
|
+
static get properties(): PropertyDeclarations;
|
|
12
|
+
static get styles(): CSSResultArray;
|
|
13
|
+
static get scopedElements(): ScopedElementsMap;
|
|
14
|
+
private __cacheState;
|
|
15
|
+
private __contentChoice;
|
|
16
|
+
render(): TemplateResult;
|
|
17
|
+
private __renderDescription;
|
|
18
|
+
private __renderContent;
|
|
19
|
+
private __renderTimestamps;
|
|
20
|
+
private __renderAction;
|
|
21
|
+
private __cache;
|
|
22
|
+
}
|
|
23
|
+
export {};
|