web/admin: fix prompt form and codemirror mode (#7231)
* web/admin: fix extra curly brace Signed-off-by: Jens Langhammer <jens@goauthentik.io> * also fix form rendering Signed-off-by: Jens Langhammer <jens@goauthentik.io> * fix codemirror alignment Signed-off-by: Jens Langhammer <jens@goauthentik.io> * use enum for codemirror mode to prevent invalid mode Signed-off-by: Jens Langhammer <jens@goauthentik.io> --------- Signed-off-by: Jens Langhammer <jens@goauthentik.io>
This commit is contained in:
		| @ -3,6 +3,7 @@ import { docLink } from "@goauthentik/common/global"; | ||||
| import { first } from "@goauthentik/common/utils"; | ||||
| import "@goauthentik/components/ak-toggle-group"; | ||||
| import "@goauthentik/elements/CodeMirror"; | ||||
| import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror"; | ||||
| import "@goauthentik/elements/forms/FormGroup"; | ||||
| import "@goauthentik/elements/forms/HorizontalFormElement"; | ||||
| import { ModelForm } from "@goauthentik/elements/forms/ModelForm"; | ||||
| @ -169,7 +170,7 @@ export class BlueprintForm extends ModelForm<BlueprintInstance, string> { | ||||
|                     ${this.source === blueprintSource.internal | ||||
|                         ? html`<ak-form-element-horizontal label=${msg("Blueprint")} name="content"> | ||||
|                               <ak-codemirror | ||||
|                                   mode="yaml" | ||||
|                                   mode=${CodeMirrorMode.YAML} | ||||
|                                   .parseValue=${false} | ||||
|                                   value="${ifDefined(this.instance?.content)}" | ||||
|                               ></ak-codemirror> | ||||
| @ -183,7 +184,7 @@ export class BlueprintForm extends ModelForm<BlueprintInstance, string> { | ||||
|                 <div slot="body" class="pf-c-form"> | ||||
|                     <ak-form-element-horizontal label=${msg("Context")} name="context"> | ||||
|                         <ak-codemirror | ||||
|                             mode="yaml" | ||||
|                             mode=${CodeMirrorMode.YAML} | ||||
|                             value="${YAML.stringify(first(this.instance?.context, {}))}" | ||||
|                         > | ||||
|                         </ak-codemirror> | ||||
|  | ||||
| @ -2,6 +2,7 @@ import "@goauthentik/admin/groups/MemberSelectModal"; | ||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; | ||||
| import { first } from "@goauthentik/common/utils"; | ||||
| import "@goauthentik/elements/CodeMirror"; | ||||
| import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror"; | ||||
| import "@goauthentik/elements/chips/Chip"; | ||||
| import "@goauthentik/elements/chips/ChipGroup"; | ||||
| import "@goauthentik/elements/forms/HorizontalFormElement"; | ||||
| @ -153,7 +154,7 @@ export class GroupForm extends ModelForm<Group, string> { | ||||
|                 name="attributes" | ||||
|             > | ||||
|                 <ak-codemirror | ||||
|                     mode="yaml" | ||||
|                     mode=${CodeMirrorMode.YAML} | ||||
|                     value="${YAML.stringify(first(this.instance?.attributes, {}))}" | ||||
|                 > | ||||
|                 </ak-codemirror> | ||||
|  | ||||
| @ -2,6 +2,7 @@ import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; | ||||
| import { docLink } from "@goauthentik/common/global"; | ||||
| import { groupBy } from "@goauthentik/common/utils"; | ||||
| import "@goauthentik/elements/CodeMirror"; | ||||
| import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror"; | ||||
| import "@goauthentik/elements/forms/HorizontalFormElement"; | ||||
| import { ModelForm } from "@goauthentik/elements/forms/ModelForm"; | ||||
| import "@goauthentik/elements/forms/SearchSelect"; | ||||
| @ -209,7 +210,7 @@ export class OutpostForm extends ModelForm<Outpost, string> { | ||||
|             </ak-form-element-horizontal> | ||||
|             <ak-form-element-horizontal label=${msg("Configuration")} name="config"> | ||||
|                 <ak-codemirror | ||||
|                     mode="yaml" | ||||
|                     mode=${CodeMirrorMode.YAML} | ||||
|                     value="${YAML.stringify( | ||||
|                         this.instance ? this.instance.config : this.defaultConfig?.config, | ||||
|                     )}" | ||||
|  | ||||
| @ -1,6 +1,7 @@ | ||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; | ||||
| import { first } from "@goauthentik/common/utils"; | ||||
| import "@goauthentik/elements/CodeMirror"; | ||||
| import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror"; | ||||
| import "@goauthentik/elements/forms/HorizontalFormElement"; | ||||
| import { ModelForm } from "@goauthentik/elements/forms/ModelForm"; | ||||
| import YAML from "yaml"; | ||||
| @ -75,7 +76,7 @@ export class ServiceConnectionKubernetesForm extends ModelForm< | ||||
|             </ak-form-element-horizontal> | ||||
|             <ak-form-element-horizontal label=${msg("Kubeconfig")} name="kubeconfig"> | ||||
|                 <ak-codemirror | ||||
|                     mode="yaml" | ||||
|                     mode=${CodeMirrorMode.YAML} | ||||
|                     value="${YAML.stringify(first(this.instance?.kubeconfig, {}))}" | ||||
|                 > | ||||
|                 </ak-codemirror> | ||||
|  | ||||
| @ -1,6 +1,7 @@ | ||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; | ||||
| import { first } from "@goauthentik/common/utils"; | ||||
| import "@goauthentik/elements/CodeMirror"; | ||||
| import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror"; | ||||
| import { PFColor } from "@goauthentik/elements/Label"; | ||||
| import { Form } from "@goauthentik/elements/forms/Form"; | ||||
| import "@goauthentik/elements/forms/HorizontalFormElement"; | ||||
| @ -145,7 +146,7 @@ export class PolicyTestForm extends Form<PolicyTestRequest> { | ||||
|             </ak-form-element-horizontal> | ||||
|             <ak-form-element-horizontal label=${msg("Context")} name="context"> | ||||
|                 <ak-codemirror | ||||
|                     mode="yaml" | ||||
|                     mode=${CodeMirrorMode.YAML} | ||||
|                     value=${YAML.stringify(first(this.request?.context, {}))} | ||||
|                 > | ||||
|                 </ak-codemirror> | ||||
|  | ||||
| @ -2,6 +2,7 @@ import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; | ||||
| import { docLink } from "@goauthentik/common/global"; | ||||
| import { first } from "@goauthentik/common/utils"; | ||||
| import "@goauthentik/elements/CodeMirror"; | ||||
| import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror"; | ||||
| import "@goauthentik/elements/forms/FormGroup"; | ||||
| import "@goauthentik/elements/forms/HorizontalFormElement"; | ||||
| import { ModelForm } from "@goauthentik/elements/forms/ModelForm"; | ||||
| @ -85,7 +86,7 @@ export class ExpressionPolicyForm extends ModelForm<ExpressionPolicy, string> { | ||||
|                         name="expression" | ||||
|                     > | ||||
|                         <ak-codemirror | ||||
|                             mode="python" | ||||
|                             mode=${CodeMirrorMode.Python} | ||||
|                             value="${ifDefined(this.instance?.expression)}" | ||||
|                         > | ||||
|                         </ak-codemirror> | ||||
|  | ||||
| @ -1,6 +1,7 @@ | ||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; | ||||
| import { docLink } from "@goauthentik/common/global"; | ||||
| import "@goauthentik/elements/CodeMirror"; | ||||
| import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror"; | ||||
| import "@goauthentik/elements/forms/HorizontalFormElement"; | ||||
| import { ModelForm } from "@goauthentik/elements/forms/ModelForm"; | ||||
|  | ||||
| @ -69,7 +70,10 @@ export class PropertyMappingLDAPForm extends ModelForm<LDAPPropertyMapping, stri | ||||
|                 ?required=${true} | ||||
|                 name="expression" | ||||
|             > | ||||
|                 <ak-codemirror mode="python" value="${ifDefined(this.instance?.expression)}"> | ||||
|                 <ak-codemirror | ||||
|                     mode=${CodeMirrorMode.Python} | ||||
|                     value="${ifDefined(this.instance?.expression)}" | ||||
|                 > | ||||
|                 </ak-codemirror> | ||||
|                 <p class="pf-c-form__helper-text"> | ||||
|                     ${msg("Expression using Python.")} | ||||
|  | ||||
| @ -1,6 +1,7 @@ | ||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; | ||||
| import { docLink } from "@goauthentik/common/global"; | ||||
| import "@goauthentik/elements/CodeMirror"; | ||||
| import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror"; | ||||
| import "@goauthentik/elements/forms/HorizontalFormElement"; | ||||
| import { ModelForm } from "@goauthentik/elements/forms/ModelForm"; | ||||
|  | ||||
| @ -54,7 +55,10 @@ export class PropertyMappingNotification extends ModelForm<NotificationWebhookMa | ||||
|                 ?required=${true} | ||||
|                 name="expression" | ||||
|             > | ||||
|                 <ak-codemirror mode="python" value="${ifDefined(this.instance?.expression)}"> | ||||
|                 <ak-codemirror | ||||
|                     mode=${CodeMirrorMode.Python} | ||||
|                     value="${ifDefined(this.instance?.expression)}" | ||||
|                 > | ||||
|                 </ak-codemirror> | ||||
|                 <p class="pf-c-form__helper-text"> | ||||
|                     ${msg("Expression using Python.")} | ||||
|  | ||||
| @ -1,6 +1,7 @@ | ||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; | ||||
| import { docLink } from "@goauthentik/common/global"; | ||||
| import "@goauthentik/elements/CodeMirror"; | ||||
| import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror"; | ||||
| import "@goauthentik/elements/forms/HorizontalFormElement"; | ||||
| import { ModelForm } from "@goauthentik/elements/forms/ModelForm"; | ||||
|  | ||||
| @ -81,7 +82,10 @@ export class PropertyMappingSAMLForm extends ModelForm<SAMLPropertyMapping, stri | ||||
|                 ?required=${true} | ||||
|                 name="expression" | ||||
|             > | ||||
|                 <ak-codemirror mode="python" value="${ifDefined(this.instance?.expression)}"> | ||||
|                 <ak-codemirror | ||||
|                     mode=${CodeMirrorMode.Python} | ||||
|                     value="${ifDefined(this.instance?.expression)}" | ||||
|                 > | ||||
|                 </ak-codemirror> | ||||
|                 <p class="pf-c-form__helper-text"> | ||||
|                     ${msg("Expression using Python.")} | ||||
|  | ||||
| @ -1,6 +1,7 @@ | ||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; | ||||
| import { docLink } from "@goauthentik/common/global"; | ||||
| import "@goauthentik/elements/CodeMirror"; | ||||
| import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror"; | ||||
| import "@goauthentik/elements/forms/HorizontalFormElement"; | ||||
| import { ModelForm } from "@goauthentik/elements/forms/ModelForm"; | ||||
|  | ||||
| @ -54,7 +55,10 @@ export class PropertyMappingSCIMForm extends ModelForm<SCIMMapping, string> { | ||||
|                 ?required=${true} | ||||
|                 name="expression" | ||||
|             > | ||||
|                 <ak-codemirror mode="python" value="${ifDefined(this.instance?.expression)}"> | ||||
|                 <ak-codemirror | ||||
|                     mode=${CodeMirrorMode.Python} | ||||
|                     value="${ifDefined(this.instance?.expression)}" | ||||
|                 > | ||||
|                 </ak-codemirror> | ||||
|                 <p class="pf-c-form__helper-text"> | ||||
|                     ${msg("Expression using Python.")} | ||||
|  | ||||
| @ -1,6 +1,7 @@ | ||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; | ||||
| import { docLink } from "@goauthentik/common/global"; | ||||
| import "@goauthentik/elements/CodeMirror"; | ||||
| import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror"; | ||||
| import "@goauthentik/elements/forms/HorizontalFormElement"; | ||||
| import { ModelForm } from "@goauthentik/elements/forms/ModelForm"; | ||||
|  | ||||
| @ -81,7 +82,10 @@ export class PropertyMappingScopeForm extends ModelForm<ScopeMapping, string> { | ||||
|                 ?required=${true} | ||||
|                 name="expression" | ||||
|             > | ||||
|                 <ak-codemirror mode="python" value="${ifDefined(this.instance?.expression)}"> | ||||
|                 <ak-codemirror | ||||
|                     mode=${CodeMirrorMode.Python} | ||||
|                     value="${ifDefined(this.instance?.expression)}" | ||||
|                 > | ||||
|                 </ak-codemirror> | ||||
|                 <p class="pf-c-form__helper-text"> | ||||
|                     ${msg("Expression using Python.")} | ||||
|  | ||||
| @ -1,6 +1,7 @@ | ||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; | ||||
| import { first } from "@goauthentik/common/utils"; | ||||
| import "@goauthentik/elements/CodeMirror"; | ||||
| import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror"; | ||||
| import { Form } from "@goauthentik/elements/forms/Form"; | ||||
| import "@goauthentik/elements/forms/HorizontalFormElement"; | ||||
| import "@goauthentik/elements/forms/SearchSelect"; | ||||
| @ -50,7 +51,7 @@ export class PolicyTestForm extends Form<PolicyTestRequest> { | ||||
|         return html`<ak-form-element-horizontal label=${msg("Result")}> | ||||
|             ${this.result?.successful | ||||
|                 ? html`<ak-codemirror | ||||
|                       mode="javascript" | ||||
|                       mode=${CodeMirrorMode.JavaScript} | ||||
|                       ?readOnly=${true} | ||||
|                       value="${ifDefined(this.result?.result)}" | ||||
|                   > | ||||
| @ -148,7 +149,7 @@ export class PolicyTestForm extends Form<PolicyTestRequest> { | ||||
|             </ak-form-element-horizontal> | ||||
|             <ak-form-element-horizontal label=${msg("Context")} name="context"> | ||||
|                 <ak-codemirror | ||||
|                     mode="yaml" | ||||
|                     mode=${CodeMirrorMode.YAML} | ||||
|                     value=${YAML.stringify(first(this.request?.context, {}))} | ||||
|                 > | ||||
|                 </ak-codemirror> | ||||
|  | ||||
| @ -7,6 +7,7 @@ import { MessageLevel } from "@goauthentik/common/messages"; | ||||
| import "@goauthentik/components/events/ObjectChangelog"; | ||||
| import { AKElement } from "@goauthentik/elements/Base"; | ||||
| import "@goauthentik/elements/CodeMirror"; | ||||
| import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror"; | ||||
| import "@goauthentik/elements/EmptyState"; | ||||
| import "@goauthentik/elements/Tabs"; | ||||
| import "@goauthentik/elements/buttons/ActionButton"; | ||||
| @ -472,7 +473,7 @@ export class SAMLProviderViewPage extends AKElement { | ||||
|                               </div> | ||||
|                               <div class="pf-c-card__footer"> | ||||
|                                   <ak-codemirror | ||||
|                                       mode="xml" | ||||
|                                       mode=${CodeMirrorMode.XML} | ||||
|                                       ?readOnly=${true} | ||||
|                                       value="${ifDefined(this.metadata?.metadata)}" | ||||
|                                   ></ak-codemirror> | ||||
|  | ||||
| @ -5,6 +5,7 @@ import { DEFAULT_CONFIG, config } from "@goauthentik/common/api/config"; | ||||
| import { first } from "@goauthentik/common/utils"; | ||||
| import { rootInterface } from "@goauthentik/elements/Base"; | ||||
| import "@goauthentik/elements/CodeMirror"; | ||||
| import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror"; | ||||
| import "@goauthentik/elements/forms/FormGroup"; | ||||
| import "@goauthentik/elements/forms/HorizontalFormElement"; | ||||
| import { ModelForm } from "@goauthentik/elements/forms/ModelForm"; | ||||
| @ -218,7 +219,7 @@ export class OAuthSourceForm extends ModelForm<OAuthSource, string> { | ||||
|  | ||||
|                           <ak-form-element-horizontal label=${msg("OIDC JWKS")} name="oidcJwks"> | ||||
|                               <ak-codemirror | ||||
|                                   mode="javascript" | ||||
|                                   mode=${CodeMirrorMode.JavaScript} | ||||
|                                   value="${JSON.stringify(first(this.instance?.oidcJwks, {}))}" | ||||
|                               > | ||||
|                               </ak-codemirror> | ||||
|  | ||||
| @ -6,6 +6,7 @@ import { EVENT_REFRESH } from "@goauthentik/common/constants"; | ||||
| import "@goauthentik/components/events/ObjectChangelog"; | ||||
| import { AKElement } from "@goauthentik/elements/Base"; | ||||
| import "@goauthentik/elements/CodeMirror"; | ||||
| import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror"; | ||||
| import "@goauthentik/elements/Tabs"; | ||||
| import "@goauthentik/elements/buttons/SpinnerButton"; | ||||
| import "@goauthentik/elements/forms/ModalForm"; | ||||
| @ -175,7 +176,7 @@ export class SAMLSourceViewPage extends AKElement { | ||||
|                     <div class="pf-c-card pf-l-grid__item pf-m-12-col"> | ||||
|                         <div class="pf-c-card__body"> | ||||
|                             <ak-codemirror | ||||
|                                 mode="xml" | ||||
|                                 mode=${CodeMirrorMode.XML} | ||||
|                                 ?readOnly=${true} | ||||
|                                 value="${ifDefined(this.metadata?.metadata)}" | ||||
|                             ></ak-codemirror> | ||||
|  | ||||
| @ -2,6 +2,7 @@ import "@goauthentik/admin/common/ak-flow-search/ak-flow-search"; | ||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; | ||||
| import { dateTimeLocal, first } from "@goauthentik/common/utils"; | ||||
| import "@goauthentik/elements/CodeMirror"; | ||||
| import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror"; | ||||
| import "@goauthentik/elements/forms/HorizontalFormElement"; | ||||
| import { ModelForm } from "@goauthentik/elements/forms/ModelForm"; | ||||
| import "@goauthentik/elements/forms/SearchSelect"; | ||||
| @ -79,7 +80,7 @@ export class InvitationForm extends ModelForm<Invitation, string> { | ||||
|             </ak-form-element-horizontal> | ||||
|             <ak-form-element-horizontal label=${msg("Custom attributes")} name="fixedData"> | ||||
|                 <ak-codemirror | ||||
|                     mode="yaml" | ||||
|                     mode=${CodeMirrorMode.YAML} | ||||
|                     value="${YAML.stringify(first(this.instance?.fixedData, {}))}" | ||||
|                 > | ||||
|                 </ak-codemirror> | ||||
|  | ||||
| @ -1,6 +1,7 @@ | ||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; | ||||
| import { first } from "@goauthentik/common/utils"; | ||||
| import "@goauthentik/elements/CodeMirror"; | ||||
| import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror"; | ||||
| import "@goauthentik/elements/forms/HorizontalFormElement"; | ||||
| import { ModelForm } from "@goauthentik/elements/forms/ModelForm"; | ||||
| import { StageHost } from "@goauthentik/flow/stages/base"; | ||||
| @ -240,7 +241,9 @@ export class PromptForm extends ModelForm<Prompt, string> { | ||||
|  | ||||
|     renderForm(): TemplateResult { | ||||
|         return html`<div class="pf-l-grid pf-m-gutter"> | ||||
|             <div class="pf-l-grid__item pf-m-6-col">${this.renderEditForm()}</div> | ||||
|             <div class="pf-l-grid__item pf-m-6-col pf-c-form pf-m-horizontal"> | ||||
|                 ${this.renderEditForm()} | ||||
|             </div> | ||||
|             <div class="pf-l-grid__item pf-m-6-col">${this.renderPreview()}</div> | ||||
|         </div> `; | ||||
|     } | ||||
| @ -386,7 +389,7 @@ export class PromptForm extends ModelForm<Prompt, string> { | ||||
|             </ak-form-element-horizontal> | ||||
|             <ak-form-element-horizontal label=${msg("Placeholder")} name="placeholder"> | ||||
|                 <ak-codemirror | ||||
|                     mode="python" | ||||
|                     mode=${CodeMirrorMode.Python} | ||||
|                     value="${ifDefined(this.instance?.placeholder)}" | ||||
|                     @change=${() => { | ||||
|                         this._shouldRefresh = true; | ||||
| @ -425,19 +428,22 @@ export class PromptForm extends ModelForm<Prompt, string> { | ||||
|                 </p> | ||||
|             </ak-form-element-horizontal> | ||||
|             <ak-form-element-horizontal label=${msg("Initial value")} name="initialValue"> | ||||
|                 <ak-codemirror mode="python" value="${ifDefined(this.instance?.initialValue)}"> | ||||
|                 <ak-codemirror | ||||
|                     mode=${CodeMirrorMode.Python} | ||||
|                     value="${ifDefined(this.instance?.initialValue)}" | ||||
|                 > | ||||
|                 </ak-codemirror> | ||||
|                 <p class="pf-c-form__helper-text"> | ||||
|                     ${msg( | ||||
|                         `Optionally pre-fill the input with an initial value. | ||||
|             When creating a fixed choice field, enable interpreting as expression and | ||||
|         return a list to return multiple default choices.`, | ||||
|                     )}} | ||||
|                     )} | ||||
|                 </p> | ||||
|             </ak-form-element-horizontal> | ||||
|             <ak-form-element-horizontal label=${msg("Help text")} name="subText"> | ||||
|                 <ak-codemirror | ||||
|                     mode="htmlmixed" | ||||
|                     mode=${CodeMirrorMode.HTML} | ||||
|                     value="${ifDefined(this.instance?.subText)}" | ||||
|                     @change=${() => { | ||||
|                         this._shouldRefresh = true; | ||||
|  | ||||
| @ -3,6 +3,7 @@ import "@goauthentik/admin/common/ak-flow-search/ak-flow-search"; | ||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; | ||||
| import { first } from "@goauthentik/common/utils"; | ||||
| import "@goauthentik/elements/CodeMirror"; | ||||
| import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror"; | ||||
| import "@goauthentik/elements/forms/FormGroup"; | ||||
| import "@goauthentik/elements/forms/HorizontalFormElement"; | ||||
| import { ModelForm } from "@goauthentik/elements/forms/ModelForm"; | ||||
| @ -267,7 +268,7 @@ export class TenantForm extends ModelForm<Tenant, string> { | ||||
|                     </ak-form-element-horizontal> | ||||
|                     <ak-form-element-horizontal label=${msg("Attributes")} name="attributes"> | ||||
|                         <ak-codemirror | ||||
|                             mode="yaml" | ||||
|                             mode=${CodeMirrorMode.YAML} | ||||
|                             value="${YAML.stringify(first(this.instance?.attributes, {}))}" | ||||
|                         > | ||||
|                         </ak-codemirror> | ||||
|  | ||||
| @ -3,6 +3,7 @@ import { UserTypeEnum } from "@goauthentik/api/dist/models/UserTypeEnum"; | ||||
| import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; | ||||
| import { first } from "@goauthentik/common/utils"; | ||||
| import "@goauthentik/elements/CodeMirror"; | ||||
| import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror"; | ||||
| import "@goauthentik/elements/forms/HorizontalFormElement"; | ||||
| import { ModelForm } from "@goauthentik/elements/forms/ModelForm"; | ||||
| import "@goauthentik/elements/forms/Radio"; | ||||
| @ -159,7 +160,7 @@ export class UserForm extends ModelForm<User, number> { | ||||
|                 name="attributes" | ||||
|             > | ||||
|                 <ak-codemirror | ||||
|                     mode="yaml" | ||||
|                     mode=${CodeMirrorMode.YAML} | ||||
|                     value="${YAML.stringify( | ||||
|                         first(this.instance?.attributes, UserForm.defaultUserAttributes), | ||||
|                     )}" | ||||
|  | ||||
| @ -18,17 +18,26 @@ import { EVENT_THEME_CHANGE } from "@goauthentik/common/constants"; | ||||
| import { AKElement } from "@goauthentik/elements/Base"; | ||||
| import YAML from "yaml"; | ||||
|  | ||||
| import { CSSResult, css } from "lit"; | ||||
| import { customElement, property } from "lit/decorators.js"; | ||||
|  | ||||
| import { UiThemeEnum } from "@goauthentik/api"; | ||||
|  | ||||
| export enum CodeMirrorMode { | ||||
|     XML = "xml", | ||||
|     JavaScript = "javascript", | ||||
|     HTML = "html", | ||||
|     Python = "python", | ||||
|     YAML = "yaml", | ||||
| } | ||||
|  | ||||
| @customElement("ak-codemirror") | ||||
| export class CodeMirrorTextarea<T> extends AKElement { | ||||
|     @property({ type: Boolean }) | ||||
|     readOnly = false; | ||||
|  | ||||
|     @property() | ||||
|     mode = "yaml"; | ||||
|     mode: CodeMirrorMode = CodeMirrorMode.YAML; | ||||
|  | ||||
|     @property() | ||||
|     name?: string; | ||||
| @ -45,6 +54,24 @@ export class CodeMirrorTextarea<T> extends AKElement { | ||||
|     themeLight: Extension; | ||||
|     themeDark: Extension; | ||||
|  | ||||
|     static get styles(): CSSResult[] { | ||||
|         return [ | ||||
|             // Better alignment with patternfly components | ||||
|             css` | ||||
|                 .cm-editor { | ||||
|                     padding-top: calc( | ||||
|                         var(--pf-global--spacer--form-element) - var(--pf-global--BorderWidth--sm) | ||||
|                     ); | ||||
|                     padding-bottom: calc( | ||||
|                         var(--pf-global--spacer--form-element) - var(--pf-global--BorderWidth--sm) | ||||
|                     ); | ||||
|                     padding-right: var(--pf-c-form-control--inset--base); | ||||
|                     padding-left: var(--pf-c-form-control--inset--base); | ||||
|                 } | ||||
|             `, | ||||
|         ]; | ||||
|     } | ||||
|  | ||||
|     @property() | ||||
|     // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types | ||||
|     set value(v: T | string) { | ||||
| @ -79,10 +106,10 @@ export class CodeMirrorTextarea<T> extends AKElement { | ||||
|             return this.getInnerValue(); | ||||
|         } | ||||
|         try { | ||||
|             switch (this.mode.toLowerCase()) { | ||||
|                 case "yaml": | ||||
|             switch (this.mode) { | ||||
|                 case CodeMirrorMode.YAML: | ||||
|                     return YAML.parse(this.getInnerValue()); | ||||
|                 case "javascript": | ||||
|                 case CodeMirrorMode.JavaScript: | ||||
|                     return JSON.parse(this.getInnerValue()); | ||||
|                 default: | ||||
|                     return this.getInnerValue(); | ||||
| @ -115,15 +142,15 @@ export class CodeMirrorTextarea<T> extends AKElement { | ||||
|  | ||||
|     getLanguageExtension(): LanguageSupport | undefined { | ||||
|         switch (this.mode.toLowerCase()) { | ||||
|             case "xml": | ||||
|             case CodeMirrorMode.XML: | ||||
|                 return xml(); | ||||
|             case "javascript": | ||||
|             case CodeMirrorMode.JavaScript: | ||||
|                 return javascript(); | ||||
|             case "html": | ||||
|             case CodeMirrorMode.HTML: | ||||
|                 return htmlLang(); | ||||
|             case "python": | ||||
|             case CodeMirrorMode.Python: | ||||
|                 return python(); | ||||
|             case "yaml": | ||||
|             case CodeMirrorMode.YAML: | ||||
|                 return new LanguageSupport(StreamLanguage.define(yamlMode.yaml)); | ||||
|         } | ||||
|         return undefined; | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Jens L
					Jens L