@things-factory/auth-ui 7.0.1-rc.10 → 7.0.1-rc.12

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 (109) hide show
  1. package/client/auth-style-sign.ts +3 -3
  2. package/client/components/abstract-auth-page.ts +8 -3
  3. package/client/components/abstract-password-reset.ts +2 -0
  4. package/client/components/abstract-sign.ts +3 -2
  5. package/client/components/change-password.ts +1 -1
  6. package/client/components/create-domain-popup.ts +1 -1
  7. package/client/components/create-role.ts +2 -2
  8. package/client/components/create-user.ts +2 -2
  9. package/client/components/domain-switch.ts +3 -3
  10. package/client/components/my-login-history.ts +1 -1
  11. package/client/components/ownership-transfer-popup.ts +2 -2
  12. package/client/components/partner-info-card.ts +2 -2
  13. package/client/components/partner-role-editor.ts +2 -2
  14. package/client/components/profile-component.ts +2 -2
  15. package/client/components/role-edit-form.ts +1 -1
  16. package/client/components/role-privilege-editor.ts +5 -5
  17. package/client/components/role-selector.ts +6 -6
  18. package/client/components/user-role-editor.ts +8 -4
  19. package/client/entries/auth/checkin.ts +4 -4
  20. package/client/entries/auth/result.ts +1 -1
  21. package/client/entries/auth/signin.ts +4 -0
  22. package/client/entries/auth/signup.ts +3 -0
  23. package/client/entries/oauth2/oauth2-decision-page.ts +4 -4
  24. package/client/entries/public/home.ts +4 -4
  25. package/client/pages/app-binding/app-binding.ts +4 -4
  26. package/client/pages/app-binding/app-bindings.ts +3 -3
  27. package/client/pages/appliance/appliance.ts +4 -4
  28. package/client/pages/appliance/home.ts +4 -4
  29. package/client/pages/appliance/register.ts +2 -2
  30. package/client/pages/application/application.ts +4 -4
  31. package/client/pages/application/applications.ts +3 -3
  32. package/client/pages/application/register.ts +3 -3
  33. package/client/pages/partner/partner-management.ts +1 -1
  34. package/client/pages/role/role-management.ts +9 -6
  35. package/client/pages/user/user-management.ts +2 -2
  36. package/dist-client/auth-style-sign.js +3 -3
  37. package/dist-client/auth-style-sign.js.map +1 -1
  38. package/dist-client/components/abstract-auth-page.d.ts +1 -0
  39. package/dist-client/components/abstract-auth-page.js +7 -3
  40. package/dist-client/components/abstract-auth-page.js.map +1 -1
  41. package/dist-client/components/abstract-password-reset.js +2 -0
  42. package/dist-client/components/abstract-password-reset.js.map +1 -1
  43. package/dist-client/components/abstract-sign.js +3 -2
  44. package/dist-client/components/abstract-sign.js.map +1 -1
  45. package/dist-client/components/change-password.js +1 -1
  46. package/dist-client/components/change-password.js.map +1 -1
  47. package/dist-client/components/create-domain-popup.js +1 -1
  48. package/dist-client/components/create-domain-popup.js.map +1 -1
  49. package/dist-client/components/create-role.js +2 -2
  50. package/dist-client/components/create-role.js.map +1 -1
  51. package/dist-client/components/create-user.js +2 -2
  52. package/dist-client/components/create-user.js.map +1 -1
  53. package/dist-client/components/domain-switch.js +3 -3
  54. package/dist-client/components/domain-switch.js.map +1 -1
  55. package/dist-client/components/my-login-history.js +1 -1
  56. package/dist-client/components/my-login-history.js.map +1 -1
  57. package/dist-client/components/ownership-transfer-popup.js +2 -2
  58. package/dist-client/components/ownership-transfer-popup.js.map +1 -1
  59. package/dist-client/components/partner-info-card.js +2 -2
  60. package/dist-client/components/partner-info-card.js.map +1 -1
  61. package/dist-client/components/partner-role-editor.js +2 -2
  62. package/dist-client/components/partner-role-editor.js.map +1 -1
  63. package/dist-client/components/profile-component.js +2 -2
  64. package/dist-client/components/profile-component.js.map +1 -1
  65. package/dist-client/components/role-edit-form.js +1 -1
  66. package/dist-client/components/role-edit-form.js.map +1 -1
  67. package/dist-client/components/role-privilege-editor.js +5 -5
  68. package/dist-client/components/role-privilege-editor.js.map +1 -1
  69. package/dist-client/components/role-selector.js +6 -6
  70. package/dist-client/components/role-selector.js.map +1 -1
  71. package/dist-client/components/user-role-editor.js +8 -4
  72. package/dist-client/components/user-role-editor.js.map +1 -1
  73. package/dist-client/entries/auth/checkin.js +4 -4
  74. package/dist-client/entries/auth/checkin.js.map +1 -1
  75. package/dist-client/entries/auth/result.js +1 -1
  76. package/dist-client/entries/auth/result.js.map +1 -1
  77. package/dist-client/entries/auth/signin.d.ts +1 -0
  78. package/dist-client/entries/auth/signin.js +3 -0
  79. package/dist-client/entries/auth/signin.js.map +1 -1
  80. package/dist-client/entries/auth/signup.js +3 -0
  81. package/dist-client/entries/auth/signup.js.map +1 -1
  82. package/dist-client/entries/oauth2/oauth2-decision-page.js +4 -4
  83. package/dist-client/entries/oauth2/oauth2-decision-page.js.map +1 -1
  84. package/dist-client/entries/public/home.js +4 -4
  85. package/dist-client/entries/public/home.js.map +1 -1
  86. package/dist-client/pages/app-binding/app-binding.js +4 -4
  87. package/dist-client/pages/app-binding/app-binding.js.map +1 -1
  88. package/dist-client/pages/app-binding/app-bindings.js +3 -3
  89. package/dist-client/pages/app-binding/app-bindings.js.map +1 -1
  90. package/dist-client/pages/appliance/appliance.js +4 -4
  91. package/dist-client/pages/appliance/appliance.js.map +1 -1
  92. package/dist-client/pages/appliance/home.js +4 -4
  93. package/dist-client/pages/appliance/home.js.map +1 -1
  94. package/dist-client/pages/appliance/register.js +2 -2
  95. package/dist-client/pages/appliance/register.js.map +1 -1
  96. package/dist-client/pages/application/application.js +4 -4
  97. package/dist-client/pages/application/application.js.map +1 -1
  98. package/dist-client/pages/application/applications.js +3 -3
  99. package/dist-client/pages/application/applications.js.map +1 -1
  100. package/dist-client/pages/application/register.js +3 -3
  101. package/dist-client/pages/application/register.js.map +1 -1
  102. package/dist-client/pages/partner/partner-management.js +1 -1
  103. package/dist-client/pages/partner/partner-management.js.map +1 -1
  104. package/dist-client/pages/role/role-management.js +9 -6
  105. package/dist-client/pages/role/role-management.js.map +1 -1
  106. package/dist-client/pages/user/user-management.js +2 -2
  107. package/dist-client/pages/user/user-management.js.map +1 -1
  108. package/dist-client/tsconfig.tsbuildinfo +1 -1
  109. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"register.js","sourceRoot":"","sources":["../../../client/pages/application/register.ts"],"names":[],"mappings":";AAAA,OAAO,GAAG,MAAM,aAAa,CAAA;AAC7B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC/B,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACzE,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AAEtD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAG1D,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;IAqGxD,IAAI,OAAO;QACT,OAAO;YACL,KAAK,EAAE,0BAA0B;YACjC,IAAI,EAAE,kBAAkB;SACzB,CAAA;IACH,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;;;;;;;QAQP,IAAI,CAAC,KAAK;YACV,CAAC,CAAC,IAAI,CAAA;;yBAEW,IAAI,CAAC,KAAK;;WAExB;YACH,CAAC,CAAC,IAAI,CAAA,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;iEA2BiD,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;;;;;;;;mDAQhD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;;;;KAI/E,CAAA;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACvB,CAAC,CAAC,cAAc,EAAE,CAAA;QAElB,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAExC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YACtF,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;YACxB,OAAO,WAAW,CAAA;QACpB,CAAC,EAAE,EAAE,CAAC,CAAA;QAEN,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;YACnC,QAAQ,EAAE,GAAG,CAAA;;;;;;OAMZ;YACD,SAAS,EAAE;gBACT,WAAW;aACZ;SACF,CAAC,CAAA;QAEF,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;QAC/B,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAA;YAC7C,QAAQ,CAAC,eAAe,EAAE,EAAE,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC;IAED,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM;QACpC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;QACnB,CAAC;IACH,CAAC;;AAvMM,0BAAM,GAAG;IACd,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA0FF;CACF,AA5FY,CA4FZ;AAE2B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;wDAAiB;AAE7B;IAAd,KAAK,CAAC,MAAM,CAAC;8BAAQ,eAAe;iDAAA;AAE5B;IAAR,KAAK,EAAE;;kDAAe;AAnGnB,mBAAmB;IADxB,aAAa,CAAC,sBAAsB,CAAC;GAChC,mBAAmB,CAyMxB","sourcesContent":["import gql from 'graphql-tag'\nimport { css, html } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport { connect } from 'pwa-helpers/connect-mixin.js'\n\nimport { client } from '@operato/graphql'\nimport { navigate, PageView, store } from '@operato/shell'\n\n@customElement('application-register')\nclass ApplicationRegister extends connect(store)(PageView) {\n static styles = [\n css`\n :host {\n background-color: var(--md-sys-color-background);\n padding: var(--padding-wide);\n\n position: relative;\n\n overflow: auto;\n }\n h2 {\n margin: var(--title-margin);\n font: var(--title-font);\n color: var(--title-text-color);\n }\n [page-description] {\n margin: var(--page-description-margin);\n font: var(--page-description-font);\n color: var(--page-description-color);\n }\n [icon] {\n position: absolute;\n top: 10px;\n right: 10px;\n\n max-width: 80px;\n }\n [icon] img {\n max-width: 100%;\n max-height: 100%;\n }\n\n img[pagedeco] {\n width: 150px;\n margin: 0 var(--margin-wide);\n float: left;\n position: relative;\n top: -20px;\n }\n\n [form-container] {\n background-color: var(--md-sys-color-surface);\n padding: var(--padding-wide);\n border-radius: var(--border-radius);\n box-shadow: var(--box-shadow);\n max-width: var(--input-container-max-width);\n position: relative;\n top: -50px;\n clear: both;\n }\n label {\n font: var(--label-font);\n color: var(--label-color, var(--md-sys-color-on-surface));\n text-transform: var(--label-text-transform);\n }\n input {\n border: var(--border-dim-color);\n border-radius: var(--border-radius);\n margin: var(--input-margin);\n padding: var(--input-padding);\n font: var(--input-font);\n\n flex: 1;\n }\n select:focus,\n input:focus {\n outline: none;\n }\n [field-2column] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-gap: 15px;\n }\n [field] {\n display: flex;\n flex-direction: column;\n }\n [grid-span] {\n grid-column: span 2;\n }\n @media screen and (max-width: 480px) {\n img[pagedeco] {\n display: none;\n }\n [form-container] {\n position: initial;\n }\n [field] {\n grid-column: span 2;\n }\n }\n `\n ]\n\n @property({ type: Object }) application: any\n\n @query('form') form!: HTMLFormElement\n\n @state() _icon?: string\n\n get context() {\n return {\n title: `application registration`,\n help: 'auth/application'\n }\n }\n\n render() {\n return html`\n <img src=\"/assets/images/image-api.png\" pagedeco />\n <h2>Register new application</h2>\n <p page-description>\n You can register new application here.<br />\n What type of app are you building? Choose the app type that best suits the audience you’re building for.\n </p>\n\n ${this._icon\n ? html`\n <div icon>\n <img src=${this._icon} />\n </div>\n `\n : html``}\n\n <div form-container>\n <form>\n <div field-2column>\n <div field grid-span>\n <label for=\"name\">name</label>\n <input id=\"name\" type=\"text\" name=\"name\" />\n </div>\n\n <div field grid-span>\n <label for=\"description\">description</label>\n <input id=\"description\" type=\"text\" name=\"description\" />\n </div>\n\n <div field grid-span>\n <label for=\"app-url\">application url</label>\n <input id=\"app-url\" type=\"text\" name=\"url\" />\n </div>\n\n <div field grid-span>\n <label for=\"redirect-url\">redirectUrl</label>\n <input id=\"redirect-url\" type=\"text\" name=\"redirectUrl\" />\n </div>\n\n <div field grid-span>\n <label for=\"icon\">application icon</label>\n <input id=\"icon\" type=\"text\" name=\"icon\" @change=${e => (this._icon = e.target.value)} />\n </div>\n\n <div field grid-span>\n <label for=\"email\">contact email</label>\n <input id=\"email\" type=\"text\" name=\"email\" />\n </div>\n\n <md-elevated-button grid-span @click=${this.createApplication.bind(this)}>register</md-elevated-button>\n </div>\n </form>\n </div>\n `\n }\n\n async createApplication(e) {\n e.preventDefault()\n\n const formData = new FormData(this.form)\n\n const application = Array.from(formData.entries()).reduce((application, [key, value]) => {\n application[key] = value\n return application\n }, {})\n\n const response = await client.mutate({\n mutation: gql`\n mutation ($application: NewApplication!) {\n createApplication(application: $application) {\n id\n }\n }\n `,\n variables: {\n application\n }\n })\n\n if (response.errors) {\n console.log('creation fail.')\n } else {\n const id = response.data.createApplication.id\n navigate(`application/${id}`)\n }\n }\n\n pageUpdated(changes, lifecycle, before) {\n if (this.active) {\n this.form.reset()\n }\n }\n}\n"]}
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../../client/pages/application/register.ts"],"names":[],"mappings":";AAAA,OAAO,GAAG,MAAM,aAAa,CAAA;AAC7B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC/B,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACzE,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AAEtD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAG1D,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;IAqGxD,IAAI,OAAO;QACT,OAAO;YACL,KAAK,EAAE,0BAA0B;YACjC,IAAI,EAAE,kBAAkB;SACzB,CAAA;IACH,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;;;;;;;QAQP,IAAI,CAAC,KAAK;YACV,CAAC,CAAC,IAAI,CAAA;;yBAEW,IAAI,CAAC,KAAK;;WAExB;YACH,CAAC,CAAC,IAAI,CAAA,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;iEA2BiD,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;;;;;;;;mDAQhD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;;;;KAI/E,CAAA;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACvB,CAAC,CAAC,cAAc,EAAE,CAAA;QAElB,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAExC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YACtF,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;YACxB,OAAO,WAAW,CAAA;QACpB,CAAC,EAAE,EAAE,CAAC,CAAA;QAEN,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;YACnC,QAAQ,EAAE,GAAG,CAAA;;;;;;OAMZ;YACD,SAAS,EAAE;gBACT,WAAW;aACZ;SACF,CAAC,CAAA;QAEF,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;QAC/B,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAA;YAC7C,QAAQ,CAAC,eAAe,EAAE,EAAE,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC;IAED,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM;QACpC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;QACnB,CAAC;IACH,CAAC;;AAvMM,0BAAM,GAAG;IACd,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA0FF;CACF,AA5FY,CA4FZ;AAE2B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;wDAAiB;AAE7B;IAAd,KAAK,CAAC,MAAM,CAAC;8BAAQ,eAAe;iDAAA;AAE5B;IAAR,KAAK,EAAE;;kDAAe;AAnGnB,mBAAmB;IADxB,aAAa,CAAC,sBAAsB,CAAC;GAChC,mBAAmB,CAyMxB","sourcesContent":["import gql from 'graphql-tag'\nimport { css, html } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport { connect } from 'pwa-helpers/connect-mixin.js'\n\nimport { client } from '@operato/graphql'\nimport { navigate, PageView, store } from '@operato/shell'\n\n@customElement('application-register')\nclass ApplicationRegister extends connect(store)(PageView) {\n static styles = [\n css`\n :host {\n background-color: var(--md-sys-color-background);\n padding: var(--spacing-large);\n\n position: relative;\n\n overflow: auto;\n }\n h2 {\n margin: var(--title-margin);\n font: var(--title-font);\n color: var(--title-text-color);\n }\n [page-description] {\n margin: var(--page-description-margin);\n font: var(--page-description-font);\n color: var(--page-description-color);\n }\n [icon] {\n position: absolute;\n top: 10px;\n right: 10px;\n\n max-width: 80px;\n }\n [icon] img {\n max-width: 100%;\n max-height: 100%;\n }\n\n img[pagedeco] {\n width: 150px;\n margin: 0 var(--spacing-large);\n float: left;\n position: relative;\n top: -20px;\n }\n\n [form-container] {\n background-color: var(--md-sys-color-surface);\n padding: var(--spacing-large);\n border-radius: var(--border-radius);\n box-shadow: var(--box-shadow);\n max-width: var(--input-container-max-width);\n position: relative;\n top: -50px;\n clear: both;\n }\n label {\n font: var(--label-font);\n color: var(--label-color, var(--md-sys-color-on-surface));\n text-transform: var(--label-text-transform);\n }\n input {\n border: var(--border-dim-color);\n border-radius: var(--border-radius);\n margin: var(--input-margin);\n padding: var(--input-padding);\n font: var(--input-font);\n\n flex: 1;\n }\n select:focus,\n input:focus {\n outline: none;\n }\n [field-2column] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-gap: 15px;\n }\n [field] {\n display: flex;\n flex-direction: column;\n }\n [grid-span] {\n grid-column: span 2;\n }\n @media screen and (max-width: 480px) {\n img[pagedeco] {\n display: none;\n }\n [form-container] {\n position: initial;\n }\n [field] {\n grid-column: span 2;\n }\n }\n `\n ]\n\n @property({ type: Object }) application: any\n\n @query('form') form!: HTMLFormElement\n\n @state() _icon?: string\n\n get context() {\n return {\n title: `application registration`,\n help: 'auth/application'\n }\n }\n\n render() {\n return html`\n <img src=\"/assets/images/image-api.png\" pagedeco />\n <h2>Register new application</h2>\n <p page-description>\n You can register new application here.<br />\n What type of app are you building? Choose the app type that best suits the audience you’re building for.\n </p>\n\n ${this._icon\n ? html`\n <div icon>\n <img src=${this._icon} />\n </div>\n `\n : html``}\n\n <div form-container>\n <form>\n <div field-2column>\n <div field grid-span>\n <label for=\"name\">name</label>\n <input id=\"name\" type=\"text\" name=\"name\" />\n </div>\n\n <div field grid-span>\n <label for=\"description\">description</label>\n <input id=\"description\" type=\"text\" name=\"description\" />\n </div>\n\n <div field grid-span>\n <label for=\"app-url\">application url</label>\n <input id=\"app-url\" type=\"text\" name=\"url\" />\n </div>\n\n <div field grid-span>\n <label for=\"redirect-url\">redirectUrl</label>\n <input id=\"redirect-url\" type=\"text\" name=\"redirectUrl\" />\n </div>\n\n <div field grid-span>\n <label for=\"icon\">application icon</label>\n <input id=\"icon\" type=\"text\" name=\"icon\" @change=${e => (this._icon = e.target.value)} />\n </div>\n\n <div field grid-span>\n <label for=\"email\">contact email</label>\n <input id=\"email\" type=\"text\" name=\"email\" />\n </div>\n\n <md-elevated-button grid-span @click=${this.createApplication.bind(this)}>register</md-elevated-button>\n </div>\n </form>\n </div>\n `\n }\n\n async createApplication(e) {\n e.preventDefault()\n\n const formData = new FormData(this.form)\n\n const application = Array.from(formData.entries()).reduce((application, [key, value]) => {\n application[key] = value\n return application\n }, {})\n\n const response = await client.mutate({\n mutation: gql`\n mutation ($application: NewApplication!) {\n createApplication(application: $application) {\n id\n }\n }\n `,\n variables: {\n application\n }\n })\n\n if (response.errors) {\n console.log('creation fail.')\n } else {\n const id = response.data.createApplication.id\n navigate(`application/${id}`)\n }\n }\n\n pageUpdated(changes, lifecycle, before) {\n if (this.active) {\n this.form.reset()\n }\n }\n}\n"]}
@@ -91,7 +91,7 @@ PartnerManagement.styles = [
91
91
  display: flex;
92
92
  flex-direction: column;
93
93
  background-color: var(--md-sys-color-background);
94
- padding: var(--padding-wide);
94
+ padding: var(--spacing-large);
95
95
 
96
96
  overflow: auto;
97
97
  }
