@things-factory/setting-ui 7.0.0-alpha.8 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client/bootstrap.ts +8 -1
- package/client/components/partner-selector.ts +7 -10
- package/client/index.ts +1 -0
- package/client/pages/partner-setting-list.ts +8 -11
- package/client/pages/setting.ts +1 -1
- package/client/set-theme-mode.ts +50 -0
- package/client/setting-lets/secure-iplist-setting-let.ts +22 -16
- package/client/setting-lets/theme-mode-setting-let.ts +80 -0
- package/client/themes/setting-theme.css +5 -5
- package/dist-client/bootstrap.d.ts +1 -1
- package/dist-client/bootstrap.js +7 -1
- package/dist-client/bootstrap.js.map +1 -1
- package/dist-client/components/partner-selector.d.ts +1 -1
- package/dist-client/components/partner-selector.js +7 -10
- package/dist-client/components/partner-selector.js.map +1 -1
- package/dist-client/fetch-setting-value.js.map +1 -1
- package/dist-client/index.d.ts +1 -0
- package/dist-client/index.js +1 -0
- package/dist-client/index.js.map +1 -1
- package/dist-client/pages/partner-setting-list.d.ts +2 -7
- package/dist-client/pages/partner-setting-list.js +4 -9
- package/dist-client/pages/partner-setting-list.js.map +1 -1
- package/dist-client/pages/setting-list.js.map +1 -1
- package/dist-client/pages/setting.js +1 -1
- package/dist-client/pages/setting.js.map +1 -1
- package/dist-client/route.js.map +1 -1
- package/dist-client/set-theme-mode.d.ts +1 -0
- package/dist-client/set-theme-mode.js +47 -0
- package/dist-client/set-theme-mode.js.map +1 -0
- package/dist-client/setting-lets/domain-switch-let.js.map +1 -1
- package/dist-client/setting-lets/secure-iplist-setting-let.d.ts +1 -2
- package/dist-client/setting-lets/secure-iplist-setting-let.js +22 -16
- package/dist-client/setting-lets/secure-iplist-setting-let.js.map +1 -1
- package/dist-client/setting-lets/theme-mode-setting-let.d.ts +12 -0
- package/dist-client/setting-lets/theme-mode-setting-let.js +84 -0
- package/dist-client/setting-lets/theme-mode-setting-let.js.map +1 -0
- package/dist-client/themes/setting-theme.css +5 -5
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/index.d.ts +0 -0
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +16 -16
- package/things-factory.config.js +2 -0
- package/translations/en.json +6 -2
- package/translations/ja.json +6 -2
- package/translations/ko.json +5 -1
- package/translations/ms.json +9 -5
- package/translations/zh.json +5 -1
package/client/bootstrap.ts
CHANGED
|
@@ -1 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
import { clientSettingStore } from '@operato/shell'
|
|
2
|
+
import { setThemeMode } from './set-theme-mode.js'
|
|
3
|
+
|
|
4
|
+
export default async function bootstrap() {
|
|
5
|
+
const themeMode = ((await clientSettingStore.get('theme'))?.value || {}).mode || 'light'
|
|
6
|
+
|
|
7
|
+
setThemeMode(themeMode)
|
|
8
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import '@material/
|
|
1
|
+
import '@material/web/icon/icon.js'
|
|
2
2
|
import '@things-factory/form-ui'
|
|
3
3
|
import '@operato/data-grist'
|
|
4
4
|
|
|
@@ -10,24 +10,19 @@ import { CommonGristStyles } from '@operato/styles'
|
|
|
10
10
|
import gql from 'graphql-tag'
|
|
11
11
|
import { css, html, LitElement } from 'lit'
|
|
12
12
|
import { customElement, query, state } from 'lit/decorators.js'
|
|
13
|
+
import { ButtonContainerStyles } from '@operato/styles'
|
|
13
14
|
|
|
14
15
|
@customElement('partner-selector')
|
|
15
16
|
class PartnerSelector extends LitElement {
|
|
16
17
|
static styles = [
|
|
18
|
+
ButtonContainerStyles,
|
|
17
19
|
CommonGristStyles,
|
|
18
20
|
css`
|
|
19
21
|
:host {
|
|
20
22
|
display: flex;
|
|
21
23
|
flex-direction: column;
|
|
22
24
|
overflow: hidden;
|
|
23
|
-
background-color:
|
|
24
|
-
}
|
|
25
|
-
.button-container {
|
|
26
|
-
padding: var(--button-container-padding);
|
|
27
|
-
margin: var(--button-container-margin);
|
|
28
|
-
text-align: var(--button-container-align);
|
|
29
|
-
background-color: var(--button-container-background);
|
|
30
|
-
height: var(--button-container-height);
|
|
25
|
+
background-color: var(--md-sys-color-surface);
|
|
31
26
|
}
|
|
32
27
|
`
|
|
33
28
|
]
|
|
@@ -49,7 +44,9 @@ class PartnerSelector extends LitElement {
|
|
|
49
44
|
</ox-grist>
|
|
50
45
|
|
|
51
46
|
<div class="button-container">
|
|
52
|
-
<
|
|
47
|
+
<button @click="${this.select.bind(this)}">
|
|
48
|
+
<md-icon>select_check_box</md-icon>${i18next.t('button.select')}
|
|
49
|
+
</button>
|
|
53
50
|
</div>
|
|
54
51
|
`
|
|
55
52
|
}
|
package/client/index.ts
CHANGED
|
@@ -3,7 +3,7 @@ import '../components/partner-selector'
|
|
|
3
3
|
|
|
4
4
|
import gql from 'graphql-tag'
|
|
5
5
|
import { css, html } from 'lit'
|
|
6
|
-
import { customElement,
|
|
6
|
+
import { customElement, query, state } from 'lit/decorators.js'
|
|
7
7
|
import { connect } from 'pwa-helpers/connect-mixin'
|
|
8
8
|
|
|
9
9
|
import { openPopup } from '@operato/layout'
|
|
@@ -12,11 +12,9 @@ import { PageView, store } from '@operato/shell'
|
|
|
12
12
|
import { client, gqlContext } from '@operato/graphql'
|
|
13
13
|
import { ScrollbarStyles, CommonButtonStyles, CommonGristStyles } from '@operato/styles'
|
|
14
14
|
import { OxPrompt } from '@operato/popup/ox-prompt.js'
|
|
15
|
-
import { getEditor, getRenderer } from '@operato/data-grist'
|
|
15
|
+
import { FetchOption, getEditor, getRenderer } from '@operato/data-grist'
|
|
16
16
|
import { isMobileDevice } from '@operato/utils'
|
|
17
17
|
|
|
18
|
-
import { MultiColumnFormStyles } from '@things-factory/form-ui'
|
|
19
|
-
|
|
20
18
|
@customElement('partner-setting-list')
|
|
21
19
|
export class PartnerSettingList extends connect(store)(localize(i18next)(PageView)) {
|
|
22
20
|
static styles = [
|
|
@@ -34,15 +32,15 @@ export class PartnerSettingList extends connect(store)(localize(i18next)(PageVie
|
|
|
34
32
|
}
|
|
35
33
|
label {
|
|
36
34
|
font: var(--label-font);
|
|
37
|
-
color: var(--label-color);
|
|
35
|
+
color: var(--label-color, var(--md-sys-color-on-surface));
|
|
38
36
|
text-transform: var(--label-text-transform);
|
|
39
37
|
}
|
|
40
38
|
input {
|
|
41
|
-
border: var(--border-
|
|
39
|
+
border: var(--border-dim-color);
|
|
42
40
|
border-radius: var(--border-radius);
|
|
43
41
|
margin: var(--input-margin);
|
|
44
42
|
padding: var(--input-padding);
|
|
45
|
-
background-color: var(--
|
|
43
|
+
background-color: var(--md-sys-color-surface);
|
|
46
44
|
font: var(--input-font);
|
|
47
45
|
}
|
|
48
46
|
`
|
|
@@ -50,8 +48,7 @@ export class PartnerSettingList extends connect(store)(localize(i18next)(PageVie
|
|
|
50
48
|
|
|
51
49
|
@state() private config: any
|
|
52
50
|
@state() private partnerDomain: any
|
|
53
|
-
@state() private mode:
|
|
54
|
-
@state() private refreshHandlers: any[] = []
|
|
51
|
+
@state() private mode: 'GRID' | 'LIST' | 'CARD' = isMobileDevice() ? 'LIST' : 'GRID'
|
|
55
52
|
|
|
56
53
|
@query('ox-grist') private dataGrist: any
|
|
57
54
|
|
|
@@ -65,7 +62,7 @@ export class PartnerSettingList extends connect(store)(localize(i18next)(PageVie
|
|
|
65
62
|
name="partnerDomain"
|
|
66
63
|
value="${this.partnerDomain?.name ? this.partnerDomain.name : ''}"
|
|
67
64
|
@click="${this.openPartnerSelector.bind(this)}"
|
|
68
|
-
placeholder=${i18next.t('text.please_choose_partner') || ''}
|
|
65
|
+
placeholder=${String(i18next.t('text.please_choose_partner') || '')}
|
|
69
66
|
/>
|
|
70
67
|
</fieldset>
|
|
71
68
|
</form>
|
|
@@ -202,7 +199,7 @@ export class PartnerSettingList extends connect(store)(localize(i18next)(PageVie
|
|
|
202
199
|
}
|
|
203
200
|
}
|
|
204
201
|
|
|
205
|
-
async fetchHandler({ filters, page, limit, sorters = [] }) {
|
|
202
|
+
async fetchHandler({ filters, page, limit, sorters = [] }: FetchOption) {
|
|
206
203
|
if (!this.partnerDomain) return { total: 0, records: [] }
|
|
207
204
|
|
|
208
205
|
const pagination = { page, limit }
|
package/client/pages/setting.ts
CHANGED
|
@@ -11,7 +11,7 @@ export class SettingPage extends connect(store)(localize(i18next)(PageView)) {
|
|
|
11
11
|
css`
|
|
12
12
|
:host {
|
|
13
13
|
overflow-y: auto;
|
|
14
|
-
background-color: var(--
|
|
14
|
+
background-color: var(--md-sys-color-background);
|
|
15
15
|
}
|
|
16
16
|
div {
|
|
17
17
|
margin: var(--setting-icon-margin);
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { clientSettingStore } from '@operato/shell'
|
|
2
|
+
|
|
3
|
+
var prefersColorSchemeMedia
|
|
4
|
+
|
|
5
|
+
function getPrefersColorSchemeMedia() {
|
|
6
|
+
if (!prefersColorSchemeMedia) {
|
|
7
|
+
prefersColorSchemeMedia = window.matchMedia('(prefers-color-scheme: dark)')
|
|
8
|
+
}
|
|
9
|
+
return prefersColorSchemeMedia
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
async function onPreferColorSchemeChanged() {
|
|
13
|
+
const themeMode = ((await clientSettingStore.get('theme'))?.value || {}).mode || 'light'
|
|
14
|
+
|
|
15
|
+
if (themeMode !== 'auto') {
|
|
16
|
+
getPrefersColorSchemeMedia().removeEventListener('change', onPreferColorSchemeChanged)
|
|
17
|
+
|
|
18
|
+
return
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
|
22
|
+
document.body.classList.add('dark')
|
|
23
|
+
document.body.classList.remove('light')
|
|
24
|
+
} else {
|
|
25
|
+
document.body.classList.add('light')
|
|
26
|
+
document.body.classList.remove('dark')
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function setThemeMode(mode) {
|
|
31
|
+
getPrefersColorSchemeMedia().removeEventListener('change', onPreferColorSchemeChanged)
|
|
32
|
+
|
|
33
|
+
if (mode === 'dark') {
|
|
34
|
+
document.body.classList.add('dark')
|
|
35
|
+
document.body.classList.remove('light')
|
|
36
|
+
} else if (mode === 'light') {
|
|
37
|
+
document.body.classList.add('light')
|
|
38
|
+
document.body.classList.remove('dark')
|
|
39
|
+
} else {
|
|
40
|
+
if (getPrefersColorSchemeMedia().matches) {
|
|
41
|
+
document.body.classList.add('dark')
|
|
42
|
+
document.body.classList.remove('light')
|
|
43
|
+
} else {
|
|
44
|
+
document.body.classList.add('light')
|
|
45
|
+
document.body.classList.remove('dark')
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
getPrefersColorSchemeMedia().addEventListener('change', onPreferColorSchemeChanged)
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import '@material/
|
|
2
|
-
import '@material/mwc-textfield'
|
|
1
|
+
import '@material/web/textfield/filled-text-field.js'
|
|
3
2
|
import '@things-factory/setting-base'
|
|
4
3
|
import '@operato/i18n/ox-i18n.js'
|
|
5
4
|
|
|
@@ -22,14 +21,14 @@ export class SecureIPListSettingLet extends LitElement {
|
|
|
22
21
|
|
|
23
22
|
ul {
|
|
24
23
|
flex: 1;
|
|
25
|
-
background-color: var(--
|
|
24
|
+
background-color: var(--md-sys-color-surface);
|
|
26
25
|
overflow: auto;
|
|
27
26
|
display: grid;
|
|
28
27
|
grid-template-columns: 1fr 1fr;
|
|
29
28
|
margin: 0;
|
|
30
|
-
padding: var(--
|
|
29
|
+
padding: var(--spacing-medium);
|
|
31
30
|
list-style: none;
|
|
32
|
-
border: 1px dashed
|
|
31
|
+
border: 1px dashed var(--md-sys-color-outline);
|
|
33
32
|
border-width: 1px 0;
|
|
34
33
|
}
|
|
35
34
|
|
|
@@ -58,9 +57,9 @@ export class SecureIPListSettingLet extends LitElement {
|
|
|
58
57
|
description: string
|
|
59
58
|
}[] = []
|
|
60
59
|
|
|
61
|
-
@query('
|
|
62
|
-
@query('
|
|
63
|
-
@query('
|
|
60
|
+
@query('[name="whitelist"]') whitelist
|
|
61
|
+
@query('[name="blacklist"]') blacklist
|
|
62
|
+
@query('[name="protectedlist"]') protectedlist
|
|
64
63
|
@queryAll('ul[privileges] input[type=checkbox]:checked') protectedPrivileges
|
|
65
64
|
|
|
66
65
|
render() {
|
|
@@ -73,30 +72,37 @@ export class SecureIPListSettingLet extends LitElement {
|
|
|
73
72
|
>
|
|
74
73
|
|
|
75
74
|
<div slot="content" @change=${() => this.onSave()}>
|
|
76
|
-
<
|
|
75
|
+
<md-filled-text-field
|
|
77
76
|
type="text"
|
|
78
77
|
name="whitelist"
|
|
79
78
|
.label=${String(i18next.t('label.whitelist'))}
|
|
80
79
|
icon="health_and_safety"
|
|
81
80
|
value=${whitelist.join(', ')}
|
|
81
|
+
supporting-text=${String(i18next.t('text.supporting text for whitelist'))}
|
|
82
82
|
hidden
|
|
83
|
-
|
|
83
|
+
>
|
|
84
|
+
<md-icon slot="leading-icon">health_and_safety</md-icon>
|
|
85
|
+
</md-filled-text-field>
|
|
84
86
|
|
|
85
|
-
<
|
|
87
|
+
<md-filled-text-field
|
|
86
88
|
type="text"
|
|
87
89
|
name="blacklist"
|
|
88
90
|
.label=${String(i18next.t('label.blacklist'))}
|
|
89
|
-
icon="block"
|
|
90
91
|
value=${blacklist.join(', ')}
|
|
91
|
-
|
|
92
|
+
supporting-text=${String(i18next.t('text.supporting text for blacklist'))}
|
|
93
|
+
>
|
|
94
|
+
<md-icon slot="leading-icon">block</md-icon>
|
|
95
|
+
</md-filled-text-field>
|
|
92
96
|
|
|
93
|
-
<
|
|
97
|
+
<md-filled-text-field
|
|
94
98
|
type="text"
|
|
95
99
|
name="protectedlist"
|
|
96
100
|
.label=${String(i18next.t('label.protectedlist'))}
|
|
97
|
-
icon="security"
|
|
98
101
|
value=${protectedlist.join(', ')}
|
|
99
|
-
|
|
102
|
+
supporting-text=${String(i18next.t('text.supporting text for protected ip-list'))}
|
|
103
|
+
>
|
|
104
|
+
<md-icon slot="leading-icon">security</md-icon>
|
|
105
|
+
</md-filled-text-field>
|
|
100
106
|
|
|
101
107
|
<div>
|
|
102
108
|
<h3><ox-i18n msgid="title.protected-privileges"></ox-i18n></h3>
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import '@operato/i18n/ox-i18n.js'
|
|
2
|
+
import '@material/web/radio/radio.js'
|
|
3
|
+
|
|
4
|
+
import { css, html, LitElement } from 'lit'
|
|
5
|
+
import { customElement, property } from 'lit/decorators.js'
|
|
6
|
+
|
|
7
|
+
import { i18next, localize } from '@operato/i18n'
|
|
8
|
+
import { clientSettingStore } from '@operato/shell'
|
|
9
|
+
import { MdRadio } from '@material/web/radio/radio.js'
|
|
10
|
+
import { setThemeMode } from '../set-theme-mode.js'
|
|
11
|
+
|
|
12
|
+
@customElement('theme-mode-setting-let')
|
|
13
|
+
export class ThemeModeSettingLet extends localize(i18next)(LitElement) {
|
|
14
|
+
static styles = [
|
|
15
|
+
css`
|
|
16
|
+
label {
|
|
17
|
+
display: flex;
|
|
18
|
+
gap: 10px;
|
|
19
|
+
align-items: center;
|
|
20
|
+
|
|
21
|
+
font: var(--label-font);
|
|
22
|
+
color: var(--md-sys-color-on-surface);
|
|
23
|
+
text-transform: var(--label-text-transform);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
div[slot='content'] {
|
|
27
|
+
display: flex;
|
|
28
|
+
gap: 10px;
|
|
29
|
+
}
|
|
30
|
+
`
|
|
31
|
+
]
|
|
32
|
+
|
|
33
|
+
@property({ type: String, attribute: 'theme-mode' }) themeMode: 'dark' | 'light' | 'auto' = 'light'
|
|
34
|
+
|
|
35
|
+
render() {
|
|
36
|
+
const themeMode = this.themeMode
|
|
37
|
+
|
|
38
|
+
return html`
|
|
39
|
+
<setting-let>
|
|
40
|
+
<ox-i18n slot="title" msgid="title.theme setting"></ox-i18n>
|
|
41
|
+
|
|
42
|
+
<div slot="content" @change=${(e: Event) => this.onChangeThemeMode(e)}>
|
|
43
|
+
<md-radio id="dark-mode" name="theme-mode" value="dark" ?checked=${themeMode == 'dark'}></md-radio>
|
|
44
|
+
<label for="dark-mode">dark mode</label>
|
|
45
|
+
|
|
46
|
+
<md-radio id="light-mode" name="theme-mode" value="light" ?checked=${themeMode == 'light'}></md-radio>
|
|
47
|
+
<label for="light-mode">light mode</label>
|
|
48
|
+
|
|
49
|
+
<md-radio id="auto-mode" name="theme-mode" value="auto" ?checked=${themeMode == 'auto'}></md-radio>
|
|
50
|
+
<label for="auto-mode">auto mode</label>
|
|
51
|
+
</div>
|
|
52
|
+
</setting-let>
|
|
53
|
+
`
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
async firstUpdated() {
|
|
57
|
+
this.themeMode = ((await clientSettingStore.get('theme'))?.value || {}).mode || 'light'
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
async onChangeThemeMode(e: Event) {
|
|
61
|
+
const target = e.target as MdRadio
|
|
62
|
+
const value = target.value
|
|
63
|
+
const mode = (this.querySelector('md-radio[checked]') as MdRadio)?.value || value
|
|
64
|
+
|
|
65
|
+
if (mode) {
|
|
66
|
+
try {
|
|
67
|
+
await clientSettingStore.put({
|
|
68
|
+
key: 'theme',
|
|
69
|
+
value: {
|
|
70
|
+
mode
|
|
71
|
+
}
|
|
72
|
+
})
|
|
73
|
+
|
|
74
|
+
setThemeMode(mode)
|
|
75
|
+
} catch (e) {
|
|
76
|
+
console.error(e)
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
body {
|
|
2
|
-
--setting-background: var(--
|
|
2
|
+
--setting-background: var(--md-sys-color-background);
|
|
3
3
|
|
|
4
|
-
--setting-let-background: var(--
|
|
4
|
+
--setting-let-background: var(--md-sys-color-on-primary);
|
|
5
5
|
--setting-let-margin: var(--margin-wide);
|
|
6
6
|
--setting-let-border-radius: var(--border-radius);
|
|
7
|
-
--setting-let-border: var(--border-
|
|
7
|
+
--setting-let-border: var(--border-dim-color);
|
|
8
8
|
|
|
9
9
|
--setting-title-font: var(--subtitle-font);
|
|
10
10
|
--setting-title-color: var(--subtitle-text-color);
|
|
11
11
|
|
|
12
12
|
--setting-content-padding: var(--padding-wide);
|
|
13
13
|
--setting-content-font: normal 0.9em var(--theme-font);
|
|
14
|
-
--setting-content-color: var(--
|
|
14
|
+
--setting-content-color: var(--md-sys-color-secondary);
|
|
15
15
|
|
|
16
16
|
--setting-info-content-padding: 10px 15px;
|
|
17
17
|
--setting-info-background-color: #f0f0f0;
|
|
18
18
|
--setting-info-font: normal 14px/14px var(--theme-font);
|
|
19
19
|
--setting-info-color: #666;
|
|
20
|
-
--setting-info-appname-color: var(--
|
|
20
|
+
--setting-info-appname-color: var(--md-sys-color-primary);
|
|
21
21
|
|
|
22
22
|
--setting-icon-height: 170px;
|
|
23
23
|
--setting-icon-margin: 40px 0 5px 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export default function bootstrap(): void
|
|
1
|
+
export default function bootstrap(): Promise<void>;
|
package/dist-client/bootstrap.js
CHANGED
|
@@ -1,2 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
import { clientSettingStore } from '@operato/shell';
|
|
2
|
+
import { setThemeMode } from './set-theme-mode.js';
|
|
3
|
+
export default async function bootstrap() {
|
|
4
|
+
var _a;
|
|
5
|
+
const themeMode = (((_a = (await clientSettingStore.get('theme'))) === null || _a === void 0 ? void 0 : _a.value) || {}).mode || 'light';
|
|
6
|
+
setThemeMode(themeMode);
|
|
7
|
+
}
|
|
2
8
|
//# sourceMappingURL=bootstrap.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../client/bootstrap.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,SAAS,KAAI,CAAC","sourcesContent":["
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../client/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAElD,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,SAAS;;IACrC,MAAM,SAAS,GAAG,CAAC,CAAA,MAAA,CAAC,MAAM,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,0CAAE,KAAK,KAAI,EAAE,CAAC,CAAC,IAAI,IAAI,OAAO,CAAA;IAExF,YAAY,CAAC,SAAS,CAAC,CAAA;AACzB,CAAC","sourcesContent":["import { clientSettingStore } from '@operato/shell'\nimport { setThemeMode } from './set-theme-mode.js'\n\nexport default async function bootstrap() {\n const themeMode = ((await clientSettingStore.get('theme'))?.value || {}).mode || 'light'\n\n setThemeMode(themeMode)\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import '@material/
|
|
2
|
+
import '@material/web/icon/icon.js';
|
|
3
3
|
import '@things-factory/form-ui';
|
|
4
4
|
import '@operato/data-grist';
|
|
5
5
|
import { i18next } from '@operato/i18n';
|
|
@@ -9,6 +9,7 @@ import { CommonGristStyles } from '@operato/styles';
|
|
|
9
9
|
import gql from 'graphql-tag';
|
|
10
10
|
import { css, html, LitElement } from 'lit';
|
|
11
11
|
import { customElement, query, state } from 'lit/decorators.js';
|
|
12
|
+
import { ButtonContainerStyles } from '@operato/styles';
|
|
12
13
|
let PartnerSelector = class PartnerSelector extends LitElement {
|
|
13
14
|
constructor() {
|
|
14
15
|
super(...arguments);
|
|
@@ -25,7 +26,9 @@ let PartnerSelector = class PartnerSelector extends LitElement {
|
|
|
25
26
|
</ox-grist>
|
|
26
27
|
|
|
27
28
|
<div class="button-container">
|
|
28
|
-
<
|
|
29
|
+
<button @click="${this.select.bind(this)}">
|
|
30
|
+
<md-icon>select_check_box</md-icon>${i18next.t('button.select')}
|
|
31
|
+
</button>
|
|
29
32
|
</div>
|
|
30
33
|
`;
|
|
31
34
|
}
|
|
@@ -97,20 +100,14 @@ let PartnerSelector = class PartnerSelector extends LitElement {
|
|
|
97
100
|
}
|
|
98
101
|
};
|
|
99
102
|
PartnerSelector.styles = [
|
|
103
|
+
ButtonContainerStyles,
|
|
100
104
|
CommonGristStyles,
|
|
101
105
|
css `
|
|
102
106
|
:host {
|
|
103
107
|
display: flex;
|
|
104
108
|
flex-direction: column;
|
|
105
109
|
overflow: hidden;
|
|
106
|
-
background-color:
|
|
107
|
-
}
|
|
108
|
-
.button-container {
|
|
109
|
-
padding: var(--button-container-padding);
|
|
110
|
-
margin: var(--button-container-margin);
|
|
111
|
-
text-align: var(--button-container-align);
|
|
112
|
-
background-color: var(--button-container-background);
|
|
113
|
-
height: var(--button-container-height);
|
|
110
|
+
background-color: var(--md-sys-color-surface);
|
|
114
111
|
}
|
|
115
112
|
`
|
|
116
113
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"partner-selector.js","sourceRoot":"","sources":["../../client/components/partner-selector.ts"],"names":[],"mappings":";AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"partner-selector.js","sourceRoot":"","sources":["../../client/components/partner-selector.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport '@things-factory/form-ui'\nimport '@operato/data-grist'\n\nimport { i18next } from '@operato/i18n'\nimport { client, gqlContext } from '@operato/graphql'\nimport { isMobileDevice } from '@operato/utils'\nimport { CommonGristStyles } from '@operato/styles'\n\nimport gql from 'graphql-tag'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, query, state } from 'lit/decorators.js'\nimport { ButtonContainerStyles } from '@operato/styles'\n\n@customElement('partner-selector')\nclass PartnerSelector extends LitElement {\n static styles = [\n ButtonContainerStyles,\n CommonGristStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n background-color: var(--md-sys-color-surface);\n }\n `\n ]\n\n @state() private config: any\n @state() private data: any\n @state() private mode: string = isMobileDevice() ? 'LIST' : 'GRID'\n\n @query('ox-grist') private dataGrist: any\n\n render() {\n return html`\n <ox-grist .mode=${this.mode} auto-fetch .config=${this.config} .fetchHandler=${this.fetchHandler.bind(this)}>\n <div slot=\"headroom\">\n <div id=\"filters\">\n <ox-filters-form></ox-filters-form>\n </div>\n </div>\n </ox-grist>\n\n <div class=\"button-container\">\n <button @click=\"${this.select.bind(this)}\">\n <md-icon>select_check_box</md-icon>${i18next.t('button.select')}\n </button>\n </div>\n `\n }\n\n firstUpdated() {\n this.config = {\n list: { fields: ['name', 'description'] },\n rows: { selectable: { multiple: true }, appendable: false, handlers: { click: 'select-row-toggle' } },\n columns: [\n { type: 'gutter', gutterName: 'sequence' },\n { type: 'gutter', gutterName: 'row-selector', multiple: false },\n {\n type: 'string',\n name: 'name',\n header: i18next.t('field.name'),\n record: { editable: false, align: 'left' },\n sortable: true,\n filter: 'search',\n width: 100\n },\n {\n type: 'string',\n name: 'description',\n header: i18next.t('field.description'),\n record: { editable: false, align: 'left' },\n sortable: true,\n filter: 'search',\n width: 200\n }\n ]\n }\n }\n\n async fetchHandler({ filters, page, limit, sorters = [] }) {\n const pagination = { page, limit }\n const sortings = sorters\n\n const response = await client.query({\n query: gql`\n query searchCustomers($filters: [Filter!]!, $pagination: Pagination!, $sortings: [Sorting!]!) {\n searchCustomers(filters: $filters, pagination: $pagination, sortings: $sortings) {\n items {\n id\n name\n description\n }\n total\n }\n }\n `,\n variables: { filters, pagination, sortings },\n context: gqlContext()\n })\n\n return {\n records: response.data.searchCustomers.items || [],\n total: response.data.searchCustomers.total || 0\n }\n }\n\n select() {\n const selectedItems = this.dataGrist.selected\n if (!selectedItems.length) {\n this.showToast(i18next.t('text.nothing_selected'))\n return\n }\n\n history.back()\n\n this.dispatchEvent(\n new CustomEvent('select', {\n detail: selectedItems[0]\n })\n )\n }\n\n showToast(message) {\n document.dispatchEvent(new CustomEvent('notify', { detail: { message, option: { timer: 1000 } } }))\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-setting-value.js","sourceRoot":"","sources":["../client/fetch-setting-value.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,aAAa,CAAA;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAEzC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAY;;IACjD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;QAClC,KAAK,EAAE,GAAG,CAAA;;;;;;KAMT;QACD,SAAS,EAAE,EAAE,IAAI,EAAE;KACpB,CAAC,CAAA;IAEF,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"fetch-setting-value.js","sourceRoot":"","sources":["../client/fetch-setting-value.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,aAAa,CAAA;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAEzC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAY;;IACjD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;QAClC,KAAK,EAAE,GAAG,CAAA;;;;;;KAMT;QACD,SAAS,EAAE,EAAE,IAAI,EAAE;KACpB,CAAC,CAAA;IAEF,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrB,IAAI,MAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAC;YACjC,QAAQ,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;gBACzD,KAAK,MAAM;oBACT,OAAO,IAAI,CAAA;gBACb,KAAK,OAAO;oBACV,OAAO,KAAK,CAAA;gBACd;oBACE,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;YAC7C,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC","sourcesContent":["import gql from 'graphql-tag'\nimport { client } from '@operato/graphql'\n\nexport async function fetchSettingRule(name: string) {\n const response = await client.query({\n query: gql`\n query ($name: String!) {\n setting(name: $name) {\n value\n }\n }\n `,\n variables: { name }\n })\n\n if (!response.errors) {\n if (response.data.setting?.value) {\n switch (response.data.setting.value.toLowerCase().trim()) {\n case 'true':\n return true\n case 'false':\n return false\n default:\n return response.data.setting.value.trim()\n }\n }\n\n return false\n }\n}\n"]}
|
package/dist-client/index.d.ts
CHANGED
package/dist-client/index.js
CHANGED
|
@@ -3,4 +3,5 @@ export { SettingPage } from './pages/setting';
|
|
|
3
3
|
export { SettingList } from './pages/setting-list';
|
|
4
4
|
export * from './setting-lets/domain-switch-let';
|
|
5
5
|
export * from './setting-lets/secure-iplist-setting-let';
|
|
6
|
+
export * from './setting-lets/theme-mode-setting-let';
|
|
6
7
|
//# sourceMappingURL=index.js.map
|
package/dist-client/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../client/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAElD,cAAc,kCAAkC,CAAA;AAChD,cAAc,0CAA0C,CAAA","sourcesContent":["export * from './fetch-setting-value'\nexport { SettingPage } from './pages/setting'\nexport { SettingList } from './pages/setting-list'\n\nexport * from './setting-lets/domain-switch-let'\nexport * from './setting-lets/secure-iplist-setting-let'\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../client/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAElD,cAAc,kCAAkC,CAAA;AAChD,cAAc,0CAA0C,CAAA;AACxD,cAAc,uCAAuC,CAAA","sourcesContent":["export * from './fetch-setting-value'\nexport { SettingPage } from './pages/setting'\nexport { SettingList } from './pages/setting-list'\n\nexport * from './setting-lets/domain-switch-let'\nexport * from './setting-lets/secure-iplist-setting-let'\nexport * from './setting-lets/theme-mode-setting-let'\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import '@things-factory/form-ui';
|
|
2
2
|
import '../components/partner-selector';
|
|
3
3
|
import { PageView } from '@operato/shell';
|
|
4
|
+
import { FetchOption } from '@operato/data-grist';
|
|
4
5
|
declare const PartnerSettingList_base: (new (...args: any[]) => {
|
|
5
6
|
_storeUnsubscribe: import("redux").Unsubscribe;
|
|
6
7
|
connectedCallback(): void;
|
|
@@ -13,7 +14,6 @@ export declare class PartnerSettingList extends PartnerSettingList_base {
|
|
|
13
14
|
private config;
|
|
14
15
|
private partnerDomain;
|
|
15
16
|
private mode;
|
|
16
|
-
private refreshHandlers;
|
|
17
17
|
private dataGrist;
|
|
18
18
|
render(): import("lit-html").TemplateResult<1>;
|
|
19
19
|
get context(): {
|
|
@@ -33,12 +33,7 @@ export declare class PartnerSettingList extends PartnerSettingList_base {
|
|
|
33
33
|
};
|
|
34
34
|
pageInitialized(): void;
|
|
35
35
|
pageUpdated(): void;
|
|
36
|
-
fetchHandler({ filters, page, limit, sorters }: {
|
|
37
|
-
filters: any;
|
|
38
|
-
page: any;
|
|
39
|
-
limit: any;
|
|
40
|
-
sorters?: never[] | undefined;
|
|
41
|
-
}): Promise<{
|
|
36
|
+
fetchHandler({ filters, page, limit, sorters }: FetchOption): Promise<{
|
|
42
37
|
records: any;
|
|
43
38
|
total: any;
|
|
44
39
|
}>;
|
|
@@ -17,7 +17,6 @@ let PartnerSettingList = class PartnerSettingList extends connect(store)(localiz
|
|
|
17
17
|
constructor() {
|
|
18
18
|
super(...arguments);
|
|
19
19
|
this.mode = isMobileDevice() ? 'LIST' : 'GRID';
|
|
20
|
-
this.refreshHandlers = [];
|
|
21
20
|
}
|
|
22
21
|
render() {
|
|
23
22
|
var _a;
|
|
@@ -30,7 +29,7 @@ let PartnerSettingList = class PartnerSettingList extends connect(store)(localiz
|
|
|
30
29
|
name="partnerDomain"
|
|
31
30
|
value="${((_a = this.partnerDomain) === null || _a === void 0 ? void 0 : _a.name) ? this.partnerDomain.name : ''}"
|
|
32
31
|
@click="${this.openPartnerSelector.bind(this)}"
|
|
33
|
-
placeholder=${i18next.t('text.please_choose_partner') || ''}
|
|
32
|
+
placeholder=${String(i18next.t('text.please_choose_partner') || '')}
|
|
34
33
|
/>
|
|
35
34
|
</fieldset>
|
|
36
35
|
</form>
|
|
@@ -316,15 +315,15 @@ PartnerSettingList.styles = [
|
|
|
316
315
|
}
|
|
317
316
|
label {
|
|
318
317
|
font: var(--label-font);
|
|
319
|
-
color: var(--label-color);
|
|
318
|
+
color: var(--label-color, var(--md-sys-color-on-surface));
|
|
320
319
|
text-transform: var(--label-text-transform);
|
|
321
320
|
}
|
|
322
321
|
input {
|
|
323
|
-
border: var(--border-
|
|
322
|
+
border: var(--border-dim-color);
|
|
324
323
|
border-radius: var(--border-radius);
|
|
325
324
|
margin: var(--input-margin);
|
|
326
325
|
padding: var(--input-padding);
|
|
327
|
-
background-color: var(--
|
|
326
|
+
background-color: var(--md-sys-color-surface);
|
|
328
327
|
font: var(--input-font);
|
|
329
328
|
}
|
|
330
329
|
`
|
|
@@ -341,10 +340,6 @@ __decorate([
|
|
|
341
340
|
state(),
|
|
342
341
|
__metadata("design:type", String)
|
|
343
342
|
], PartnerSettingList.prototype, "mode", void 0);
|
|
344
|
-
__decorate([
|
|
345
|
-
state(),
|
|
346
|
-
__metadata("design:type", Array)
|
|
347
|
-
], PartnerSettingList.prototype, "refreshHandlers", void 0);
|
|
348
343
|
__decorate([
|
|
349
344
|
query('ox-grist'),
|
|
350
345
|
__metadata("design:type", Object)
|