@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.
Files changed (115) hide show
  1. package/dist/cdn/foxy-access-recovery-form.js +1 -1
  2. package/dist/cdn/foxy-address-card.js +2 -2
  3. package/dist/cdn/foxy-address-form.js +1 -1
  4. package/dist/cdn/foxy-attribute-card.js +1 -1
  5. package/dist/cdn/foxy-attribute-form.js +1 -1
  6. package/dist/cdn/foxy-cancellation-form.js +1 -1
  7. package/dist/cdn/foxy-collection-page.js +1 -1
  8. package/dist/cdn/foxy-collection-pages.js +1 -1
  9. package/dist/cdn/foxy-custom-field-form.js +1 -0
  10. package/dist/cdn/foxy-customer-api.js +1 -1
  11. package/dist/cdn/foxy-customer-form.js +1 -1
  12. package/dist/cdn/foxy-customer-portal-settings.js +2 -2
  13. package/dist/cdn/foxy-customer-portal.js +2 -2
  14. package/dist/cdn/foxy-customer.js +1 -1
  15. package/dist/cdn/foxy-customers-table.js +1 -1
  16. package/dist/cdn/foxy-donation.js +1 -1
  17. package/dist/cdn/foxy-error-entry-card.js +1 -1
  18. package/dist/cdn/foxy-form-dialog.js +1 -1
  19. package/dist/cdn/foxy-i18n.js +1 -1
  20. package/dist/cdn/foxy-items-form.js +1 -1
  21. package/dist/cdn/foxy-nucleon-element.js +1 -1
  22. package/dist/cdn/foxy-payment-method-card.js +1 -1
  23. package/dist/cdn/foxy-sign-in-form.js +1 -230
  24. package/dist/cdn/foxy-spinner.js +1 -1
  25. package/dist/cdn/foxy-subscription-card.js +1 -1
  26. package/dist/cdn/foxy-subscription-form.js +2 -2
  27. package/dist/cdn/foxy-subscriptions-table.js +1 -1
  28. package/dist/cdn/foxy-table.js +1 -1
  29. package/dist/cdn/foxy-transactions-table.js +1 -1
  30. package/dist/cdn/foxy-user-form.js +1 -1
  31. package/dist/cdn/foxy-users-table.js +1 -1
  32. package/dist/cdn/{shared-bf28ab5e.js → shared-005e1fc5.js} +1 -1
  33. package/dist/cdn/{shared-84203d52.js → shared-00811efe.js} +1 -1
  34. package/dist/cdn/shared-07867126.js +1 -0
  35. package/dist/cdn/{shared-c70d9713.js → shared-09384e52.js} +1 -1
  36. package/dist/cdn/{shared-8f34ce95.js → shared-1d138c7a.js} +1 -1
  37. package/dist/cdn/{shared-77bdf956.js → shared-2864fa12.js} +1 -1
  38. package/dist/cdn/{shared-525dd8c8.js → shared-420ef4a6.js} +1 -1
  39. package/dist/cdn/{shared-a7709d26.js → shared-423c0fb8.js} +1 -1
  40. package/dist/cdn/{shared-e058cb87.js → shared-50ff98d4.js} +1 -1
  41. package/dist/cdn/{shared-96de56d4.js → shared-524b3c41.js} +1 -1
  42. package/dist/cdn/{shared-bba615b8.js → shared-52d3b939.js} +19 -19
  43. package/dist/cdn/{shared-497fd63c.js → shared-670c194c.js} +1 -1
  44. package/dist/cdn/shared-7bc6d89f.js +1 -0
  45. package/dist/cdn/{shared-8057ee9c.js → shared-8dd2593f.js} +1 -1
  46. package/dist/cdn/{shared-4b33c6d2.js → shared-93df17fe.js} +1 -1
  47. package/dist/cdn/shared-957a60e1.js +1 -0
  48. package/dist/cdn/shared-96fcd96f.js +1 -0
  49. package/dist/cdn/{shared-9f78e096.js → shared-a4e05ba4.js} +1 -1
  50. package/dist/cdn/{shared-aac9fed8.js → shared-a6f0d39f.js} +1 -1
  51. package/dist/cdn/shared-b76c5f57.js +15 -0
  52. package/dist/cdn/{shared-23966eed.js → shared-c9e0b693.js} +1 -1
  53. package/dist/cdn/{shared-851b97ef.js → shared-d8160231.js} +1 -1
  54. package/dist/cdn/shared-dc5928e9.js +1 -0
  55. package/dist/cdn/{shared-a5fbfdc7.js → shared-e5ab982d.js} +1 -1
  56. package/dist/cdn/shared-f4119f12.js +230 -0
  57. package/dist/cdn/{shared-090432b4.js → shared-f62abcd5.js} +1 -1
  58. package/dist/cdn/{shared-6f84ea16.js → shared-f866a93f.js} +1 -1
  59. package/dist/cdn/{shared-f06d08d5.js → shared-fd05e1a1.js} +1 -1
  60. package/dist/cdn/translations/customer-portal-settings/en.json +4 -0
  61. package/dist/cdn/translations/shared/de.json +1 -0
  62. package/dist/cdn/translations/shared/en.json +1 -0
  63. package/dist/cdn/translations/shared/es.json +1 -0
  64. package/dist/elements/public/CollectionPage/CollectionPage.d.ts +2 -0
  65. package/dist/elements/public/CollectionPage/CollectionPage.js +7 -0
  66. package/dist/elements/public/CollectionPage/CollectionPage.js.map +1 -1
  67. package/dist/elements/public/CollectionPage/types.d.ts +3 -0
  68. package/dist/elements/public/CollectionPage/types.js.map +1 -1
  69. package/dist/elements/public/CollectionPages/CollectionPages.d.ts +2 -0
  70. package/dist/elements/public/CollectionPages/CollectionPages.js +13 -11
  71. package/dist/elements/public/CollectionPages/CollectionPages.js.map +1 -1
  72. package/dist/elements/public/CollectionPages/types.d.ts +3 -0
  73. package/dist/elements/public/CollectionPages/types.js.map +1 -1
  74. package/dist/elements/public/CustomFieldForm/CustomFieldForm.d.ts +49 -0
  75. package/dist/elements/public/CustomFieldForm/CustomFieldForm.js +235 -0
  76. package/dist/elements/public/CustomFieldForm/CustomFieldForm.js.map +1 -0
  77. package/dist/elements/public/CustomFieldForm/index.d.ts +9 -0
  78. package/dist/elements/public/CustomFieldForm/index.js +11 -0
  79. package/dist/elements/public/CustomFieldForm/index.js.map +1 -0
  80. package/dist/elements/public/CustomFieldForm/types.d.ts +22 -0
  81. package/dist/elements/public/CustomFieldForm/types.js +2 -0
  82. package/dist/elements/public/CustomFieldForm/types.js.map +1 -0
  83. package/dist/elements/public/CustomerPortalSettings/CustomerPortalSettings.js +17 -3
  84. package/dist/elements/public/CustomerPortalSettings/CustomerPortalSettings.js.map +1 -1
  85. package/dist/elements/public/CustomerPortalSettings/machine.js +8 -0
  86. package/dist/elements/public/CustomerPortalSettings/machine.js.map +1 -1
  87. package/dist/elements/public/CustomerPortalSettings/private/SSOSwitch/SSOSwitch.d.ts +13 -0
  88. package/dist/elements/public/CustomerPortalSettings/private/SSOSwitch/SSOSwitch.js +53 -0
  89. package/dist/elements/public/CustomerPortalSettings/private/SSOSwitch/SSOSwitch.js.map +1 -0
  90. package/dist/elements/public/CustomerPortalSettings/private/SSOSwitch/SSOSwitchChangeEvent.d.ts +3 -0
  91. package/dist/elements/public/CustomerPortalSettings/private/SSOSwitch/SSOSwitchChangeEvent.js +6 -0
  92. package/dist/elements/public/CustomerPortalSettings/private/SSOSwitch/SSOSwitchChangeEvent.js.map +1 -0
  93. package/dist/elements/public/CustomerPortalSettings/types.d.ts +5 -1
  94. package/dist/elements/public/CustomerPortalSettings/types.js.map +1 -1
  95. package/dist/elements/public/FormDialog/FormDialog.d.ts +2 -0
  96. package/dist/elements/public/FormDialog/FormDialog.js +4 -0
  97. package/dist/elements/public/FormDialog/FormDialog.js.map +1 -1
  98. package/dist/elements/public/NucleonElement/NucleonElement.d.ts +13 -0
  99. package/dist/elements/public/NucleonElement/NucleonElement.js +52 -15
  100. package/dist/elements/public/NucleonElement/NucleonElement.js.map +1 -1
  101. package/dist/elements/public/NucleonElement/serveFromCache.d.ts +1 -0
  102. package/dist/elements/public/NucleonElement/serveFromCache.js +49 -0
  103. package/dist/elements/public/NucleonElement/serveFromCache.js.map +1 -0
  104. package/dist/elements/public/index.d.ts +1 -0
  105. package/dist/elements/public/index.defined.d.ts +1 -0
  106. package/dist/elements/public/index.defined.js +1 -0
  107. package/dist/elements/public/index.defined.js.map +1 -1
  108. package/dist/elements/public/index.js +1 -0
  109. package/dist/elements/public/index.js.map +1 -1
  110. package/package.json +2 -2
  111. package/dist/cdn/shared-1d0ef57d.js +0 -1
  112. package/dist/cdn/shared-6872bf5c.js +0 -1
  113. package/dist/cdn/shared-69d0ca61.js +0 -1
  114. package/dist/cdn/shared-92d03925.js +0 -15
  115. 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"]}