@@ -1 +1 @@
1
- {"version":3,"file":"partner-management.js","sourceRoot":"","sources":["../../../client/pages/partner/partner-management.ts"],"names":[],"mappings":";AAAA,OAAO,8BAA8B,CAAA;AACrC,OAAO,oCAAoC,CAAA;AAC3C,OAAO,sCAAsC,CAAA;AAC7C,OAAO,kCAAkC,CAAA;AAEzC,OAAO,GAAG,MAAM,aAAa,CAAA;AAC7B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC/B,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AAEtD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAGhD,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;IAAxD;;QAsB6B,cAAS,GAAU,EAAE,CAAA;QACrB,YAAO,GAAU,EAAE,CAAA;IAyEhD,CAAC;IAvEC,IAAI,OAAO;QACT,OAAO;YACL,KAAK,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE;YACvC,IAAI,EAAE,sBAAsB;SAC7B,CAAA;IACH,CAAC;IAED,MAAM;QACJ,MAAM,IAAI,GAAG;YACX,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;YACpD,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;SACjD,CAAA;QAED,OAAO,IAAI,CAAA;;;;iBAIE,IAAI;4BACO,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,CAAC,IAAI,CAAA;YAC7C,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC;YAC9C,CAAC,CAAC,IAAI,CAAA;;;+BAGa,IAAI;yCACM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;;eAEzD;YACH,CAAC,CAAC,IAAI,CAAA,gCAAgC,IAAI,wBAAwB;SACrE;;;;;qBAKY,IAAI,CAAC,SAAS,IAAI,EAAE;gCACT,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;;KAE1D,CAAA;IACH,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,eAAe,EAAE,CAAA;QACxB,CAAC;aAAM,CAAC;YACN,8BAA8B;QAChC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe;;QACnB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;YAClC,KAAK,EAAE,GAAG,CAAA;;;;;;;;;;;;;OAaT;YACD,OAAO,EAAE,UAAU,EAAE;SACtB,CAAC,CAAA;QAEF,IAAI,CAAC,CAAA,MAAA,QAAQ,CAAC,MAAM,0CAAE,MAAM,CAAA,EAAE,CAAC;YAC7B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAA;YACxC,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAA;QACtC,CAAC;IACH,CAAC;;AA9FM,wBAAM,GAAG;IACd,GAAG,CAAA;;;;;;;;;;;;;;;;;KAiBF;CACF,AAnBY,CAmBZ;AAE0B;IAA1B,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;;oDAAsB;AACrB;IAA1B,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;;kDAAoB;AAvB1C,iBAAiB;IADtB,aAAa,CAAC,oBAAoB,CAAC;GAC9B,iBAAiB,CAgGtB","sourcesContent":["import '@things-factory/component-ui'\nimport '../../components/partner-info-card'\nimport '../../components/partner-role-editor'\nimport '../../components/invite-customer'\n\nimport gql from 'graphql-tag'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { connect } from 'pwa-helpers/connect-mixin.js'\n\nimport { client, gqlContext } from '@operato/graphql'\nimport { i18next } from '@operato/i18n'\nimport { PageView, store } from '@operato/shell'\n\n@customElement('partner-management')\nclass PartnerManagement extends connect(store)(PageView) {\n static styles = [\n css`\n :host {\n display: flex;\n flex-direction: column;\n background-color: var(--md-sys-color-background);\n padding: var(--padding-wide);\n\n overflow: auto;\n }\n h2 {\n margin: var(--title-margin);\n font: var(--title-font);\n color: var(--title-text-color);\n }\n .role-editor {\n flex: 1;\n }\n `\n ]\n\n @property({ type: Array }) customers: any[] = []\n @property({ type: Array }) vendors: any[] = []\n\n get context() {\n return {\n title: `${i18next.t('title.partners')}`,\n help: 'operato-hub/partners'\n }\n }\n\n render() {\n const data = {\n [i18next.t('label.customers')]: this.customers || [],\n [i18next.t('label.vendors')]: this.vendors || []\n }\n\n return html`\n <h2>partners</h2>\n\n <quick-find-list\n .data=\"${data}\"\n .contentRenderer=\"${(item, currentTabKey) => html`\n ${currentTabKey === i18next.t('label.customers')\n ? html`\n <partner-role-editor\n class=\"role-editor\"\n .customer=\"${item}\"\n @contractTerminated=\"${this.refreshPartners.bind(this)}\"\n ></partner-role-editor>\n `\n : html`<partner-info-card .partner=\"${item}\"></partner-info-card>`}\n `}\"\n >\n </quick-find-list>\n\n <invite-customer\n .customers=${this.customers || []}\n @invitationCompleted=\"${this.refreshPartners.bind(this)}\"\n ></invite-customer>\n `\n }\n\n pageUpdated() {\n if (this.active) {\n this.refreshPartners()\n } else {\n /* this page is deactivated */\n }\n }\n\n async refreshPartners() {\n const response = await client.query({\n query: gql`\n query {\n customers {\n id\n name\n description\n }\n vendors {\n id\n name\n description\n }\n }\n `,\n context: gqlContext()\n })\n\n if (!response.errors?.length) {\n this.customers = response.data.customers\n this.vendors = response.data.vendors\n }\n }\n}\n"]}
1
+ {"version":3,"file":"partner-management.js","sourceRoot":"","sources":["../../../client/pages/partner/partner-management.ts"],"names":[],"mappings":";AAAA,OAAO,8BAA8B,CAAA;AACrC,OAAO,oCAAoC,CAAA;AAC3C,OAAO,sCAAsC,CAAA;AAC7C,OAAO,kCAAkC,CAAA;AAEzC,OAAO,GAAG,MAAM,aAAa,CAAA;AAC7B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC/B,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AAEtD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAGhD,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;IAAxD;;QAsB6B,cAAS,GAAU,EAAE,CAAA;QACrB,YAAO,GAAU,EAAE,CAAA;IAyEhD,CAAC;IAvEC,IAAI,OAAO;QACT,OAAO;YACL,KAAK,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE;YACvC,IAAI,EAAE,sBAAsB;SAC7B,CAAA;IACH,CAAC;IAED,MAAM;QACJ,MAAM,IAAI,GAAG;YACX,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;YACpD,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;SACjD,CAAA;QAED,OAAO,IAAI,CAAA;;;;iBAIE,IAAI;4BACO,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,CAAC,IAAI,CAAA;YAC7C,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC;YAC9C,CAAC,CAAC,IAAI,CAAA;;;+BAGa,IAAI;yCACM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;;eAEzD;YACH,CAAC,CAAC,IAAI,CAAA,gCAAgC,IAAI,wBAAwB;SACrE;;;;;qBAKY,IAAI,CAAC,SAAS,IAAI,EAAE;gCACT,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;;KAE1D,CAAA;IACH,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,eAAe,EAAE,CAAA;QACxB,CAAC;aAAM,CAAC;YACN,8BAA8B;QAChC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe;;QACnB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;YAClC,KAAK,EAAE,GAAG,CAAA;;;;;;;;;;;;;OAaT;YACD,OAAO,EAAE,UAAU,EAAE;SACtB,CAAC,CAAA;QAEF,IAAI,CAAC,CAAA,MAAA,QAAQ,CAAC,MAAM,0CAAE,MAAM,CAAA,EAAE,CAAC;YAC7B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAA;YACxC,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAA;QACtC,CAAC;IACH,CAAC;;AA9FM,wBAAM,GAAG;IACd,GAAG,CAAA;;;;;;;;;;;;;;;;;KAiBF;CACF,AAnBY,CAmBZ;AAE0B;IAA1B,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;;oDAAsB;AACrB;IAA1B,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;;kDAAoB;AAvB1C,iBAAiB;IADtB,aAAa,CAAC,oBAAoB,CAAC;GAC9B,iBAAiB,CAgGtB","sourcesContent":["import '@things-factory/component-ui'\nimport '../../components/partner-info-card'\nimport '../../components/partner-role-editor'\nimport '../../components/invite-customer'\n\nimport gql from 'graphql-tag'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { connect } from 'pwa-helpers/connect-mixin.js'\n\nimport { client, gqlContext } from '@operato/graphql'\nimport { i18next } from '@operato/i18n'\nimport { PageView, store } from '@operato/shell'\n\n@customElement('partner-management')\nclass PartnerManagement extends connect(store)(PageView) {\n static styles = [\n css`\n :host {\n display: flex;\n flex-direction: column;\n background-color: var(--md-sys-color-background);\n padding: var(--spacing-large);\n\n overflow: auto;\n }\n h2 {\n margin: var(--title-margin);\n font: var(--title-font);\n color: var(--title-text-color);\n }\n .role-editor {\n flex: 1;\n }\n `\n ]\n\n @property({ type: Array }) customers: any[] = []\n @property({ type: Array }) vendors: any[] = []\n\n get context() {\n return {\n title: `${i18next.t('title.partners')}`,\n help: 'operato-hub/partners'\n }\n }\n\n render() {\n const data = {\n [i18next.t('label.customers')]: this.customers || [],\n [i18next.t('label.vendors')]: this.vendors || []\n }\n\n return html`\n <h2>partners</h2>\n\n <quick-find-list\n .data=\"${data}\"\n .contentRenderer=\"${(item, currentTabKey) => html`\n ${currentTabKey === i18next.t('label.customers')\n ? html`\n <partner-role-editor\n class=\"role-editor\"\n .customer=\"${item}\"\n @contractTerminated=\"${this.refreshPartners.bind(this)}\"\n ></partner-role-editor>\n `\n : html`<partner-info-card .partner=\"${item}\"></partner-info-card>`}\n `}\"\n >\n </quick-find-list>\n\n <invite-customer\n .customers=${this.customers || []}\n @invitationCompleted=\"${this.refreshPartners.bind(this)}\"\n ></invite-customer>\n `\n }\n\n pageUpdated() {\n if (this.active) {\n this.refreshPartners()\n } else {\n /* this page is deactivated */\n }\n }\n\n async refreshPartners() {\n const response = await client.query({\n query: gql`\n query {\n customers {\n id\n name\n description\n }\n vendors {\n id\n name\n description\n }\n }\n `,\n context: gqlContext()\n })\n\n if (!response.errors?.length) {\n this.customers = response.data.customers\n this.vendors = response.data.vendors\n }\n }\n}\n"]}
@@ -9,7 +9,7 @@ import { customElement, property, query } from 'lit/decorators.js';
9
9
  import { connect } from 'pwa-helpers/connect-mixin.js';
