@foxy.io/elements 1.10.0 → 1.11.0-beta.4
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 +2 -2
- package/dist/cdn/foxy-address-form.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-form.js +1 -0
- package/dist/cdn/foxy-customer-api.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 +2 -2
- package/dist/cdn/foxy-customer.js +1 -1
- package/dist/cdn/foxy-customers-table.js +1 -1
- package/dist/cdn/foxy-donation.js +1 -1
- 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-method-card.js +1 -1
- package/dist/cdn/foxy-sign-in-form.js +1 -230
- package/dist/cdn/foxy-spinner.js +1 -1
- package/dist/cdn/foxy-subscription-card.js +1 -1
- package/dist/cdn/foxy-subscription-form.js +2 -2
- package/dist/cdn/foxy-subscriptions-table.js +1 -1
- package/dist/cdn/foxy-table.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-bf28ab5e.js → shared-005e1fc5.js} +1 -1
- package/dist/cdn/{shared-84203d52.js → shared-00811efe.js} +1 -1
- package/dist/cdn/shared-07867126.js +1 -0
- package/dist/cdn/{shared-c70d9713.js → shared-09384e52.js} +1 -1
- package/dist/cdn/{shared-8f34ce95.js → shared-1d138c7a.js} +1 -1
- package/dist/cdn/{shared-77bdf956.js → shared-2864fa12.js} +1 -1
- package/dist/cdn/{shared-525dd8c8.js → shared-420ef4a6.js} +1 -1
- package/dist/cdn/{shared-a7709d26.js → shared-423c0fb8.js} +1 -1
- package/dist/cdn/{shared-e058cb87.js → shared-50ff98d4.js} +1 -1
- package/dist/cdn/{shared-96de56d4.js → shared-524b3c41.js} +1 -1
- package/dist/cdn/{shared-bba615b8.js → shared-52d3b939.js} +19 -19
- package/dist/cdn/{shared-497fd63c.js → shared-670c194c.js} +1 -1
- package/dist/cdn/shared-7bc6d89f.js +1 -0
- package/dist/cdn/{shared-8057ee9c.js → shared-8dd2593f.js} +1 -1
- package/dist/cdn/{shared-4b33c6d2.js → shared-93df17fe.js} +1 -1
- package/dist/cdn/shared-957a60e1.js +1 -0
- package/dist/cdn/shared-96fcd96f.js +1 -0
- package/dist/cdn/{shared-9f78e096.js → shared-a4e05ba4.js} +1 -1
- package/dist/cdn/{shared-aac9fed8.js → shared-a6f0d39f.js} +1 -1
- package/dist/cdn/shared-b76c5f57.js +15 -0
- package/dist/cdn/{shared-23966eed.js → shared-c9e0b693.js} +1 -1
- package/dist/cdn/{shared-851b97ef.js → shared-d8160231.js} +1 -1
- package/dist/cdn/shared-dc5928e9.js +1 -0
- package/dist/cdn/{shared-a5fbfdc7.js → shared-e5ab982d.js} +1 -1
- package/dist/cdn/shared-f4119f12.js +230 -0
- package/dist/cdn/{shared-090432b4.js → shared-f62abcd5.js} +1 -1
- package/dist/cdn/{shared-6f84ea16.js → shared-f866a93f.js} +1 -1
- package/dist/cdn/{shared-f06d08d5.js → shared-fd05e1a1.js} +1 -1
- package/dist/cdn/translations/customer-portal-settings/en.json +4 -0
- package/dist/cdn/translations/shared/de.json +1 -0
- package/dist/cdn/translations/shared/en.json +1 -0
- package/dist/cdn/translations/shared/es.json +1 -0
- package/dist/elements/public/CollectionPage/CollectionPage.d.ts +2 -0
- package/dist/elements/public/CollectionPage/CollectionPage.js +7 -0
- package/dist/elements/public/CollectionPage/CollectionPage.js.map +1 -1
- package/dist/elements/public/CollectionPage/types.d.ts +3 -0
- package/dist/elements/public/CollectionPage/types.js.map +1 -1
- package/dist/elements/public/CollectionPages/CollectionPages.d.ts +2 -0
- package/dist/elements/public/CollectionPages/CollectionPages.js +13 -11
- package/dist/elements/public/CollectionPages/CollectionPages.js.map +1 -1
- package/dist/elements/public/CollectionPages/types.d.ts +3 -0
- package/dist/elements/public/CollectionPages/types.js.map +1 -1
- package/dist/elements/public/CustomFieldForm/CustomFieldForm.d.ts +49 -0
- package/dist/elements/public/CustomFieldForm/CustomFieldForm.js +235 -0
- package/dist/elements/public/CustomFieldForm/CustomFieldForm.js.map +1 -0
- package/dist/elements/public/CustomFieldForm/index.d.ts +9 -0
- package/dist/elements/public/CustomFieldForm/index.js +11 -0
- package/dist/elements/public/CustomFieldForm/index.js.map +1 -0
- package/dist/elements/public/CustomFieldForm/types.d.ts +22 -0
- package/dist/elements/public/CustomFieldForm/types.js +2 -0
- package/dist/elements/public/CustomFieldForm/types.js.map +1 -0
- package/dist/elements/public/CustomerPortalSettings/CustomerPortalSettings.js +17 -3
- package/dist/elements/public/CustomerPortalSettings/CustomerPortalSettings.js.map +1 -1
- package/dist/elements/public/CustomerPortalSettings/machine.js +8 -0
- package/dist/elements/public/CustomerPortalSettings/machine.js.map +1 -1
- package/dist/elements/public/CustomerPortalSettings/private/SSOSwitch/SSOSwitch.d.ts +13 -0
- package/dist/elements/public/CustomerPortalSettings/private/SSOSwitch/SSOSwitch.js +53 -0
- package/dist/elements/public/CustomerPortalSettings/private/SSOSwitch/SSOSwitch.js.map +1 -0
- package/dist/elements/public/CustomerPortalSettings/private/SSOSwitch/SSOSwitchChangeEvent.d.ts +3 -0
- package/dist/elements/public/CustomerPortalSettings/private/SSOSwitch/SSOSwitchChangeEvent.js +6 -0
- package/dist/elements/public/CustomerPortalSettings/private/SSOSwitch/SSOSwitchChangeEvent.js.map +1 -0
- package/dist/elements/public/CustomerPortalSettings/types.d.ts +5 -1
- package/dist/elements/public/CustomerPortalSettings/types.js.map +1 -1
- package/dist/elements/public/FormDialog/FormDialog.d.ts +2 -0
- package/dist/elements/public/FormDialog/FormDialog.js +4 -0
- package/dist/elements/public/FormDialog/FormDialog.js.map +1 -1
- package/dist/elements/public/NucleonElement/NucleonElement.d.ts +13 -0
- package/dist/elements/public/NucleonElement/NucleonElement.js +52 -15
- package/dist/elements/public/NucleonElement/NucleonElement.js.map +1 -1
- package/dist/elements/public/NucleonElement/serveFromCache.d.ts +1 -0
- package/dist/elements/public/NucleonElement/serveFromCache.js +49 -0
- package/dist/elements/public/NucleonElement/serveFromCache.js.map +1 -0
- package/dist/elements/public/index.d.ts +1 -0
- package/dist/elements/public/index.defined.d.ts +1 -0
- package/dist/elements/public/index.defined.js +1 -0
- package/dist/elements/public/index.defined.js.map +1 -1
- package/dist/elements/public/index.js +1 -0
- package/dist/elements/public/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/cdn/shared-1d0ef57d.js +0 -1
- package/dist/cdn/shared-6872bf5c.js +0 -1
- package/dist/cdn/shared-69d0ca61.js +0 -1
- package/dist/cdn/shared-92d03925.js +0 -15
- package/dist/cdn/shared-b13a5ed3.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomerPortalSettings.js","sourceRoot":"","sources":["../../../../src/elements/public/CustomerPortalSettings/CustomerPortalSettings.ts"],"names":[],"mappings":"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","sourcesContent":["import '@polymer/iron-icon';\nimport '@vaadin/vaadin-button';\n\nimport { ErrorScreen, FriendlyError } from '../../private/ErrorScreen/ErrorScreen';\nimport { FxBookmark, FxCustomerPortalSettings, FxStore } from '../../../types/hapi';\nimport { I18N, Page, Section, Skeleton } from '../../private/index';\nimport { PropertyDeclarations, TemplateResult, html } from 'lit-element';\nimport { RequestEvent, UnhandledRequestError } from '../../../events/request';\nimport {\n SessionDuration,\n SessionDurationChangeEvent,\n} from './private/SessionDuration/SessionDuration';\nimport { SessionSecret, SessionSecretChangeEvent } from './private/SessionSecret/SessionSecret';\nimport { Switch, SwitchChangeEvent } from '../../private/Switch/Switch';\n\nimport { CustomerPortalSettingsLoadSuccessEvent } from './types';\nimport { FrequencyModification } from './private/FrequencyModification/FrequencyModification';\nimport { FrequencyModificationChangeEvent } from './private/FrequencyModification/FrequencyModificationChangeEvent';\nimport { LoadingScreen } from '../../private/LoadingScreen/LoadingScreen';\nimport { NextDateModification } from './private/NextDateModification/NextDateModification';\nimport { NextDateModificationChangeEvent } from './private/NextDateModification/NextDateModificationChangeEvent';\nimport { OriginsList } from './private/OriginsList/OriginsList';\nimport { OriginsListChangeEvent } from './private/OriginsList/OriginsListChangeEvent';\nimport { ScopedElementsMap } from '@open-wc/scoped-elements';\nimport { Translatable } from '../../../mixins/translatable';\nimport cloneDeep from 'lodash-es/cloneDeep';\nimport { interpret } from 'xstate';\nimport { machine } from './machine';\n\nfunction throwIfNotOk(response: Response) {\n if (response.ok) return;\n throw new FriendlyError(response.status === 401 ? 'unauthorized' : 'unknown');\n}\n\nexport class CustomerPortalSettingsReadyEvent extends CustomEvent<void> {\n constructor() {\n super('ready');\n }\n}\n\nexport class CustomerPortalSettingsUpdateEvent extends CustomEvent<void> {\n constructor() {\n super('update');\n }\n}\n\nexport class CustomerPortalSettings extends Translatable {\n public static get scopedElements(): ScopedElementsMap {\n return {\n 'iron-icon': customElements.get('iron-icon'),\n 'vaadin-button': customElements.get('vaadin-button'),\n 'x-frequency-modification': FrequencyModification,\n 'x-next-date-modification': NextDateModification,\n 'x-session-duration': SessionDuration,\n 'x-session-secret': SessionSecret,\n 'x-loading-screen': LoadingScreen,\n 'x-error-screen': ErrorScreen,\n 'x-origins-list': OriginsList,\n 'x-skeleton': Skeleton,\n 'x-section': Section,\n 'x-switch': Switch,\n 'x-i18n': I18N,\n 'x-page': Page,\n };\n }\n\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n href: { type: String, noAccessor: true },\n };\n }\n\n public readonly rel = 'customer_portal_settings';\n\n private __machine = machine.withConfig({\n services: {\n load: () => this.__load(),\n save: () => this.__save(),\n },\n });\n\n private __service = interpret(this.__machine)\n .onTransition(({ changed }) => changed && this.requestUpdate())\n .onChange(() => this.requestUpdate())\n .start();\n\n public constructor() {\n super('customer-portal-settings');\n }\n\n public get href(): string | null {\n return this.__service.state.context.href;\n }\n\n public set href(data: string | null) {\n this.__service.send({ type: 'SET_HREF', data });\n }\n\n public render(): TemplateResult {\n if (this.__service.state.matches('error')) {\n return html`\n <x-error-screen\n data-testid=\"error\"\n lang=${this.lang}\n type=${this.__service.state.context.error!}\n reload\n @reload=${this.__reload}\n >\n </x-error-screen>\n `;\n }\n\n const { newResource } = this.__service.state.context;\n\n const matchesCreated = this.__service.state.matches('idle.dirty.created');\n const matchesDeleted = this.__service.state.matches('idle.dirty.deleted');\n const matchesUpdated = this.__service.state.matches('idle.dirty.updated');\n const matchesEnabled = this.__service.state.matches('idle.clean.enabled');\n const matchesInvalid =\n this.__service.state.matches('idle.dirty.updated.invalid') ||\n this.__service.state.matches('idle.dirty.created.invalid');\n\n return html`\n <x-page class=\"relative\">\n <x-switch\n slot=\"title\"\n data-testid=\"switch\"\n .disabled=${!this.__service.state.matches('idle') || !this._isI18nReady}\n .checked=${matchesEnabled || matchesCreated || matchesUpdated}\n @change=${(evt: SwitchChangeEvent) => {\n this.__service.send(evt.detail ? 'ENABLE' : 'DISABLE');\n }}\n >\n <x-i18n key=\"title\" class=\"text-xxl\" .ns=${this.ns} .lang=${this.lang}>\n <sup class=\"text-tertiary\">\n <x-i18n key=\"beta\" .ns=${this.ns} .lang=${this.lang}> </x-i18n>\n </sup>\n </x-i18n>\n </x-switch>\n\n <x-i18n\n class=\"block mr-xl\"\n slot=\"subtitle\"\n key=\"subtitle\"\n .ns=${this.ns}\n .lang=${this.lang}\n >\n </x-i18n>\n\n <x-section>\n <x-i18n slot=\"title\" key=\"origins.title\" .ns=${this.ns} .lang=${this.lang}></x-i18n>\n <x-i18n slot=\"subtitle\" key=\"origins.subtitle\" .ns=${this.ns} .lang=${this.lang}></x-i18n>\n\n <x-origins-list\n data-testid=\"origins\"\n .lang=${this.lang}\n .ns=${this.ns}\n .value=${newResource?.allowedOrigins ?? []}\n .disabled=${!newResource}\n @change=${(evt: OriginsListChangeEvent) => {\n this.__service.send({ type: 'SET_ORIGINS', value: evt.detail });\n }}\n >\n </x-origins-list>\n </x-section>\n\n <x-frequency-modification\n data-testid=\"fmod\"\n .lang=${this.lang}\n .ns=${this.ns}\n .value=${newResource?.subscriptions.allowFrequencyModification ?? []}\n ?disabled=${!newResource}\n @change=${(evt: FrequencyModificationChangeEvent) => {\n this.__service.send({ type: 'SET_FREQUENCY_MODIFICATION', value: evt.detail });\n }}\n >\n </x-frequency-modification>\n\n <x-next-date-modification\n data-testid=\"ndmod\"\n .lang=${this.lang}\n .ns=${this.ns}\n .value=${newResource?.subscriptions.allowNextDateModification ?? false}\n .disabled=${!newResource}\n @change=${(evt: NextDateModificationChangeEvent) => {\n this.__service.send({ type: 'SET_NEXT_DATE_MODIFICATION', value: evt.detail });\n }}\n >\n </x-next-date-modification>\n\n <x-section>\n <x-i18n slot=\"title\" key=\"advanced.title\" .ns=${this.ns} .lang=${this.lang}></x-i18n>\n <x-i18n slot=\"subtitle\" key=\"advanced.subtitle\" .ns=${this.ns} .lang=${this.lang}>\n </x-i18n>\n\n <x-session-duration\n data-testid=\"session\"\n .disabled=${!newResource || !this._isI18nReady}\n .value=${newResource?.sessionLifespanInMinutes ?? 1}\n .lang=${this.lang}\n .ns=${this.ns}\n @change=${({ detail }: SessionDurationChangeEvent) => {\n this.__service.send({ type: 'SET_SESSION', ...detail });\n }}\n >\n </x-session-duration>\n\n <x-session-secret\n data-testid=\"secret\"\n .disabled=${!newResource || !this._isI18nReady}\n .value=${newResource?.jwtSharedSecret ?? ''}\n .lang=${this.lang}\n .ns=${this.ns}\n @change=${({ detail }: SessionSecretChangeEvent) => {\n this.__service.send({ type: 'SET_SECRET', ...detail });\n }}\n >\n </x-session-secret>\n </x-section>\n\n ${this.__service.state.matches('idle.dirty')\n ? html`\n <div\n class=\"sticky flex justify-between rounded-t-l rounded-b-l shadow-m -mx-s p-s bg-contrast\"\n style=\"bottom: var(--lumo-space-m)\"\n >\n <vaadin-button\n data-testid=\"save\"\n theme=\"primary ${matchesDeleted ? 'error' : 'success'}\"\n .disabled=${matchesInvalid}\n @click=${() => this.__service.send('SAVE')}\n >\n <x-i18n\n lang=${this.lang}\n ns=${this.ns}\n key=\"save_${matchesCreated ? 'create' : matchesDeleted ? 'delete' : 'update'}\"\n >\n </x-i18n>\n </vaadin-button>\n\n <vaadin-button\n style=\"--lumo-contrast: var(--lumo-base-color)\"\n data-testid=\"reset\"\n theme=\"contrast tertiary\"\n @click=${() => this.__service.send('RESET')}\n >\n <x-i18n lang=${this.lang} key=\"undo_all\"></x-i18n>\n <iron-icon icon=\"lumo:reload\" slot=\"suffix\"></iron-icon>\n </vaadin-button>\n </div>\n `\n : this.__service.state.matches('busy')\n ? html`<x-loading-screen data-testid=\"loading\" class=\"mt-0\"></x-loading-screen>`\n : ''}\n </x-page>\n `;\n }\n\n private async __reload() {\n this.__service.stop();\n this.__service\n .onTransition(({ changed }) => changed && this.requestUpdate())\n .onChange(() => this.requestUpdate())\n .start();\n }\n\n private async __load(): Promise<CustomerPortalSettingsLoadSuccessEvent['data']> {\n if (this.href === null) throw new FriendlyError('setup_needed');\n\n try {\n await this.updateComplete;\n\n const resourceResponse = await RequestEvent.emit({ source: this, init: [this.href] });\n let resource: FxCustomerPortalSettings | null;\n let store: FxStore;\n\n if (resourceResponse.status.toString().startsWith('4')) {\n resource = null;\n\n const bookmarkResponse = await RequestEvent.emit({ source: this, init: ['/'] });\n throwIfNotOk(bookmarkResponse);\n\n const bookmark = (await bookmarkResponse.json()) as FxBookmark;\n const storeHref = bookmark._links['fx:store'].href;\n const storeResponse = await RequestEvent.emit({ source: this, init: [storeHref] });\n throwIfNotOk(storeResponse);\n\n store = (await storeResponse.json()) as FxStore;\n } else {\n throwIfNotOk(resourceResponse);\n resource = (await resourceResponse.json()) as FxCustomerPortalSettings;\n\n const storeHref = resource._links['fx:store'].href;\n const storeResponse = await RequestEvent.emit({ source: this, init: [storeHref] });\n throwIfNotOk(storeResponse);\n\n store = (await storeResponse.json()) as FxStore;\n }\n\n return { store, resource };\n } catch (err) {\n if (err instanceof FriendlyError) throw err;\n if (err instanceof UnhandledRequestError) throw new FriendlyError('setup_needed');\n throw new FriendlyError('unknown');\n } finally {\n await this.updateComplete;\n this.dispatchEvent(new CustomerPortalSettingsReadyEvent());\n }\n }\n\n private async __save(): Promise<void> {\n try {\n const context = this.__service.state.context;\n const payload = cloneDeep(context.newResource) as Record<string, unknown> | null;\n const method = payload ? 'PUT' : 'DELETE';\n\n if (payload) {\n delete payload._links;\n delete payload.date_created;\n delete payload.date_modified;\n }\n\n const options: RequestInit = { method, body: payload ? JSON.stringify(payload) : undefined };\n const response = await RequestEvent.emit({ source: this, init: [this.href!, options] });\n\n throwIfNotOk(response);\n } catch (err) {\n if (err instanceof FriendlyError) throw err;\n if (err instanceof UnhandledRequestError) throw new FriendlyError('setup_needed');\n throw new FriendlyError('unknown');\n } finally {\n await this.updateComplete;\n this.dispatchEvent(new CustomerPortalSettingsUpdateEvent());\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"CustomerPortalSettings.js","sourceRoot":"","sources":["../../../../src/elements/public/CustomerPortalSettings/CustomerPortalSettings.ts"],"names":[],"mappings":"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","sourcesContent":["import '@polymer/iron-icon';\nimport '@vaadin/vaadin-button';\n\nimport { ErrorScreen, FriendlyError } from '../../private/ErrorScreen/ErrorScreen';\nimport { FxBookmark, FxCustomerPortalSettings, FxStore } from '../../../types/hapi';\nimport { I18N, Page, Section, Skeleton } from '../../private/index';\nimport { PropertyDeclarations, TemplateResult, html } from 'lit-element';\nimport { RequestEvent, UnhandledRequestError } from '../../../events/request';\nimport {\n SessionDuration,\n SessionDurationChangeEvent,\n} from './private/SessionDuration/SessionDuration';\nimport { SessionSecret, SessionSecretChangeEvent } from './private/SessionSecret/SessionSecret';\nimport { Switch, SwitchChangeEvent } from '../../private/Switch/Switch';\n\nimport { CustomerPortalSettingsLoadSuccessEvent } from './types';\nimport { FrequencyModification } from './private/FrequencyModification/FrequencyModification';\nimport { FrequencyModificationChangeEvent } from './private/FrequencyModification/FrequencyModificationChangeEvent';\nimport { LoadingScreen } from '../../private/LoadingScreen/LoadingScreen';\nimport { NextDateModification } from './private/NextDateModification/NextDateModification';\nimport { NextDateModificationChangeEvent } from './private/NextDateModification/NextDateModificationChangeEvent';\nimport { OriginsList } from './private/OriginsList/OriginsList';\nimport { OriginsListChangeEvent } from './private/OriginsList/OriginsListChangeEvent';\nimport { SSOSwitch } from './private/SSOSwitch/SSOSwitch';\nimport { SSOSwitchChangeEvent } from './private/SSOSwitch/SSOSwitchChangeEvent';\nimport { ScopedElementsMap } from '@open-wc/scoped-elements';\nimport { Translatable } from '../../../mixins/translatable';\nimport cloneDeep from 'lodash-es/cloneDeep';\nimport { interpret } from 'xstate';\nimport { machine } from './machine';\n\nfunction throwIfNotOk(response: Response) {\n if (response.ok) return;\n throw new FriendlyError(response.status === 401 ? 'unauthorized' : 'unknown');\n}\n\nexport class CustomerPortalSettingsReadyEvent extends CustomEvent<void> {\n constructor() {\n super('ready');\n }\n}\n\nexport class CustomerPortalSettingsUpdateEvent extends CustomEvent<void> {\n constructor() {\n super('update');\n }\n}\n\nexport class CustomerPortalSettings extends Translatable {\n public static get scopedElements(): ScopedElementsMap {\n return {\n 'iron-icon': customElements.get('iron-icon'),\n 'vaadin-button': customElements.get('vaadin-button'),\n 'x-frequency-modification': FrequencyModification,\n 'x-next-date-modification': NextDateModification,\n 'x-session-duration': SessionDuration,\n 'x-session-secret': SessionSecret,\n 'x-loading-screen': LoadingScreen,\n 'x-error-screen': ErrorScreen,\n 'x-origins-list': OriginsList,\n 'x-sso-switch': SSOSwitch,\n 'x-skeleton': Skeleton,\n 'x-section': Section,\n 'x-switch': Switch,\n 'x-i18n': I18N,\n 'x-page': Page,\n };\n }\n\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n href: { type: String, noAccessor: true },\n };\n }\n\n public readonly rel = 'customer_portal_settings';\n\n private __machine = machine.withConfig({\n services: {\n load: () => this.__load(),\n save: () => this.__save(),\n },\n });\n\n private __service = interpret(this.__machine)\n .onTransition(({ changed }) => changed && this.requestUpdate())\n .onChange(() => this.requestUpdate())\n .start();\n\n public constructor() {\n super('customer-portal-settings');\n }\n\n public get href(): string | null {\n return this.__service.state.context.href;\n }\n\n public set href(data: string | null) {\n this.__service.send({ type: 'SET_HREF', data });\n }\n\n public render(): TemplateResult {\n if (this.__service.state.matches('error')) {\n return html`\n <x-error-screen\n data-testid=\"error\"\n lang=${this.lang}\n type=${this.__service.state.context.error!}\n reload\n @reload=${this.__reload}\n >\n </x-error-screen>\n `;\n }\n\n const { newResource } = this.__service.state.context;\n\n const matchesCreated = this.__service.state.matches('idle.dirty.created');\n const matchesDeleted = this.__service.state.matches('idle.dirty.deleted');\n const matchesUpdated = this.__service.state.matches('idle.dirty.updated');\n const matchesEnabled = this.__service.state.matches('idle.clean.enabled');\n const matchesInvalid =\n this.__service.state.matches('idle.dirty.updated.invalid') ||\n this.__service.state.matches('idle.dirty.created.invalid');\n\n return html`\n <x-page class=\"relative\">\n <x-switch\n slot=\"title\"\n data-testid=\"switch\"\n .disabled=${!this.__service.state.matches('idle') || !this._isI18nReady}\n .checked=${matchesEnabled || matchesCreated || matchesUpdated}\n @change=${(evt: SwitchChangeEvent) => {\n this.__service.send(evt.detail ? 'ENABLE' : 'DISABLE');\n }}\n >\n <x-i18n key=\"title\" class=\"text-xxl\" .ns=${this.ns} .lang=${this.lang}>\n <sup class=\"text-tertiary\">\n <x-i18n key=\"beta\" .ns=${this.ns} .lang=${this.lang}> </x-i18n>\n </sup>\n </x-i18n>\n </x-switch>\n\n <x-i18n\n class=\"block mr-xl\"\n slot=\"subtitle\"\n key=\"subtitle\"\n .ns=${this.ns}\n .lang=${this.lang}\n >\n </x-i18n>\n\n <x-section>\n <x-i18n slot=\"title\" key=\"origins.title\" .ns=${this.ns} .lang=${this.lang}></x-i18n>\n <x-i18n slot=\"subtitle\" key=\"origins.subtitle\" .ns=${this.ns} .lang=${this.lang}></x-i18n>\n\n <x-origins-list\n data-testid=\"origins\"\n .lang=${this.lang}\n .ns=${this.ns}\n .value=${newResource?.allowedOrigins ?? []}\n .disabled=${!newResource}\n @change=${(evt: OriginsListChangeEvent) => {\n this.__service.send({ type: 'SET_ORIGINS', value: evt.detail });\n }}\n >\n </x-origins-list>\n </x-section>\n\n <x-frequency-modification\n data-testid=\"fmod\"\n .lang=${this.lang}\n .ns=${this.ns}\n .value=${newResource?.subscriptions.allowFrequencyModification ?? []}\n ?disabled=${!newResource}\n @change=${(evt: FrequencyModificationChangeEvent) => {\n this.__service.send({ type: 'SET_FREQUENCY_MODIFICATION', value: evt.detail });\n }}\n >\n </x-frequency-modification>\n\n <x-next-date-modification\n data-testid=\"ndmod\"\n .lang=${this.lang}\n .ns=${this.ns}\n .value=${newResource?.subscriptions.allowNextDateModification ?? false}\n .disabled=${!newResource}\n @change=${(evt: NextDateModificationChangeEvent) => {\n this.__service.send({ type: 'SET_NEXT_DATE_MODIFICATION', value: evt.detail });\n }}\n >\n </x-next-date-modification>\n\n <x-sso-switch\n data-testid=\"sso\"\n .lang=${this.lang}\n .ns=${this.ns}\n .value=${newResource?.sso ?? false}\n .disabled=${!newResource}\n @change=${(evt: SSOSwitchChangeEvent) => {\n this.__service.send({ type: 'SET_SSO', value: evt.detail });\n }}\n >\n </x-sso-switch>\n\n <x-section>\n <x-i18n slot=\"title\" key=\"advanced.title\" .ns=${this.ns} .lang=${this.lang}></x-i18n>\n <x-i18n slot=\"subtitle\" key=\"advanced.subtitle\" .ns=${this.ns} .lang=${this.lang}>\n </x-i18n>\n\n <x-session-duration\n data-testid=\"session\"\n .disabled=${!newResource || !this._isI18nReady}\n .value=${newResource?.sessionLifespanInMinutes ?? 1}\n .lang=${this.lang}\n .ns=${this.ns}\n @change=${({ detail }: SessionDurationChangeEvent) => {\n this.__service.send({ type: 'SET_SESSION', ...detail });\n }}\n >\n </x-session-duration>\n\n <x-session-secret\n data-testid=\"secret\"\n .disabled=${!newResource || !this._isI18nReady}\n .value=${newResource?.jwtSharedSecret ?? ''}\n .lang=${this.lang}\n .ns=${this.ns}\n @change=${({ detail }: SessionSecretChangeEvent) => {\n this.__service.send({ type: 'SET_SECRET', ...detail });\n }}\n >\n </x-session-secret>\n </x-section>\n\n ${this.__service.state.matches('idle.dirty')\n ? html`\n <div\n class=\"sticky flex justify-between rounded-t-l rounded-b-l shadow-m -mx-s p-s bg-contrast\"\n style=\"bottom: var(--lumo-space-m)\"\n >\n <vaadin-button\n data-testid=\"save\"\n theme=\"primary ${matchesDeleted ? 'error' : 'success'}\"\n .disabled=${matchesInvalid}\n @click=${() => this.__service.send('SAVE')}\n >\n <x-i18n\n lang=${this.lang}\n ns=${this.ns}\n key=\"save_${matchesCreated ? 'create' : matchesDeleted ? 'delete' : 'update'}\"\n >\n </x-i18n>\n </vaadin-button>\n\n <vaadin-button\n style=\"--lumo-contrast: var(--lumo-base-color)\"\n data-testid=\"reset\"\n theme=\"contrast tertiary\"\n @click=${() => this.__service.send('RESET')}\n >\n <x-i18n lang=${this.lang} key=\"undo_all\"></x-i18n>\n <iron-icon icon=\"lumo:reload\" slot=\"suffix\"></iron-icon>\n </vaadin-button>\n </div>\n `\n : this.__service.state.matches('busy')\n ? html`<x-loading-screen data-testid=\"loading\" class=\"mt-0\"></x-loading-screen>`\n : ''}\n </x-page>\n `;\n }\n\n private async __reload() {\n this.__service.stop();\n this.__service\n .onTransition(({ changed }) => changed && this.requestUpdate())\n .onChange(() => this.requestUpdate())\n .start();\n }\n\n private async __load(): Promise<CustomerPortalSettingsLoadSuccessEvent['data']> {\n if (this.href === null) throw new FriendlyError('setup_needed');\n\n try {\n await this.updateComplete;\n\n const resourceResponse = await RequestEvent.emit({ source: this, init: [this.href] });\n let resource: FxCustomerPortalSettings | null;\n let store: FxStore;\n\n if (resourceResponse.status.toString().startsWith('4')) {\n resource = null;\n\n const bookmarkResponse = await RequestEvent.emit({ source: this, init: ['/'] });\n throwIfNotOk(bookmarkResponse);\n\n const bookmark = (await bookmarkResponse.json()) as FxBookmark;\n const storeHref = bookmark._links['fx:store'].href;\n const storeResponse = await RequestEvent.emit({ source: this, init: [storeHref] });\n throwIfNotOk(storeResponse);\n\n store = (await storeResponse.json()) as FxStore;\n } else {\n throwIfNotOk(resourceResponse);\n resource = (await resourceResponse.json()) as FxCustomerPortalSettings;\n\n const storeHref = resource._links['fx:store'].href;\n const storeResponse = await RequestEvent.emit({ source: this, init: [storeHref] });\n throwIfNotOk(storeResponse);\n\n store = (await storeResponse.json()) as FxStore;\n }\n\n return { store, resource };\n } catch (err) {\n if (err instanceof FriendlyError) throw err;\n if (err instanceof UnhandledRequestError) throw new FriendlyError('setup_needed');\n throw new FriendlyError('unknown');\n } finally {\n await this.updateComplete;\n this.dispatchEvent(new CustomerPortalSettingsReadyEvent());\n }\n }\n\n private async __save(): Promise<void> {\n try {\n const context = this.__service.state.context;\n const payload = cloneDeep(context.newResource) as Record<string, unknown> | null;\n const method = payload ? 'PUT' : 'DELETE';\n\n if (payload) {\n delete payload._links;\n delete payload.date_created;\n delete payload.date_modified;\n }\n\n const options: RequestInit = { method, body: payload ? JSON.stringify(payload) : undefined };\n const response = await RequestEvent.emit({ source: this, init: [this.href!, options] });\n\n throwIfNotOk(response);\n } catch (err) {\n if (err instanceof FriendlyError) throw err;\n if (err instanceof UnhandledRequestError) throw new FriendlyError('setup_needed');\n throw new FriendlyError('unknown');\n } finally {\n await this.updateComplete;\n this.dispatchEvent(new CustomerPortalSettingsUpdateEvent());\n }\n }\n}\n"]}
|
|
@@ -119,8 +119,15 @@ const setHref = actions.assign({
|
|
|
119
119
|
error: null,
|
|
120
120
|
href: (_, evt) => evt.data,
|
|
121
121
|
});
|
|
122
|
+
const setSSO = actions.assign({
|
|
123
|
+
newResource: ({ newResource }, evt) => {
|
|
124
|
+
const sso = evt.value;
|
|
125
|
+
return { ...newResource, sso };
|
|
126
|
+
},
|
|
127
|
+
});
|
|
122
128
|
// #endregion actions
|
|
123
129
|
const setters = {
|
|
130
|
+
SET_SSO: { target: '#cps.idle', actions: 'setSSO' },
|
|
124
131
|
SET_SECRET: { target: '#cps.idle', actions: 'setSecret' },
|
|
125
132
|
SET_ORIGINS: { target: '#cps.idle', actions: 'setOrigins' },
|
|
126
133
|
SET_SESSION: { target: '#cps.idle', actions: 'setSession' },
|
|
@@ -246,6 +253,7 @@ export const machine = Machine({
|
|
|
246
253
|
setSession,
|
|
247
254
|
setSecret,
|
|
248
255
|
setHref,
|
|
256
|
+
setSSO,
|
|
249
257
|
handleLoadingSuccess,
|
|
250
258
|
handleSavingSuccess,
|
|
251
259
|
handleError,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"machine.js","sourceRoot":"","sources":["../../../../src/elements/public/CustomerPortalSettings/machine.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CustomerPortalSettingsContext,\n CustomerPortalSettingsLoadErrorEvent,\n CustomerPortalSettingsLoadSuccessEvent,\n CustomerPortalSettingsSetFrequencyModificationEvent,\n CustomerPortalSettingsSetHrefEvent,\n CustomerPortalSettingsSetNextDateModificationEvent,\n CustomerPortalSettingsSetOriginsEvent,\n CustomerPortalSettingsSetSecretEvent,\n CustomerPortalSettingsSetSessionEvent,\n} from './types';\nimport { Machine, actions } from 'xstate';\n\nimport isEqual from 'lodash-es/isEqual';\nimport random from 'lodash-es/random';\nimport times from 'lodash-es/times';\n\n// #region guards\n\nconst isClean = (ctx: CustomerPortalSettingsContext): boolean => {\n return isEqual(ctx.newResource, ctx.oldResource);\n};\n\nconst isLoaded = (ctx: CustomerPortalSettingsContext): boolean => {\n return ctx.store !== null;\n};\n\nconst isInvalid = (ctx: CustomerPortalSettingsContext): boolean => {\n return ctx.invalid.length > 0;\n};\n\nconst isEnabled = (ctx: CustomerPortalSettingsContext): boolean => {\n return ctx.oldResource !== null;\n};\n\nconst isCreated = (ctx: CustomerPortalSettingsContext): boolean => {\n return ctx.oldResource === null && ctx.newResource !== null;\n};\n\nconst isDeleted = (ctx: CustomerPortalSettingsContext): boolean => {\n return ctx.oldResource !== null && ctx.newResource === null;\n};\n\nconst isSetupNeeded = (ctx: CustomerPortalSettingsContext): boolean => {\n return ctx.href === null;\n};\n\n// #endregion guards\n\n// #region actions\n\nconst handleError = actions.assign<CustomerPortalSettingsContext>({\n error: (_, evt) => (evt as CustomerPortalSettingsLoadErrorEvent).data.type,\n});\n\nconst handleLoadingSuccess = actions.assign<CustomerPortalSettingsContext>({\n oldResource: (_, evt) => (evt as CustomerPortalSettingsLoadSuccessEvent).data.resource,\n newResource: (_, evt) => (evt as CustomerPortalSettingsLoadSuccessEvent).data.resource,\n store: (_, evt) => (evt as CustomerPortalSettingsLoadSuccessEvent).data.store,\n});\n\nconst handleSavingSuccess = actions.assign<CustomerPortalSettingsContext>({\n oldResource: ctx => ctx.newResource,\n});\n\nconst reset = actions.assign<CustomerPortalSettingsContext>({\n invalid: [],\n newResource: ({ oldResource }) => oldResource,\n});\n\nconst create = actions.assign<CustomerPortalSettingsContext>({\n invalid: [],\n newResource: ctx => ({\n allowedOrigins: [],\n subscriptions: { allowFrequencyModification: [], allowNextDateModification: false },\n jwtSharedSecret: times(72, () => random(35).toString(36)).join(''),\n sessionLifespanInMinutes: 40320,\n sso: false,\n date_created: new Date().toISOString(),\n date_modified: new Date().toISOString(),\n _links: {\n 'fx:store': ctx.store!._links.self,\n 'curies': ctx.store!._links.curies,\n 'self': ctx.store!._links['fx:customer_portal_settings'],\n },\n }),\n});\n\nconst remove = actions.assign<CustomerPortalSettingsContext>({\n newResource: null,\n});\n\nconst requireSetup = actions.assign<CustomerPortalSettingsContext>({\n error: 'setup_needed',\n});\n\nconst setOrigins = actions.assign<CustomerPortalSettingsContext>({\n newResource: ({ newResource }, evt) => {\n const allowedOrigins = (evt as CustomerPortalSettingsSetOriginsEvent).value;\n return { ...newResource!, allowedOrigins };\n },\n});\n\nconst setFrequencyModification = actions.assign<CustomerPortalSettingsContext>({\n newResource: ({ newResource }, evt) => {\n const typedEvt = evt as CustomerPortalSettingsSetFrequencyModificationEvent;\n const allowFrequencyModification = typedEvt.value;\n return {\n ...newResource!,\n subscriptions: { ...newResource!.subscriptions, allowFrequencyModification },\n };\n },\n});\n\nconst setNextDateModification = actions.assign<CustomerPortalSettingsContext>({\n newResource: ({ newResource }, evt) => {\n const typedEvt = evt as CustomerPortalSettingsSetNextDateModificationEvent;\n const allowNextDateModification = typedEvt.value;\n return {\n ...newResource!,\n subscriptions: { ...newResource!.subscriptions, allowNextDateModification },\n };\n },\n});\n\nconst setSession = actions.assign<CustomerPortalSettingsContext>({\n invalid: (ctx, evt) => {\n const key = 'sessionLifespanInMinutes';\n const invalid = (evt as CustomerPortalSettingsSetSecretEvent).invalid;\n return ctx.invalid.filter(v => v !== key).concat(...(invalid ? ([key] as const) : []));\n },\n newResource: ({ newResource }, evt) => {\n const sessionLifespanInMinutes = (evt as CustomerPortalSettingsSetSessionEvent).value;\n return { ...newResource!, sessionLifespanInMinutes };\n },\n});\n\nconst setSecret = actions.assign<CustomerPortalSettingsContext>({\n invalid: (ctx, evt) => {\n const key = 'jwtSharedSecret';\n const invalid = (evt as CustomerPortalSettingsSetSecretEvent).invalid;\n return ctx.invalid.filter(v => v !== key).concat(...(invalid ? ([key] as const) : []));\n },\n newResource: ({ newResource }, evt) => {\n const jwtSharedSecret = (evt as CustomerPortalSettingsSetSecretEvent).value;\n return { ...newResource!, jwtSharedSecret };\n },\n});\n\nconst setHref = actions.assign<CustomerPortalSettingsContext>({\n oldResource: null,\n newResource: null,\n store: null,\n error: null,\n href: (_, evt) => (evt as CustomerPortalSettingsSetHrefEvent).data,\n});\n\n// #endregion actions\n\nconst setters = {\n SET_SECRET: { target: '#cps.idle', actions: 'setSecret' },\n SET_ORIGINS: { target: '#cps.idle', actions: 'setOrigins' },\n SET_SESSION: { target: '#cps.idle', actions: 'setSession' },\n SET_FREQUENCY_MODIFICATION: {\n target: '#cps.idle',\n actions: 'setFrequencyModification',\n },\n SET_NEXT_DATE_MODIFICATION: {\n target: '#cps.idle',\n actions: 'setNextDateModification',\n },\n};\n\nconst validity = {\n initial: 'unknown',\n states: {\n unknown: {\n always: [{ target: 'invalid', cond: 'isInvalid' }, { target: 'valid' }],\n },\n invalid: {},\n valid: {},\n },\n};\n\nexport const machine = Machine<CustomerPortalSettingsContext>(\n {\n id: 'cps',\n initial: 'unknown',\n context: {\n oldResource: null,\n newResource: null,\n invalid: [],\n store: null,\n error: null,\n href: null,\n },\n states: {\n unknown: {\n always: [\n { target: 'error', cond: 'isSetupNeeded', actions: 'requireSetup' },\n { target: 'idle', cond: 'isLoaded' },\n { target: 'busy' },\n ],\n },\n error: { on: { RELOAD: { target: 'busy.loading' } } },\n busy: {\n initial: 'loading',\n states: {\n loading: {\n invoke: {\n src: 'load',\n onDone: {\n target: '#cps.idle.clean',\n actions: 'handleLoadingSuccess',\n },\n onError: {\n target: '#cps.error',\n actions: 'handleError',\n },\n },\n },\n saving: {\n invoke: {\n src: 'save',\n onDone: {\n target: '#cps.idle.clean',\n actions: 'handleSavingSuccess',\n },\n onError: {\n target: '#cps.error',\n actions: 'handleError',\n },\n },\n },\n },\n },\n idle: {\n initial: 'unknown',\n on: {\n DISABLE: { target: '#cps.idle', actions: 'remove' },\n ENABLE: { target: '#cps.idle', actions: 'create' },\n RESET: { target: '#cps.idle', actions: 'reset' },\n },\n states: {\n unknown: {\n always: [{ target: 'clean', cond: 'isClean' }, { target: 'dirty' }],\n },\n clean: {\n initial: 'unknown',\n states: {\n unknown: {\n always: [{ target: 'enabled', cond: 'isEnabled' }, { target: 'disabled' }],\n },\n enabled: { on: setters },\n disabled: {},\n },\n },\n dirty: {\n on: { SAVE: '#cps.busy.saving' },\n initial: 'unknown',\n states: {\n unknown: {\n always: [\n { target: 'created', cond: 'isCreated' },\n { target: 'deleted', cond: 'isDeleted' },\n { target: 'updated' },\n ],\n },\n created: { on: setters, ...validity },\n updated: { on: setters, ...validity },\n deleted: {},\n },\n },\n },\n },\n },\n on: {\n SET_HREF: { actions: 'setHref', target: 'unknown' },\n },\n },\n {\n guards: { isClean, isLoaded, isInvalid, isEnabled, isCreated, isDeleted, isSetupNeeded },\n actions: {\n setFrequencyModification,\n setNextDateModification,\n setOrigins,\n setSession,\n setSecret,\n setHref,\n handleLoadingSuccess,\n handleSavingSuccess,\n handleError,\n create,\n reset,\n remove,\n requireSetup,\n },\n }\n);\n"]}
|
|
1
|
+
{"version":3,"file":"machine.js","sourceRoot":"","sources":["../../../../src/elements/public/CustomerPortalSettings/machine.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CustomerPortalSettingsContext,\n CustomerPortalSettingsLoadErrorEvent,\n CustomerPortalSettingsLoadSuccessEvent,\n CustomerPortalSettingsSetFrequencyModificationEvent,\n CustomerPortalSettingsSetHrefEvent,\n CustomerPortalSettingsSetNextDateModificationEvent,\n CustomerPortalSettingsSetOriginsEvent,\n CustomerPortalSettingsSetSSOEvent,\n CustomerPortalSettingsSetSecretEvent,\n CustomerPortalSettingsSetSessionEvent,\n} from './types';\nimport { Machine, actions } from 'xstate';\n\nimport isEqual from 'lodash-es/isEqual';\nimport random from 'lodash-es/random';\nimport times from 'lodash-es/times';\n\n// #region guards\n\nconst isClean = (ctx: CustomerPortalSettingsContext): boolean => {\n return isEqual(ctx.newResource, ctx.oldResource);\n};\n\nconst isLoaded = (ctx: CustomerPortalSettingsContext): boolean => {\n return ctx.store !== null;\n};\n\nconst isInvalid = (ctx: CustomerPortalSettingsContext): boolean => {\n return ctx.invalid.length > 0;\n};\n\nconst isEnabled = (ctx: CustomerPortalSettingsContext): boolean => {\n return ctx.oldResource !== null;\n};\n\nconst isCreated = (ctx: CustomerPortalSettingsContext): boolean => {\n return ctx.oldResource === null && ctx.newResource !== null;\n};\n\nconst isDeleted = (ctx: CustomerPortalSettingsContext): boolean => {\n return ctx.oldResource !== null && ctx.newResource === null;\n};\n\nconst isSetupNeeded = (ctx: CustomerPortalSettingsContext): boolean => {\n return ctx.href === null;\n};\n\n// #endregion guards\n\n// #region actions\n\nconst handleError = actions.assign<CustomerPortalSettingsContext>({\n error: (_, evt) => (evt as CustomerPortalSettingsLoadErrorEvent).data.type,\n});\n\nconst handleLoadingSuccess = actions.assign<CustomerPortalSettingsContext>({\n oldResource: (_, evt) => (evt as CustomerPortalSettingsLoadSuccessEvent).data.resource,\n newResource: (_, evt) => (evt as CustomerPortalSettingsLoadSuccessEvent).data.resource,\n store: (_, evt) => (evt as CustomerPortalSettingsLoadSuccessEvent).data.store,\n});\n\nconst handleSavingSuccess = actions.assign<CustomerPortalSettingsContext>({\n oldResource: ctx => ctx.newResource,\n});\n\nconst reset = actions.assign<CustomerPortalSettingsContext>({\n invalid: [],\n newResource: ({ oldResource }) => oldResource,\n});\n\nconst create = actions.assign<CustomerPortalSettingsContext>({\n invalid: [],\n newResource: ctx => ({\n allowedOrigins: [],\n subscriptions: { allowFrequencyModification: [], allowNextDateModification: false },\n jwtSharedSecret: times(72, () => random(35).toString(36)).join(''),\n sessionLifespanInMinutes: 40320,\n sso: false,\n date_created: new Date().toISOString(),\n date_modified: new Date().toISOString(),\n _links: {\n 'fx:store': ctx.store!._links.self,\n 'curies': ctx.store!._links.curies,\n 'self': ctx.store!._links['fx:customer_portal_settings'],\n },\n }),\n});\n\nconst remove = actions.assign<CustomerPortalSettingsContext>({\n newResource: null,\n});\n\nconst requireSetup = actions.assign<CustomerPortalSettingsContext>({\n error: 'setup_needed',\n});\n\nconst setOrigins = actions.assign<CustomerPortalSettingsContext>({\n newResource: ({ newResource }, evt) => {\n const allowedOrigins = (evt as CustomerPortalSettingsSetOriginsEvent).value;\n return { ...newResource!, allowedOrigins };\n },\n});\n\nconst setFrequencyModification = actions.assign<CustomerPortalSettingsContext>({\n newResource: ({ newResource }, evt) => {\n const typedEvt = evt as CustomerPortalSettingsSetFrequencyModificationEvent;\n const allowFrequencyModification = typedEvt.value;\n return {\n ...newResource!,\n subscriptions: { ...newResource!.subscriptions, allowFrequencyModification },\n };\n },\n});\n\nconst setNextDateModification = actions.assign<CustomerPortalSettingsContext>({\n newResource: ({ newResource }, evt) => {\n const typedEvt = evt as CustomerPortalSettingsSetNextDateModificationEvent;\n const allowNextDateModification = typedEvt.value;\n return {\n ...newResource!,\n subscriptions: { ...newResource!.subscriptions, allowNextDateModification },\n };\n },\n});\n\nconst setSession = actions.assign<CustomerPortalSettingsContext>({\n invalid: (ctx, evt) => {\n const key = 'sessionLifespanInMinutes';\n const invalid = (evt as CustomerPortalSettingsSetSecretEvent).invalid;\n return ctx.invalid.filter(v => v !== key).concat(...(invalid ? ([key] as const) : []));\n },\n newResource: ({ newResource }, evt) => {\n const sessionLifespanInMinutes = (evt as CustomerPortalSettingsSetSessionEvent).value;\n return { ...newResource!, sessionLifespanInMinutes };\n },\n});\n\nconst setSecret = actions.assign<CustomerPortalSettingsContext>({\n invalid: (ctx, evt) => {\n const key = 'jwtSharedSecret';\n const invalid = (evt as CustomerPortalSettingsSetSecretEvent).invalid;\n return ctx.invalid.filter(v => v !== key).concat(...(invalid ? ([key] as const) : []));\n },\n newResource: ({ newResource }, evt) => {\n const jwtSharedSecret = (evt as CustomerPortalSettingsSetSecretEvent).value;\n return { ...newResource!, jwtSharedSecret };\n },\n});\n\nconst setHref = actions.assign<CustomerPortalSettingsContext>({\n oldResource: null,\n newResource: null,\n store: null,\n error: null,\n href: (_, evt) => (evt as CustomerPortalSettingsSetHrefEvent).data,\n});\n\nconst setSSO = actions.assign<CustomerPortalSettingsContext>({\n newResource: ({ newResource }, evt) => {\n const sso = (evt as CustomerPortalSettingsSetSSOEvent).value;\n return { ...newResource!, sso };\n },\n});\n\n// #endregion actions\n\nconst setters = {\n SET_SSO: { target: '#cps.idle', actions: 'setSSO' },\n SET_SECRET: { target: '#cps.idle', actions: 'setSecret' },\n SET_ORIGINS: { target: '#cps.idle', actions: 'setOrigins' },\n SET_SESSION: { target: '#cps.idle', actions: 'setSession' },\n SET_FREQUENCY_MODIFICATION: {\n target: '#cps.idle',\n actions: 'setFrequencyModification',\n },\n SET_NEXT_DATE_MODIFICATION: {\n target: '#cps.idle',\n actions: 'setNextDateModification',\n },\n};\n\nconst validity = {\n initial: 'unknown',\n states: {\n unknown: {\n always: [{ target: 'invalid', cond: 'isInvalid' }, { target: 'valid' }],\n },\n invalid: {},\n valid: {},\n },\n};\n\nexport const machine = Machine<CustomerPortalSettingsContext>(\n {\n id: 'cps',\n initial: 'unknown',\n context: {\n oldResource: null,\n newResource: null,\n invalid: [],\n store: null,\n error: null,\n href: null,\n },\n states: {\n unknown: {\n always: [\n { target: 'error', cond: 'isSetupNeeded', actions: 'requireSetup' },\n { target: 'idle', cond: 'isLoaded' },\n { target: 'busy' },\n ],\n },\n error: { on: { RELOAD: { target: 'busy.loading' } } },\n busy: {\n initial: 'loading',\n states: {\n loading: {\n invoke: {\n src: 'load',\n onDone: {\n target: '#cps.idle.clean',\n actions: 'handleLoadingSuccess',\n },\n onError: {\n target: '#cps.error',\n actions: 'handleError',\n },\n },\n },\n saving: {\n invoke: {\n src: 'save',\n onDone: {\n target: '#cps.idle.clean',\n actions: 'handleSavingSuccess',\n },\n onError: {\n target: '#cps.error',\n actions: 'handleError',\n },\n },\n },\n },\n },\n idle: {\n initial: 'unknown',\n on: {\n DISABLE: { target: '#cps.idle', actions: 'remove' },\n ENABLE: { target: '#cps.idle', actions: 'create' },\n RESET: { target: '#cps.idle', actions: 'reset' },\n },\n states: {\n unknown: {\n always: [{ target: 'clean', cond: 'isClean' }, { target: 'dirty' }],\n },\n clean: {\n initial: 'unknown',\n states: {\n unknown: {\n always: [{ target: 'enabled', cond: 'isEnabled' }, { target: 'disabled' }],\n },\n enabled: { on: setters },\n disabled: {},\n },\n },\n dirty: {\n on: { SAVE: '#cps.busy.saving' },\n initial: 'unknown',\n states: {\n unknown: {\n always: [\n { target: 'created', cond: 'isCreated' },\n { target: 'deleted', cond: 'isDeleted' },\n { target: 'updated' },\n ],\n },\n created: { on: setters, ...validity },\n updated: { on: setters, ...validity },\n deleted: {},\n },\n },\n },\n },\n },\n on: {\n SET_HREF: { actions: 'setHref', target: 'unknown' },\n },\n },\n {\n guards: { isClean, isLoaded, isInvalid, isEnabled, isCreated, isDeleted, isSetupNeeded },\n actions: {\n setFrequencyModification,\n setNextDateModification,\n setOrigins,\n setSession,\n setSecret,\n setHref,\n setSSO,\n handleLoadingSuccess,\n handleSavingSuccess,\n handleError,\n create,\n reset,\n remove,\n requireSetup,\n },\n }\n);\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { PropertyDeclarations, TemplateResult } from 'lit-element';
|
|
2
|
+
import { ScopedElementsMap } from '@open-wc/scoped-elements';
|
|
3
|
+
import { Translatable } from '../../../../../mixins/translatable';
|
|
4
|
+
export declare class SSOSwitch extends Translatable {
|
|
5
|
+
static get scopedElements(): ScopedElementsMap;
|
|
6
|
+
static get properties(): PropertyDeclarations;
|
|
7
|
+
disabled: boolean;
|
|
8
|
+
value: boolean;
|
|
9
|
+
constructor();
|
|
10
|
+
render(): TemplateResult;
|
|
11
|
+
private __toggleValue;
|
|
12
|
+
private __sendChange;
|
|
13
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { I18N, Section } from "../../../../private/index.js";
|
|
2
|
+
import { html } from 'lit-element';
|
|
3
|
+
import { SSOSwitchChangeEvent } from "./SSOSwitchChangeEvent.js";
|
|
4
|
+
import { Switch } from "../../../../private/Switch/Switch.js";
|
|
5
|
+
import { Translatable } from "../../../../../mixins/translatable.js";
|
|
6
|
+
export class SSOSwitch extends Translatable {
|
|
7
|
+
constructor() {
|
|
8
|
+
super('customer-portal-settings');
|
|
9
|
+
this.disabled = false;
|
|
10
|
+
this.value = false;
|
|
11
|
+
}
|
|
12
|
+
static get scopedElements() {
|
|
13
|
+
return {
|
|
14
|
+
'x-section': Section,
|
|
15
|
+
'x-switch': Switch,
|
|
16
|
+
'x-i18n': I18N,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
static get properties() {
|
|
20
|
+
return {
|
|
21
|
+
...super.properties,
|
|
22
|
+
disabled: { type: Boolean },
|
|
23
|
+
value: { type: Array },
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
render() {
|
|
27
|
+
return html `
|
|
28
|
+
<x-section>
|
|
29
|
+
<x-switch
|
|
30
|
+
slot="title"
|
|
31
|
+
class="-my-xs"
|
|
32
|
+
data-testid="toggle"
|
|
33
|
+
.checked=${Boolean(this.value)}
|
|
34
|
+
.disabled=${this.disabled || !this._isI18nReady}
|
|
35
|
+
@change=${this.__toggleValue}
|
|
36
|
+
>
|
|
37
|
+
<x-i18n .ns=${this.ns} .lang=${this.lang} key="sso.title" class="text-l"></x-i18n>
|
|
38
|
+
</x-switch>
|
|
39
|
+
|
|
40
|
+
<x-i18n .ns=${this.ns} .lang=${this.lang} key="sso.subtitle" slot="subtitle" class="mr-xl">
|
|
41
|
+
</x-i18n>
|
|
42
|
+
</x-section>
|
|
43
|
+
`;
|
|
44
|
+
}
|
|
45
|
+
__toggleValue() {
|
|
46
|
+
this.value = !this.value;
|
|
47
|
+
this.__sendChange();
|
|
48
|
+
}
|
|
49
|
+
__sendChange() {
|
|
50
|
+
this.dispatchEvent(new SSOSwitchChangeEvent(this.value));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=SSOSwitch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SSOSwitch.js","sourceRoot":"","sources":["../../../../../../src/elements/public/CustomerPortalSettings/private/SSOSwitch/SSOSwitch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,qCAAkC;AAC1D,OAAO,EAAwC,IAAI,EAAE,MAAM,aAAa,CAAC;AAEzE,OAAO,EAAE,oBAAoB,EAAE,kCAA+B;AAE9D,OAAO,EAAE,MAAM,EAAE,6CAA0C;AAC3D,OAAO,EAAE,YAAY,EAAE,8CAA2C;AAElE,MAAM,OAAO,SAAU,SAAQ,YAAY;IAqBzC;QACE,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAL7B,aAAQ,GAAG,KAAK,CAAC;QAEjB,UAAK,GAAG,KAAK,CAAC;IAIrB,CAAC;IAtBM,MAAM,KAAK,cAAc;QAC9B,OAAO;YACL,WAAW,EAAE,OAAO;YACpB,UAAU,EAAE,MAAM;YAClB,QAAQ,EAAE,IAAI;SACf,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;SACvB,CAAC;IACJ,CAAC;IAUM,MAAM;QACX,OAAO,IAAI,CAAA;;;;;;qBAMM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;sBAClB,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY;oBACrC,IAAI,CAAC,aAAa;;wBAEd,IAAI,CAAC,EAAE,UAAU,IAAI,CAAC,IAAI;;;sBAG5B,IAAI,CAAC,EAAE,UAAU,IAAI,CAAC,IAAI;;;KAG3C,CAAC;IACJ,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,aAAa,CAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3D,CAAC;CACF","sourcesContent":["import { I18N, Section } from '../../../../private/index';\nimport { PropertyDeclarations, TemplateResult, html } from 'lit-element';\n\nimport { SSOSwitchChangeEvent } from './SSOSwitchChangeEvent';\nimport { ScopedElementsMap } from '@open-wc/scoped-elements';\nimport { Switch } from '../../../../private/Switch/Switch';\nimport { Translatable } from '../../../../../mixins/translatable';\n\nexport class SSOSwitch extends Translatable {\n public static get scopedElements(): ScopedElementsMap {\n return {\n 'x-section': Section,\n 'x-switch': Switch,\n 'x-i18n': I18N,\n };\n }\n\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n disabled: { type: Boolean },\n value: { type: Array },\n };\n }\n\n public disabled = false;\n\n public value = false;\n\n public constructor() {\n super('customer-portal-settings');\n }\n\n public render(): TemplateResult {\n return html`\n <x-section>\n <x-switch\n slot=\"title\"\n class=\"-my-xs\"\n data-testid=\"toggle\"\n .checked=${Boolean(this.value)}\n .disabled=${this.disabled || !this._isI18nReady}\n @change=${this.__toggleValue}\n >\n <x-i18n .ns=${this.ns} .lang=${this.lang} key=\"sso.title\" class=\"text-l\"></x-i18n>\n </x-switch>\n\n <x-i18n .ns=${this.ns} .lang=${this.lang} key=\"sso.subtitle\" slot=\"subtitle\" class=\"mr-xl\">\n </x-i18n>\n </x-section>\n `;\n }\n\n private __toggleValue() {\n this.value = !this.value;\n this.__sendChange();\n }\n\n private __sendChange() {\n this.dispatchEvent(new SSOSwitchChangeEvent(this.value));\n }\n}\n"]}
|
package/dist/elements/public/CustomerPortalSettings/private/SSOSwitch/SSOSwitchChangeEvent.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SSOSwitchChangeEvent.js","sourceRoot":"","sources":["../../../../../../src/elements/public/CustomerPortalSettings/private/SSOSwitch/SSOSwitchChangeEvent.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,oBAAqB,SAAQ,WAAoB;IAC5D,YAAY,KAAc;QACxB,KAAK,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACrC,CAAC;CACF","sourcesContent":["export class SSOSwitchChangeEvent extends CustomEvent<boolean> {\n constructor(value: boolean) {\n super('change', { detail: value });\n }\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { FxCustomerPortalSettings, FxStore } from '../../../types/hapi';
|
|
2
1
|
import { ErrorType, FriendlyError } from '../../private/ErrorScreen/ErrorScreen';
|
|
2
|
+
import { FxCustomerPortalSettings, FxStore } from '../../../types/hapi';
|
|
3
3
|
export interface CustomerPortalSettingsContext {
|
|
4
4
|
oldResource: FxCustomerPortalSettings | null;
|
|
5
5
|
newResource: FxCustomerPortalSettings | null;
|
|
@@ -26,6 +26,10 @@ export interface CustomerPortalSettingsSetHrefEvent {
|
|
|
26
26
|
type: 'SET_HREF';
|
|
27
27
|
data: string | null;
|
|
28
28
|
}
|
|
29
|
+
export interface CustomerPortalSettingsSetSSOEvent {
|
|
30
|
+
type: 'SET_SSO';
|
|
31
|
+
value: boolean;
|
|
32
|
+
}
|
|
29
33
|
export interface CustomerPortalSettingsSaveEvent {
|
|
30
34
|
type: 'SAVE';
|
|
31
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/elements/public/CustomerPortalSettings/types.ts"],"names":[],"mappings":"","sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/elements/public/CustomerPortalSettings/types.ts"],"names":[],"mappings":"","sourcesContent":["import { ErrorType, FriendlyError } from '../../private/ErrorScreen/ErrorScreen';\nimport { FxCustomerPortalSettings, FxStore } from '../../../types/hapi';\n\nexport interface CustomerPortalSettingsContext {\n oldResource: FxCustomerPortalSettings | null;\n newResource: FxCustomerPortalSettings | null;\n invalid: ('sessionLifespanInMinutes' | 'jwtSharedSecret')[];\n store: FxStore | null;\n error: ErrorType | null;\n href: string | null;\n}\n\nexport interface CustomerPortalSettingsLoadSuccessEvent {\n type: 'done.invoke.load';\n data: {\n resource: FxCustomerPortalSettings | null;\n store: FxStore;\n };\n}\n\nexport interface CustomerPortalSettingsLoadErrorEvent {\n type: 'error.execution';\n data: FriendlyError;\n}\n\nexport interface CustomerPortalSettingsResetEvent {\n type: 'RESET';\n}\n\nexport interface CustomerPortalSettingsSetHrefEvent {\n type: 'SET_HREF';\n data: string | null;\n}\n\nexport interface CustomerPortalSettingsSetSSOEvent {\n type: 'SET_SSO';\n value: boolean;\n}\n\nexport interface CustomerPortalSettingsSaveEvent {\n type: 'SAVE';\n}\n\nexport interface CustomerPortalSettingsSetOriginsEvent {\n type: 'SET_ORIGINS';\n value: string[];\n}\n\nexport interface CustomerPortalSettingsSetFrequencyModificationEvent {\n type: 'SET_FREQUENCY_MODIFICATION';\n value: FxCustomerPortalSettings['subscriptions']['allowFrequencyModification'];\n}\n\nexport interface CustomerPortalSettingsSetNextDateModificationEvent {\n type: 'SET_NEXT_DATE_MODIFICATION';\n value: FxCustomerPortalSettings['subscriptions']['allowNextDateModification'];\n}\n\nexport interface CustomerPortalSettingsSetSecretEvent {\n type: 'SET_SECRET';\n value: string;\n invalid: boolean;\n}\n\nexport interface CustomerPortalSettingsSetSessionEvent {\n type: 'SET_SESSION';\n value: number;\n invalid: boolean;\n}\n"]}
|
|
@@ -13,6 +13,8 @@ import { FormRenderer } from './types';
|
|
|
13
13
|
export declare class FormDialog extends Dialog {
|
|
14
14
|
/** @readonly */
|
|
15
15
|
static get properties(): PropertyDeclarations;
|
|
16
|
+
/** Optional URI list of the related resources (passed to form). */
|
|
17
|
+
related: string[];
|
|
16
18
|
/** Optional URL of the collection this resource belongs to (passed to form). */
|
|
17
19
|
parent: string;
|
|
18
20
|
group: string;
|
|
@@ -15,6 +15,8 @@ import { UpdateEvent } from "../NucleonElement/UpdateEvent.js";
|
|
|
15
15
|
export class FormDialog extends Dialog {
|
|
16
16
|
constructor() {
|
|
17
17
|
super(...arguments);
|
|
18
|
+
/** Optional URI list of the related resources (passed to form). */
|
|
19
|
+
this.related = [];
|
|
18
20
|
/** Optional URL of the collection this resource belongs to (passed to form). */
|
|
19
21
|
this.parent = '';
|
|
20
22
|
this.group = '';
|
|
@@ -54,6 +56,7 @@ export class FormDialog extends Dialog {
|
|
|
54
56
|
form: { type: String, noAccessor: true },
|
|
55
57
|
group: { type: String },
|
|
56
58
|
parent: { type: String },
|
|
59
|
+
related: { type: Array },
|
|
57
60
|
};
|
|
58
61
|
}
|
|
59
62
|
/**
|
|
@@ -84,6 +87,7 @@ export class FormDialog extends Dialog {
|
|
|
84
87
|
?readonly=\${options.dialog.readonly}
|
|
85
88
|
?hidden=\${options.dialog.hidden}
|
|
86
89
|
.templates=\${options.dialog.templates}
|
|
90
|
+
.related=\${options.dialog.related}
|
|
87
91
|
@fetch=\${options.handleFetch}
|
|
88
92
|
@update=\${options.handleUpdate}
|
|
89
93
|
>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormDialog.js","sourceRoot":"","sources":["../../../../src/elements/public/FormDialog/FormDialog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,IAAI,EAAE,MAAM,aAAa,CAAC;AAEzE,OAAO,EAAE,GAAG,EAAE,iCAA8B;AAC5C,OAAO,EAAE,MAAM,EAAE,uCAAoC;AAErD,OAAO,EAAE,UAAU,EAAE,wCAAqC;AAI1D,OAAO,EAAE,WAAW,EAAE,yCAAsC;AAE5D;;;;;;;;GAQG;AACH,MAAM,OAAO,UAAW,SAAQ,MAAM;IAAtC;;
|
|
1
|
+
{"version":3,"file":"FormDialog.js","sourceRoot":"","sources":["../../../../src/elements/public/FormDialog/FormDialog.ts"],"names":[],"mappings":"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","sourcesContent":["import { PropertyDeclarations, TemplateResult, html } from 'lit-element';\n\nimport { API } from '../NucleonElement/API';\nimport { Dialog } from '../../private/Dialog/Dialog';\nimport { DialogHideEvent } from '../../private/Dialog/DialogHideEvent';\nimport { FetchEvent } from '../NucleonElement/FetchEvent';\nimport { FormRenderer } from './types';\nimport { InternalConfirmDialog } from '../../internal/InternalConfirmDialog/InternalConfirmDialog';\nimport { NucleonElement } from '../NucleonElement/NucleonElement';\nimport { UpdateEvent } from '../NucleonElement/UpdateEvent';\n\n/**\n * Dialog wrapper for the forms made with NucleonElement.\n *\n * @fires FormDialog#show - Instance of `FormDialog.ShowEvent`. Dispatched after dialog finishes entry transition.\n * @fires FormDialog#hide - Instance of `FormDialog.HideEvent`. Dispatched after dialog finishes exit transition.\n *\n * @element foxy-form-dialog\n * @since 1.1.0\n */\nexport class FormDialog extends Dialog {\n /** @readonly */\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n href: { type: String },\n form: { type: String, noAccessor: true },\n group: { type: String },\n parent: { type: String },\n related: { type: Array },\n };\n }\n\n /** Optional URI list of the related resources (passed to form). */\n related: string[] = [];\n\n /** Optional URL of the collection this resource belongs to (passed to form). */\n parent = '';\n\n group = '';\n\n /** Optional URL of the resource to load (passed to form). */\n href = '';\n\n private __form: string | null | FormRenderer = null;\n\n private __renderForm: FormRenderer | null = null;\n\n private __handleFetch = (evt: Event) => {\n if (!(evt instanceof FetchEvent)) return;\n\n evt.stopImmediatePropagation();\n evt.preventDefault();\n evt.respondWith(\n new API(this).fetch(evt.request).then(response => {\n const wasDeleting = evt.request.url === this.href && evt.request.method === 'DELETE';\n const wasAdding = evt.request.url === this.parent && evt.request.method === 'POST';\n\n if (response.ok && (wasDeleting || wasAdding)) this.open = false;\n return response;\n })\n );\n };\n\n private __handleUpdate = (evt: Event) => {\n if (!(evt instanceof UpdateEvent)) return;\n const target = evt.target as NucleonElement<never>;\n\n this.closable = !target.in('busy');\n this.editable =\n target.in({ idle: { template: { clean: 'valid' } } }) ||\n target.in({ idle: { template: { dirty: 'valid' } } }) ||\n target.in({ idle: { snapshot: { dirty: 'valid' } } });\n };\n\n /**\n * Form's custom element tag. Generated custom element will have the following attributes:\n *\n * - `parent` – same as `foxy-form-dialog[parent]`;\n * - `href` – same as `foxy-form-dialog[href]`;\n * - `lang` – same as `foxy-form-dialog[lang]`;\n */\n get form(): string | null | FormRenderer {\n return this.__form;\n }\n\n set form(value: string | null | FormRenderer) {\n this.__form = value;\n\n if (typeof value === 'string') {\n this.__renderForm = new Function(\n 'options',\n `return options.html\\`\n <${value}\n id=\"form\"\n ns=\"$\\{options.dialog.ns} $\\{customElements.get('${value}')?.defaultNS ?? ''}\"\n href=\\${options.dialog.href}\n lang=\\${options.dialog.lang}\n group=\\${options.dialog.group}\n parent=\\${options.dialog.parent}\n disabledcontrols=\\${options.dialog.disabledControls.toString()}\n readonlycontrols=\\${options.dialog.readonlyControls.toString()}\n hiddencontrols=\\${options.dialog.hiddenControls.toString()}\n ?disabled=\\${options.dialog.disabled}\n ?readonly=\\${options.dialog.readonly}\n ?hidden=\\${options.dialog.hidden}\n .templates=\\${options.dialog.templates}\n .related=\\${options.dialog.related}\n @fetch=\\${options.handleFetch}\n @update=\\${options.handleUpdate}\n >\n </${value}>\\``\n ) as FormRenderer;\n } else {\n this.__renderForm = value;\n }\n\n this.requestUpdate();\n }\n\n /** @readonly */\n render(): TemplateResult {\n return html`\n <foxy-internal-confirm-dialog\n message=\"undo_message\"\n confirm=\"undo_confirm\"\n cancel=\"undo_cancel\"\n header=\"undo_header\"\n theme=\"error\"\n lang=${this.lang}\n ns=${this.ns}\n id=\"confirm\"\n @hide=${(evt: DialogHideEvent) => !evt.detail.cancelled && super.hide(true)}\n >\n </foxy-internal-confirm-dialog>\n\n ${super.render(() => {\n return html`${this.__renderForm?.({\n handleUpdate: this.__handleUpdate,\n handleFetch: this.__handleFetch,\n dialog: this,\n html,\n })}`;\n })}\n `;\n }\n\n async hide(cancelled = false): Promise<void> {\n if (cancelled) {\n const confirm = this.renderRoot.querySelector('#confirm') as InternalConfirmDialog;\n confirm.show();\n } else {\n return super.hide(cancelled);\n }\n }\n\n /** Submits the form. */\n async save(): Promise<void> {\n (this.renderRoot.querySelector('#form') as NucleonElement<never>).submit();\n }\n}\n"]}
|
|
@@ -52,10 +52,16 @@ export declare class NucleonElement<TData extends HALJSONResource> extends LitEl
|
|
|
52
52
|
* Changing the `parent` attribute will update the value of this property.
|
|
53
53
|
*/
|
|
54
54
|
parent: string;
|
|
55
|
+
/**
|
|
56
|
+
* Optional URI list of the related resources. If Rumour encounters a related
|
|
57
|
+
* resource on creation or deletion, it will be reloaded from source.
|
|
58
|
+
*/
|
|
59
|
+
related: string[];
|
|
55
60
|
private __href;
|
|
56
61
|
private __group;
|
|
57
62
|
private __unsubscribeFromRumour;
|
|
58
63
|
private __fetchEventHandler;
|
|
64
|
+
private __fetchEventQueue;
|
|
59
65
|
private readonly __service;
|
|
60
66
|
/**
|
|
61
67
|
* If network request returns non-2XX code, the entire error response
|
|
@@ -130,6 +136,11 @@ export declare class NucleonElement<TData extends HALJSONResource> extends LitEl
|
|
|
130
136
|
* @example element.delete()
|
|
131
137
|
*/
|
|
132
138
|
delete(): void;
|
|
139
|
+
/**
|
|
140
|
+
* Fetches data from `element.href` in background, keeping the edits and v8n errors.
|
|
141
|
+
* @example element.refresh()
|
|
142
|
+
*/
|
|
143
|
+
refresh(): void;
|
|
133
144
|
/** @readonly */
|
|
134
145
|
connectedCallback(): void;
|
|
135
146
|
/** @readonly */
|
|
@@ -151,5 +162,7 @@ export declare class NucleonElement<TData extends HALJSONResource> extends LitEl
|
|
|
151
162
|
private __createServer;
|
|
152
163
|
private __destroyServer;
|
|
153
164
|
private __handleRumourUpdate;
|
|
165
|
+
private __processFetchEventQueue;
|
|
166
|
+
private __flushFetchEventQueue;
|
|
154
167
|
private __handleFetchEvent;
|
|
155
168
|
}
|
|
@@ -5,7 +5,7 @@ import { API } from "./API.js";
|
|
|
5
5
|
import { FetchEvent } from "./FetchEvent.js";
|
|
6
6
|
import { UpdateEvent } from "./UpdateEvent.js";
|
|
7
7
|
import memoize from 'lodash-es/memoize';
|
|
8
|
-
import
|
|
8
|
+
import { serveFromCache } from "./serveFromCache.js";
|
|
9
9
|
/**
|
|
10
10
|
* Base class for custom elements working with remote HAL+JSON resources.
|
|
11
11
|
*
|
|
@@ -28,8 +28,14 @@ export class NucleonElement extends LitElement {
|
|
|
28
28
|
* Changing the `parent` attribute will update the value of this property.
|
|
29
29
|
*/
|
|
30
30
|
this.parent = '';
|
|
31
|
+
/**
|
|
32
|
+
* Optional URI list of the related resources. If Rumour encounters a related
|
|
33
|
+
* resource on creation or deletion, it will be reloaded from source.
|
|
34
|
+
*/
|
|
35
|
+
this.related = [];
|
|
31
36
|
this.__href = '';
|
|
32
37
|
this.__group = '';
|
|
38
|
+
this.__fetchEventQueue = [];
|
|
33
39
|
this.__service = interpret(Nucleon.machine.withConfig({
|
|
34
40
|
services: {
|
|
35
41
|
sendDelete: () => this._sendDelete(),
|
|
@@ -54,6 +60,7 @@ export class NucleonElement extends LitElement {
|
|
|
54
60
|
/** @readonly */
|
|
55
61
|
static get properties() {
|
|
56
62
|
return {
|
|
63
|
+
related: { type: Array },
|
|
57
64
|
parent: { type: String },
|
|
58
65
|
group: { type: String, noAccessor: true },
|
|
59
66
|
href: { type: String, noAccessor: true },
|
|
@@ -180,12 +187,20 @@ export class NucleonElement extends LitElement {
|
|
|
180
187
|
delete() {
|
|
181
188
|
this.__service.send({ type: 'DELETE' });
|
|
182
189
|
}
|
|
190
|
+
/**
|
|
191
|
+
* Fetches data from `element.href` in background, keeping the edits and v8n errors.
|
|
192
|
+
* @example element.refresh()
|
|
193
|
+
*/
|
|
194
|
+
refresh() {
|
|
195
|
+
this.__service.send({ type: 'REFRESH' });
|
|
196
|
+
}
|
|
183
197
|
/** @readonly */
|
|
184
198
|
connectedCallback() {
|
|
185
199
|
super.connectedCallback();
|
|
186
200
|
this.__createService();
|
|
187
201
|
this.__createRumour();
|
|
188
202
|
this.__createServer();
|
|
203
|
+
this.__processFetchEventQueue();
|
|
189
204
|
}
|
|
190
205
|
/** @readonly */
|
|
191
206
|
disconnectedCallback() {
|
|
@@ -193,6 +208,7 @@ export class NucleonElement extends LitElement {
|
|
|
193
208
|
this.__destroyService();
|
|
194
209
|
this.__destroyRumour();
|
|
195
210
|
this.__destroyServer();
|
|
211
|
+
this.__flushFetchEventQueue('parent element was disconnected');
|
|
196
212
|
}
|
|
197
213
|
/** Sends API request. Throws an error on non-2XX response. */
|
|
198
214
|
async _fetch(...args) {
|
|
@@ -206,8 +222,9 @@ export class NucleonElement extends LitElement {
|
|
|
206
222
|
const body = JSON.stringify(edits);
|
|
207
223
|
const data = await this._fetch(this.parent, { body, method: 'POST' });
|
|
208
224
|
const rumour = NucleonElement.Rumour(this.group);
|
|
225
|
+
const related = [...this.related, this.parent];
|
|
209
226
|
this.__destroyRumour();
|
|
210
|
-
rumour.share({ data, related
|
|
227
|
+
rumour.share({ data, related, source: data._links.self.href });
|
|
211
228
|
this.__createRumour();
|
|
212
229
|
return data;
|
|
213
230
|
}
|
|
@@ -226,7 +243,7 @@ export class NucleonElement extends LitElement {
|
|
|
226
243
|
const data = await this._fetch(this.href, { body, method: 'PATCH' });
|
|
227
244
|
const rumour = NucleonElement.Rumour(this.group);
|
|
228
245
|
this.__destroyRumour();
|
|
229
|
-
rumour.share({ data, source: this.href });
|
|
246
|
+
rumour.share({ data, source: this.href, related: this.related });
|
|
230
247
|
this.__createRumour();
|
|
231
248
|
return data;
|
|
232
249
|
}
|
|
@@ -234,8 +251,9 @@ export class NucleonElement extends LitElement {
|
|
|
234
251
|
async _sendDelete() {
|
|
235
252
|
const data = await this._fetch(this.href, { method: 'DELETE' });
|
|
236
253
|
const rumour = NucleonElement.Rumour(this.group);
|
|
254
|
+
const related = [...this.related, this.parent];
|
|
237
255
|
this.__destroyRumour();
|
|
238
|
-
rumour.share({ data: null, source: this.href, related
|
|
256
|
+
rumour.share({ data: null, source: this.href, related });
|
|
239
257
|
this.__createRumour();
|
|
240
258
|
return data;
|
|
241
259
|
}
|
|
@@ -247,6 +265,8 @@ export class NucleonElement extends LitElement {
|
|
|
247
265
|
this.setAttribute('state', [...new Set(flags)].join(' '));
|
|
248
266
|
this.requestUpdate();
|
|
249
267
|
this.dispatchEvent(new UpdateEvent());
|
|
268
|
+
if (!state.matches('busy'))
|
|
269
|
+
this.__processFetchEventQueue();
|
|
250
270
|
});
|
|
251
271
|
this.__service.onChange(() => {
|
|
252
272
|
this.requestUpdate();
|
|
@@ -284,28 +304,45 @@ export class NucleonElement extends LitElement {
|
|
|
284
304
|
}
|
|
285
305
|
catch (err) {
|
|
286
306
|
if (err instanceof Rumour.UpdateError) {
|
|
287
|
-
this.__service.send({ type: '
|
|
307
|
+
this.__service.send({ type: 'REFRESH' });
|
|
288
308
|
}
|
|
289
309
|
else {
|
|
290
310
|
throw err;
|
|
291
311
|
}
|
|
292
312
|
}
|
|
293
313
|
}
|
|
314
|
+
__processFetchEventQueue() {
|
|
315
|
+
const api = new NucleonElement.API(this);
|
|
316
|
+
this.__fetchEventQueue.forEach(event => {
|
|
317
|
+
const request = event.request;
|
|
318
|
+
const cacheResponse = serveFromCache(request.url, this.data);
|
|
319
|
+
const whenResponseReady = cacheResponse.ok ? cacheResponse : api.fetch(request);
|
|
320
|
+
event.respondWith(Promise.resolve(whenResponseReady));
|
|
321
|
+
if (cacheResponse.ok) {
|
|
322
|
+
console.debug(`%c@foxy.io/elements::${this.localName}\n%c200%c GET ${request.url}`, 'color: gray', `background: gray; padding: 0 .2em; border-radius: .2em; color: white;`, '');
|
|
323
|
+
}
|
|
324
|
+
});
|
|
325
|
+
this.__fetchEventQueue = [];
|
|
326
|
+
}
|
|
327
|
+
__flushFetchEventQueue(errorMessage) {
|
|
328
|
+
this.__fetchEventQueue.forEach(event => {
|
|
329
|
+
event.respondWith(Promise.reject(new Error(errorMessage)));
|
|
330
|
+
});
|
|
331
|
+
this.__fetchEventQueue = [];
|
|
332
|
+
}
|
|
294
333
|
__handleFetchEvent(event) {
|
|
295
334
|
if (!(event instanceof FetchEvent))
|
|
296
335
|
return;
|
|
336
|
+
if (event.defaultPrevented)
|
|
337
|
+
return;
|
|
297
338
|
if (event.request.method !== 'GET')
|
|
298
339
|
return;
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
event.respondWith(Promise.resolve(new Response(body)));
|
|
306
|
-
this.stop();
|
|
307
|
-
}
|
|
308
|
-
});
|
|
340
|
+
if (event.composedPath()[0] === this)
|
|
341
|
+
return;
|
|
342
|
+
event.preventDefault();
|
|
343
|
+
this.__fetchEventQueue.push(event);
|
|
344
|
+
if (!this.in('busy'))
|
|
345
|
+
this.__processFetchEventQueue();
|
|
309
346
|
}
|
|
310
347
|
}
|
|
311
348
|
/**
|