@@ -0,0 +1,3 @@
1
+ export declare class SSOSwitchChangeEvent extends CustomEvent<boolean> {
2
+ constructor(value: boolean);
3
+ }
@@ -0,0 +1,6 @@
1
+ export class SSOSwitchChangeEvent extends CustomEvent {
2
+ constructor(value) {
3
+ super('change', { detail: value });
4
+ }
5
+ }
6
+ //# sourceMappingURL=SSOSwitchChangeEvent.js.map
@@ -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 { FxCustomerPortalSettings, FxStore } from '../../../types/hapi';\nimport { ErrorType, FriendlyError } from '../../private/ErrorScreen/ErrorScreen';\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 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"]}
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":"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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 };\n }\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 @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"]}
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;;QAaE,mEAAmE;QACnE,YAAO,GAAa,EAAE,CAAC;QAEvB,gFAAgF;QAChF,WAAM,GAAG,EAAE,CAAC;QAEZ,UAAK,GAAG,EAAE,CAAC;QAEX,6DAA6D;QAC7D,SAAI,GAAG,EAAE,CAAC;QAEF,WAAM,GAAiC,IAAI,CAAC;QAE5C,iBAAY,GAAwB,IAAI,CAAC;QAEzC,kBAAa,GAAG,CAAC,GAAU,EAAE,EAAE;YACrC,IAAI,CAAC,CAAC,GAAG,YAAY,UAAU,CAAC;gBAAE,OAAO;YAEzC,GAAG,CAAC,wBAAwB,EAAE,CAAC;YAC/B,GAAG,CAAC,cAAc,EAAE,CAAC;YACrB,GAAG,CAAC,WAAW,CACb,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAC/C,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC;gBACrF,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC;gBAEnF,IAAI,QAAQ,CAAC,EAAE,IAAI,CAAC,WAAW,IAAI,SAAS,CAAC;oBAAE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;gBACjE,OAAO,QAAQ,CAAC;YAClB,CAAC,CAAC,CACH,CAAC;QACJ,CAAC,CAAC;QAEM,mBAAc,GAAG,CAAC,GAAU,EAAE,EAAE;YACtC,IAAI,CAAC,CAAC,GAAG,YAAY,WAAW,CAAC;gBAAE,OAAO;YAC1C,MAAM,MAAM,GAAG,GAAG,CAAC,MAA+B,CAAC;YAEnD,IAAI,CAAC,QAAQ,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;YACnC,IAAI,CAAC,QAAQ;gBACX,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;oBACrD,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;oBACrD,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1D,CAAC,CAAC;IAuFJ,CAAC;IA3IC,gBAAgB;IAChB,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACtB,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE;YACxC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACvB,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACxB,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;SACzB,CAAC;IACJ,CAAC;IA4CD;;;;;;OAMG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,IAAI,CAAC,KAAmC;QAC1C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAEpB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,IAAI,CAAC,YAAY,GAAG,IAAI,QAAQ,CAC9B,SAAS,EACT;aACK,KAAK;;+DAE6C,KAAK;;;;;;;;;;;;;;;;cAgBtD,KAAK,KAAK,CACD,CAAC;SACnB;aAAM;YACL,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;SAC3B;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,gBAAgB;IAChB,MAAM;QACJ,OAAO,IAAI,CAAA;;;;;;;eAOA,IAAI,CAAC,IAAI;aACX,IAAI,CAAC,EAAE;;gBAEJ,CAAC,GAAoB,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;;;;QAI3E,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE;;YAClB,OAAO,IAAI,CAAA,GAAG,MAAA,IAAI,CAAC,YAAY,+CAAjB,IAAI,EAAgB;gBAChC,YAAY,EAAE,IAAI,CAAC,cAAc;gBACjC,WAAW,EAAE,IAAI,CAAC,aAAa;gBAC/B,MAAM,EAAE,IAAI;gBACZ,IAAI;aACL,CAAC,EAAE,CAAC;QACP,CAAC,CAAC;KACH,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK;QAC1B,IAAI,SAAS,EAAE;YACb,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAA0B,CAAC;YACnF,OAAO,CAAC,IAAI,EAAE,CAAC;SAChB;aAAM;YACL,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC9B;IACH,CAAC;IAED,wBAAwB;IACxB,KAAK,CAAC,IAAI;QACP,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAA2B,CAAC,MAAM,EAAE,CAAC;IAC7E,CAAC;CACF","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 traverse from 'traverse';
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: [this.parent], source: data._links.self.href });
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: [this.parent] });
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: 'FETCH' });
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
- const localName = this.localName;
300
- traverse(this.__service.state.context.data).forEach(function () {
301
- var _a, _b, _c;
302
- if (((_c = (_b = (_a = this.node) === null || _a === void 0 ? void 0 : _a._links) === null || _b === void 0 ? void 0 : _b.self) === null || _c === void 0 ? void 0 : _c.href) === event.request.url) {
303
- console.debug(`%c@foxy.io/elements::${localName}\n%c200%c GET ${event.request.url}`, 'color: gray', `background: gray; padding: 0 .2em; border-radius: .2em; color: white;`, '');
304
- const body = JSON.stringify(this.node);
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
  /**