10
10
  import { client, gqlContext } from '@operato/graphql';
11
11
  import { i18next } from '@operato/i18n';
12
- import { PageView, store } from '@operato/shell';
12
+ import { InheritedValueType, PageView, store } from '@operato/shell';
13
13
  let RoleManagement = class RoleManagement extends connect(store)(PageView) {
14
14
  constructor() {
15
15
  super(...arguments);
@@ -64,8 +64,8 @@ let RoleManagement = class RoleManagement extends connect(store)(PageView) {
64
64
  async fetchRoles() {
65
65
  const response = await client.query({
66
66
  query: gql `
67
- query roles($sortings: [Sorting!]) {
68
- roles(sortings: $sortings) {
67
+ query roles($sortings: [Sorting!], $inherited: InheritedValueType) {
68
+ roles(sortings: $sortings, inherited: $inherited) {
69
69
  items {
70
70
  id
71
71
  name
@@ -79,7 +79,10 @@ let RoleManagement = class RoleManagement extends connect(store)(PageView) {
79
79
  }
80
80
  }
81
81
  `,
82
- variables: { sortings: [{ name: 'name' }] },
82
+ variables: {
83
+ sortings: [{ name: 'name' }],
84
+ inherited: InheritedValueType.Only
85
+ },
83
86
  context: gqlContext()
84
87
  });
85
88
  return response.data.roles.items;
@@ -91,7 +94,7 @@ RoleManagement.styles = [
91
94
  display: flex;
92
95
  flex-direction: column;
93
96
  background-color: var(--md-sys-color-background);
94
- padding: var(--padding-wide);
97
+ padding: var(--spacing-large);
95
98
  overflow: auto;
96
99
  }
97
100
 
@@ -108,7 +111,7 @@ RoleManagement.styles = [
108
111
  #roles-privileges {
109
112
  flex: 1;
110
113
  display: flex;
111
- margin-top: var(--margin-default);
114
+ margin-top: var(--spacing-medium);
112
115
  max-width: var(--content-container-max-width);
113
116
  flex-direction: row;
114
117
  overflow: auto;
@@ -1 +1 @@
1
- {"version":3,"file":"role-management.js","sourceRoot":"","sources":["../../../client/pages/role/role-management.ts"],"names":[],"mappings":"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","sourcesContent":["import '@things-factory/component-ui'\nimport '../../components/create-role'\nimport '../../components/role-edit-form'\nimport '../../components/role-privilege-editor'\n\nimport gql from 'graphql-tag'\nimport { css, html } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { connect } from 'pwa-helpers/connect-mixin.js'\n\nimport { client, gqlContext } from '@operato/graphql'\nimport { i18next } from '@operato/i18n'\nimport { PageView, store } from '@operato/shell'\n\n@customElement('role-management')\nclass RoleManagement extends connect(store)(PageView) {\n static styles = [\n css`\n :host {\n display: flex;\n flex-direction: column;\n background-color: var(--md-sys-color-background);\n padding: var(--padding-wide);\n overflow: auto;\n }\n\n [subtitle] {\n padding: var(--subtitle-padding);\n font: var(--subtitle-font);\n color: var(--subtitle-text-color);\n }\n\n input {\n display: block;\n }\n\n #roles-privileges {\n flex: 1;\n display: flex;\n margin-top: var(--margin-default);\n max-width: var(--content-container-max-width);\n flex-direction: row;\n overflow: auto;\n border-top: var(--border-dim-color);\n }\n `\n ]\n\n @property({ type: String }) title: string = ''\n @property({ type: Object }) role: any\n @property({ type: Array }) roles: any[] = []\n @property({ type: Object }) updateRoleObj: any\n\n get context() {\n return {\n title: i18next.t('text.role_management'),\n help: 'auth/roles'\n }\n }\n\n render() {\n const data = {\n roles: this.roles || []\n }\n\n return html`\n <create-role\n @fetch-roles=${async () => {\n this.roles = await this.fetchRoles()\n }}\n ></create-role>\n\n <div subtitle>${i18next.t('text.registered roles')}</div>\n <div id=\"roles-privileges\">\n <quick-find-list\n .data=\"${data}\"\n .openHeaderRenderer=${role => html`\n <role-edit-form .role=\"${role}\" @roleChanged=\"${e => (this.updateRoleObj = e.detail)}\"></role-edit-form>\n `}\n .contentRenderer=\"${(role, _currentTabKey) => html`\n <role-privilege-editor\n .updateRoleObj=${this.updateRoleObj || {}}\n .role=${role}\n @fetch-roles=${async () => {\n this.roles = await this.fetchRoles()\n await this.updateComplete\n this.quickFindList.openByKey(role.id)\n }}\n ></role-privilege-editor>\n `}\"\n ></quick-find-list>\n </div>\n `\n }\n\n @query('quick-find-list') quickFindList!: HTMLElement & { openByKey: (roleId: string) => void }\n\n async pageUpdated(changes, lifecycle, before) {\n if (this.active) {\n this.roles = await this.fetchRoles()\n this.role = this.roles && this.roles[0]\n }\n }\n\n async fetchRoles() {\n const response = await client.query({\n query: gql`\n query roles($sortings: [Sorting!]) {\n roles(sortings: $sortings) {\n items {\n id\n name\n description\n privileges {\n id\n name\n }\n }\n total\n }\n }\n `,\n variables: { sortings: [{ name: 'name' }] },\n context: gqlContext()\n })\n\n return response.data.roles.items\n }\n}\n"]}
1
+ {"version":3,"file":"role-management.js","sourceRoot":"","sources":["../../../client/pages/role/role-management.ts"],"names":[],"mappings":"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","sourcesContent":["import '@things-factory/component-ui'\nimport '../../components/create-role'\nimport '../../components/role-edit-form'\nimport '../../components/role-privilege-editor'\n\nimport gql from 'graphql-tag'\nimport { css, html } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { connect } from 'pwa-helpers/connect-mixin.js'\n\nimport { client, gqlContext } from '@operato/graphql'\nimport { i18next } from '@operato/i18n'\nimport { InheritedValueType, PageView, store } from '@operato/shell'\n\n@customElement('role-management')\nclass RoleManagement extends connect(store)(PageView) {\n static styles = [\n css`\n :host {\n display: flex;\n flex-direction: column;\n background-color: var(--md-sys-color-background);\n padding: var(--spacing-large);\n overflow: auto;\n }\n\n [subtitle] {\n padding: var(--subtitle-padding);\n font: var(--subtitle-font);\n color: var(--subtitle-text-color);\n }\n\n input {\n display: block;\n }\n\n #roles-privileges {\n flex: 1;\n display: flex;\n margin-top: var(--spacing-medium);\n max-width: var(--content-container-max-width);\n flex-direction: row;\n overflow: auto;\n border-top: var(--border-dim-color);\n }\n `\n ]\n\n @property({ type: String }) title: string = ''\n @property({ type: Object }) role: any\n @property({ type: Array }) roles: any[] = []\n @property({ type: Object }) updateRoleObj: any\n\n get context() {\n return {\n title: i18next.t('text.role_management'),\n help: 'auth/roles'\n }\n }\n\n render() {\n const data = {\n roles: this.roles || []\n }\n\n return html`\n <create-role\n @fetch-roles=${async () => {\n this.roles = await this.fetchRoles()\n }}\n ></create-role>\n\n <div subtitle>${i18next.t('text.registered roles')}</div>\n <div id=\"roles-privileges\">\n <quick-find-list\n .data=\"${data}\"\n .openHeaderRenderer=${role => html`\n <role-edit-form .role=\"${role}\" @roleChanged=\"${e => (this.updateRoleObj = e.detail)}\"></role-edit-form>\n `}\n .contentRenderer=\"${(role, _currentTabKey) => html`\n <role-privilege-editor\n .updateRoleObj=${this.updateRoleObj || {}}\n .role=${role}\n @fetch-roles=${async () => {\n this.roles = await this.fetchRoles()\n await this.updateComplete\n this.quickFindList.openByKey(role.id)\n }}\n ></role-privilege-editor>\n `}\"\n ></quick-find-list>\n </div>\n `\n }\n\n @query('quick-find-list') quickFindList!: HTMLElement & { openByKey: (roleId: string) => void }\n\n async pageUpdated(changes, lifecycle, before) {\n if (this.active) {\n this.roles = await this.fetchRoles()\n this.role = this.roles && this.roles[0]\n }\n }\n\n async fetchRoles() {\n const response = await client.query({\n query: gql`\n query roles($sortings: [Sorting!], $inherited: InheritedValueType) {\n roles(sortings: $sortings, inherited: $inherited) {\n items {\n id\n name\n description\n privileges {\n id\n name\n }\n }\n total\n }\n }\n `,\n variables: { \n sortings: [{ name: 'name' }],\n inherited: InheritedValueType.Only\n },\n context: gqlContext()\n })\n\n return response.data.roles.items\n }\n}\n"]}
@@ -183,13 +183,13 @@ UserManagement.styles = [
183
183
  display: flex;
184
184
  flex-direction: column;
185
185
  background-color: var(--md-sys-color-background);
186
- padding: var(--padding-wide);
186
+ padding: var(--spacing-large);
187
187
  overflow: auto;
188
188
  }
189
189
 
190
190
  @media screen and (max-width: 600px) {
191
191
  :host {
192
- padding: var(--padding-narrow);
192
+ padding: var(--spacing-small);
193
193
  }
194
194
  }
195
195
  `
@@ -1 +1 @@
1
- {"version":3,"file":"user-management.js","sourceRoot":"","sources":["../../../client/pages/user/user-management.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\n\nimport '@things-factory/component-ui'\nimport '../../components/invite-user'\nimport '../../components/ownership-transfer-popup'\nimport '../../components/user-role-editor'\nimport '../../components/create-user'\n\nimport gql from 'graphql-tag'\nimport { css, html } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\n\nimport { client, gqlContext } from '@operato/graphql'\nimport { i18next } from '@operato/i18n'\nimport { PageView } from '@operato/shell'\nimport { OxPrompt } from '@operato/popup/ox-prompt.js'\n\n@customElement('user-management')\nclass UserManagement extends PageView {\n static styles = [\n css`\n :host {\n display: flex;\n flex-direction: column;\n background-color: var(--md-sys-color-background);\n padding: var(--padding-wide);\n overflow: auto;\n }\n\n @media screen and (max-width: 600px) {\n :host {\n padding: var(--padding-narrow);\n }\n }\n `\n ]\n\n @property({ type: Array }) domainUsers: any[] = []\n @property({ type: Object }) owner: any\n @property({ type: String }) currentTab: string = ''\n @property({ type: Boolean }) passwordResettable: boolean = false\n @property({ type: Boolean }) userCreatable: boolean = false\n\n @query('#user-list') userListElement!: HTMLElement & { close: () => void }\n\n get context() {\n return {\n title: i18next.t('text.user management'),\n help: 'auth/users'\n }\n }\n\n render() {\n const groupingUser = (this.domainUsers || []).reduce(\n (groupingUser, user) => {\n const userType = user.userType\n if (!groupingUser[userType]) {\n groupingUser[userType] = []\n }\n user.activated = user.status === 'activated'\n groupingUser[userType].push(user)\n\n return groupingUser\n },\n {\n admin: [],\n user: [],\n application: [],\n appliance: []\n }\n )\n\n const USER_TYPES = {\n USER: i18next.t('label.user'),\n APPLICATION: i18next.t('label.application'),\n APPLIANCE: i18next.t('text.appliance')\n }\n\n const userSet = {\n [USER_TYPES.USER]: [...groupingUser.user, ...groupingUser.admin],\n [USER_TYPES.APPLICATION]: groupingUser.application,\n [USER_TYPES.APPLIANCE]: groupingUser.appliance\n }\n\n return html`\n ${this.userCreatable\n ? html`<create-user\n @create-user=${async event => {\n const user = event.detail\n user.userType = 'user'\n\n await this.createUser(user)\n }}\n ></create-user>`\n : ''}\n <quick-find-list\n id=\"user-list\"\n .data=${userSet}\n @tabChanged=${e => (this.currentTab = e.detail.currentTabKey)}\n .headerRenderer=${user => {\n return html`\n ${!user.activated\n ? html`\n <md-icon>do_disturb</md-icon>\n ${user.name}\n `\n : html` ${user.owner ? html` <md-icon>supervisor_account</md-icon> ` : ''} ${user.name} `}\n `\n }}\n .contentRenderer=${user =>\n html` <user-role-editor\n .user=${user}\n .domainOwner=${this.owner}\n .activate=${user.activated}\n @userUpdated=${this.refreshUsers.bind(this)}\n @ownershipTransferred=${this.refreshUsers.bind(this)}\n .passwordResettable=${this.passwordResettable}\n ></user-role-editor>`}\n ></quick-find-list>\n\n ${this.currentTab === USER_TYPES.USER\n ? html`<invite-user @invitationCompleted=${this.refreshUsers.bind(this)}></invite-user>`\n : ''}\n `\n }\n\n async pageUpdated(changes, lifecycle, before) {\n if (this.active) {\n this.refreshUsers()\n this.checkPasswordResettable()\n this.checkUserCreatable()\n }\n }\n\n async refreshUsers() {\n const domainUsersResp = await client.query({\n query: gql`\n query {\n users {\n items {\n id\n name\n email\n userType\n status\n owner\n }\n }\n }\n `,\n context: gqlContext()\n })\n\n if (!domainUsersResp.errors?.length) {\n this.domainUsers = domainUsersResp.data.users.items || []\n this.owner = this.domainUsers.filter(user => user.owner)[0] || {}\n this.userListElement?.close()\n }\n }\n\n async checkPasswordResettable() {\n const response = await client.query({\n query: gql`\n query {\n checkResettablePasswordToDefault\n }\n `\n })\n\n if (!response.errors) {\n this.passwordResettable = response.data.checkResettablePasswordToDefault\n }\n }\n\n async checkUserCreatable() {\n const response = await client.query({\n query: gql`\n query {\n checkDefaultPassword\n }\n `\n })\n\n if (!response.errors) {\n this.userCreatable = response.data.checkDefaultPassword\n }\n }\n\n async createUser(user) {\n if (\n await OxPrompt.open({\n title: i18next.t('text.are_you_sure'),\n text: i18next.t('text.are_you_sure_to_x_user', { x: i18next.t('button.create') }),\n confirmButton: { text: i18next.t('button.confirm') },\n cancelButton: { text: i18next.t('button.cancel') }\n })\n ) {\n const response = await client.mutate({\n mutation: gql`\n mutation createUser($user: NewUser!) {\n createUser(user: $user) {\n name\n }\n }\n `,\n variables: { user },\n context: gqlContext()\n })\n\n if (!response.errors) {\n await OxPrompt.open({\n title: i18next.t('text.completed'),\n confirmButton: { text: i18next.t('button.confirm') }\n })\n\n await this.refreshUsers()\n }\n }\n }\n\n showToast(message) {\n document.dispatchEvent(new CustomEvent('notify', { detail: { message, option: { timer: 1000 } } }))\n }\n}\n"]}
1
+ {"version":3,"file":"user-management.js","sourceRoot":"","sources":["../../../client/pages/user/user-management.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\n\nimport '@things-factory/component-ui'\nimport '../../components/invite-user'\nimport '../../components/ownership-transfer-popup'\nimport '../../components/user-role-editor'\nimport '../../components/create-user'\n\nimport gql from 'graphql-tag'\nimport { css, html } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\n\nimport { client, gqlContext } from '@operato/graphql'\nimport { i18next } from '@operato/i18n'\nimport { PageView } from '@operato/shell'\nimport { OxPrompt } from '@operato/popup/ox-prompt.js'\n\n@customElement('user-management')\nclass UserManagement extends PageView {\n static styles = [\n css`\n :host {\n display: flex;\n flex-direction: column;\n background-color: var(--md-sys-color-background);\n padding: var(--spacing-large);\n overflow: auto;\n }\n\n @media screen and (max-width: 600px) {\n :host {\n padding: var(--spacing-small);\n }\n }\n `\n ]\n\n @property({ type: Array }) domainUsers: any[] = []\n @property({ type: Object }) owner: any\n @property({ type: String }) currentTab: string = ''\n @property({ type: Boolean }) passwordResettable: boolean = false\n @property({ type: Boolean }) userCreatable: boolean = false\n\n @query('#user-list') userListElement!: HTMLElement & { close: () => void }\n\n get context() {\n return {\n title: i18next.t('text.user management'),\n help: 'auth/users'\n }\n }\n\n render() {\n const groupingUser = (this.domainUsers || []).reduce(\n (groupingUser, user) => {\n const userType = user.userType\n if (!groupingUser[userType]) {\n groupingUser[userType] = []\n }\n user.activated = user.status === 'activated'\n groupingUser[userType].push(user)\n\n return groupingUser\n },\n {\n admin: [],\n user: [],\n application: [],\n appliance: []\n }\n )\n\n const USER_TYPES = {\n USER: i18next.t('label.user'),\n APPLICATION: i18next.t('label.application'),\n APPLIANCE: i18next.t('text.appliance')\n }\n\n const userSet = {\n [USER_TYPES.USER]: [...groupingUser.user, ...groupingUser.admin],\n [USER_TYPES.APPLICATION]: groupingUser.application,\n [USER_TYPES.APPLIANCE]: groupingUser.appliance\n }\n\n return html`\n ${this.userCreatable\n ? html`<create-user\n @create-user=${async event => {\n const user = event.detail\n user.userType = 'user'\n\n await this.createUser(user)\n }}\n ></create-user>`\n : ''}\n <quick-find-list\n id=\"user-list\"\n .data=${userSet}\n @tabChanged=${e => (this.currentTab = e.detail.currentTabKey)}\n .headerRenderer=${user => {\n return html`\n ${!user.activated\n ? html`\n <md-icon>do_disturb</md-icon>\n ${user.name}\n `\n : html` ${user.owner ? html` <md-icon>supervisor_account</md-icon> ` : ''} ${user.name} `}\n `\n }}\n .contentRenderer=${user =>\n html` <user-role-editor\n .user=${user}\n .domainOwner=${this.owner}\n .activate=${user.activated}\n @userUpdated=${this.refreshUsers.bind(this)}\n @ownershipTransferred=${this.refreshUsers.bind(this)}\n .passwordResettable=${this.passwordResettable}\n ></user-role-editor>`}\n ></quick-find-list>\n\n ${this.currentTab === USER_TYPES.USER\n ? html`<invite-user @invitationCompleted=${this.refreshUsers.bind(this)}></invite-user>`\n : ''}\n `\n }\n\n async pageUpdated(changes, lifecycle, before) {\n if (this.active) {\n this.refreshUsers()\n this.checkPasswordResettable()\n this.checkUserCreatable()\n }\n }\n\n async refreshUsers() {\n const domainUsersResp = await client.query({\n query: gql`\n query {\n users {\n items {\n id\n name\n email\n userType\n status\n owner\n }\n }\n }\n `,\n context: gqlContext()\n })\n\n if (!domainUsersResp.errors?.length) {\n this.domainUsers = domainUsersResp.data.users.items || []\n this.owner = this.domainUsers.filter(user => user.owner)[0] || {}\n this.userListElement?.close()\n }\n }\n\n async checkPasswordResettable() {\n const response = await client.query({\n query: gql`\n query {\n checkResettablePasswordToDefault\n }\n `\n })\n\n if (!response.errors) {\n this.passwordResettable = response.data.checkResettablePasswordToDefault\n }\n }\n\n async checkUserCreatable() {\n const response = await client.query({\n query: gql`\n query {\n checkDefaultPassword\n }\n `\n })\n\n if (!response.errors) {\n this.userCreatable = response.data.checkDefaultPassword\n }\n }\n\n async createUser(user) {\n if (\n await OxPrompt.open({\n title: i18next.t('text.are_you_sure'),\n text: i18next.t('text.are_you_sure_to_x_user', { x: i18next.t('button.create') }),\n confirmButton: { text: i18next.t('button.confirm') },\n cancelButton: { text: i18next.t('button.cancel') }\n })\n ) {\n const response = await client.mutate({\n mutation: gql`\n mutation createUser($user: NewUser!) {\n createUser(user: $user) {\n name\n }\n }\n `,\n variables: { user },\n context: gqlContext()\n })\n\n if (!response.errors) {\n await OxPrompt.open({\n title: i18next.t('text.completed'),\n confirmButton: { text: i18next.t('button.confirm') }\n })\n\n await this.refreshUsers()\n }\n }\n }\n\n showToast(message) {\n document.dispatchEvent(new CustomEvent('notify', { detail: { message, option: { timer: 1000 } } }))\n }\n}\n"]}