accrete 0.0.153__py3-none-any.whl → 0.0.155__py3-none-any.whl
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.
- accrete/channels.py +39 -0
- accrete/consumer.py +18 -0
- accrete/contrib/log/signals.py +1 -3
- accrete/contrib/ui/__init__.py +2 -1
- accrete/contrib/ui/config.py +9 -0
- accrete/contrib/ui/filter.py +1 -1
- accrete/contrib/ui/forms.py +1 -0
- accrete/contrib/ui/migrations/0005_theme_base_theme.py +18 -0
- accrete/contrib/ui/models.py +9 -0
- accrete/contrib/ui/response.py +31 -8
- accrete/contrib/ui/static/css/accrete.css +1 -6
- accrete/contrib/ui/static/css/accrete.css.map +1 -1
- accrete/contrib/ui/static/css/accrete.scss +2 -68
- accrete/contrib/ui/static/js/htmx.min.js +1 -1
- accrete/contrib/ui/static/js/ws.js +1 -0
- accrete/contrib/ui/templates/ui/filter/query_params.html +5 -0
- accrete/contrib/ui/templates/ui/layout.html +36 -17
- accrete/contrib/ui/templates/ui/list.html +4 -2
- accrete/contrib/ui/templates/ui/message.html +5 -3
- accrete/contrib/ui/templates/ui/table.html +2 -0
- accrete/contrib/ui/templates/ui/templatetags/tenant_quick_switch.html +14 -0
- accrete/contrib/ui/templates/ui/widgets/model_search_select_multi.html +2 -2
- accrete/contrib/ui/templatetags/ui.py +45 -1
- accrete/contrib/user/templates/user/accrete_navbar_end_dropdown.html +1 -1
- accrete/contrib/user/templates/user/user_preferences.html +1 -0
- accrete/fields.py +13 -0
- accrete/middleware.py +1 -0
- accrete/migrations/0009_alter_accessgroup_name.py +18 -2
- accrete/migrations/0010_alter_accessgroup_description.py +46 -0
- accrete/models.py +3 -3
- accrete/tenant.py +1 -0
- accrete/utils/__init__.py +4 -1
- accrete/utils/models.py +18 -0
- accrete/utils/views.py +1 -1
- {accrete-0.0.153.dist-info → accrete-0.0.155.dist-info}/METADATA +1 -1
- {accrete-0.0.153.dist-info → accrete-0.0.155.dist-info}/RECORD +38 -31
- {accrete-0.0.153.dist-info → accrete-0.0.155.dist-info}/WHEEL +0 -0
- {accrete-0.0.153.dist-info → accrete-0.0.155.dist-info}/licenses/LICENSE +0 -0
accrete/channels.py
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
import logging
|
2
|
+
from urllib.parse import urlparse, parse_qs
|
3
|
+
from django.contrib.auth import get_user_model
|
4
|
+
|
5
|
+
from accrete.models import Tenant, Member
|
6
|
+
from accrete.tenant import set_member, set_tenant
|
7
|
+
|
8
|
+
_logger = logging.getLogger(__name__)
|
9
|
+
|
10
|
+
|
11
|
+
class TenantMiddleware:
|
12
|
+
"""
|
13
|
+
Set tenant and member contextvar
|
14
|
+
"""
|
15
|
+
|
16
|
+
def __init__(self, inner):
|
17
|
+
self.inner = inner
|
18
|
+
|
19
|
+
async def __call__(self, scope, receive, send):
|
20
|
+
user = scope.get('user')
|
21
|
+
if not user or not isinstance(user, get_user_model()):
|
22
|
+
set_member(None)
|
23
|
+
return await self.inner(scope, receive, send)
|
24
|
+
tenant_id = parse_qs(urlparse(
|
25
|
+
f"?{scope.get('query_string', b'').decode()}"
|
26
|
+
).query).get('tenant_id', [None])[0]
|
27
|
+
tenant = tenant_id and await Tenant.objects.aget(pk=tenant_id)
|
28
|
+
if tenant and user.is_staff:
|
29
|
+
set_tenant(tenant)
|
30
|
+
return await self.inner(scope, receive, send)
|
31
|
+
get_kwargs = {'user': user, 'tenant': tenant}
|
32
|
+
try:
|
33
|
+
member = await Member.objects.aget(**get_kwargs)
|
34
|
+
except (Member.DoesNotExist, Member.MultipleObjectsReturned) as e:
|
35
|
+
_logger.error(e)
|
36
|
+
member = None
|
37
|
+
set_member(member)
|
38
|
+
return await self.inner(scope, receive, send)
|
39
|
+
|
accrete/consumer.py
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
from channels.generic.websocket import WebsocketConsumer, JsonWebsocketConsumer
|
2
|
+
|
3
|
+
from accrete.tenant import get_tenant
|
4
|
+
|
5
|
+
|
6
|
+
class WebsocketTenantConsumer(WebsocketConsumer):
|
7
|
+
|
8
|
+
def websocket_connect(self, message):
|
9
|
+
tenant = get_tenant()
|
10
|
+
if tenant is None:
|
11
|
+
raise ValueError('Tenant must be set.')
|
12
|
+
super().websocket_connect(message)
|
13
|
+
|
14
|
+
|
15
|
+
class JsonWebsocketTenantConsumer(JsonWebsocketConsumer):
|
16
|
+
|
17
|
+
pass
|
18
|
+
|
accrete/contrib/log/signals.py
CHANGED
accrete/contrib/ui/__init__.py
CHANGED
accrete/contrib/ui/filter.py
CHANGED
accrete/contrib/ui/forms.py
CHANGED
@@ -0,0 +1,18 @@
|
|
1
|
+
# Generated by Django 5.2.5 on 2025-10-03 07:29
|
2
|
+
|
3
|
+
from django.db import migrations, models
|
4
|
+
|
5
|
+
|
6
|
+
class Migration(migrations.Migration):
|
7
|
+
|
8
|
+
dependencies = [
|
9
|
+
('ui', '0004_theme_force_tenant_theme'),
|
10
|
+
]
|
11
|
+
|
12
|
+
operations = [
|
13
|
+
migrations.AddField(
|
14
|
+
model_name='theme',
|
15
|
+
name='base_theme',
|
16
|
+
field=models.CharField(choices=[('light', 'Light'), ('dark', 'Dark')], default='light', verbose_name='Base Theme'),
|
17
|
+
),
|
18
|
+
]
|
accrete/contrib/ui/models.py
CHANGED
@@ -49,6 +49,15 @@ class Theme(models.Model):
|
|
49
49
|
help_text=_('Apply this theme regardless of user preferences')
|
50
50
|
)
|
51
51
|
|
52
|
+
base_theme = models.CharField(
|
53
|
+
verbose_name=_('Base Theme'),
|
54
|
+
choices=[
|
55
|
+
('light', _('Light')),
|
56
|
+
('dark', _('Dark')),
|
57
|
+
],
|
58
|
+
default='light'
|
59
|
+
)
|
60
|
+
|
52
61
|
color_primary = models.CharField(
|
53
62
|
verbose_name=_('Primary Color'),
|
54
63
|
max_length=7,
|
accrete/contrib/ui/response.py
CHANGED
@@ -12,6 +12,15 @@ from django.utils.functional import Promise
|
|
12
12
|
from accrete.contrib.ui import Filter
|
13
13
|
|
14
14
|
|
15
|
+
@dataclass(kw_only=True)
|
16
|
+
class WindowResponseConfig:
|
17
|
+
|
18
|
+
display_header: bool = True
|
19
|
+
|
20
|
+
def dict(self):
|
21
|
+
return vars(self)
|
22
|
+
|
23
|
+
|
15
24
|
class Response:
|
16
25
|
|
17
26
|
def __init__(self, *, template: str, context: dict):
|
@@ -71,12 +80,15 @@ class WindowResponse(Response):
|
|
71
80
|
|
72
81
|
def __init__(
|
73
82
|
self, *,
|
74
|
-
title: str,
|
75
|
-
context: dict,
|
83
|
+
title: str | Promise,
|
84
|
+
context: dict = None,
|
76
85
|
overview_template: str = None,
|
77
86
|
header_template: str = None,
|
78
87
|
panel_template: str = None,
|
79
|
-
|
88
|
+
style_template: str = None,
|
89
|
+
script_template: str = None,
|
90
|
+
is_centered: bool = False,
|
91
|
+
config: WindowResponseConfig = None
|
80
92
|
):
|
81
93
|
super().__init__(template=self.base_template, context=context)
|
82
94
|
self.title = title
|
@@ -84,13 +96,17 @@ class WindowResponse(Response):
|
|
84
96
|
self.header_template = header_template
|
85
97
|
self.panel_template = panel_template
|
86
98
|
self.panel_template = panel_template
|
99
|
+
self.style_template = style_template
|
100
|
+
self.script_template = script_template
|
87
101
|
self.is_centered = is_centered
|
102
|
+
self.config = config or WindowResponseConfig()
|
88
103
|
|
89
104
|
def _has_panel(self):
|
90
105
|
return bool(self.panel_template)
|
91
106
|
|
92
107
|
def get_context(self):
|
93
108
|
context = super().get_context()
|
109
|
+
# TODO: move has_panel to config?
|
94
110
|
if 'has_panel' not in context.keys():
|
95
111
|
context.update(has_panel=self._has_panel())
|
96
112
|
context.update({
|
@@ -98,7 +114,10 @@ class WindowResponse(Response):
|
|
98
114
|
'overview_template': self.overview_template,
|
99
115
|
'header_template': self.header_template,
|
100
116
|
'panel_template': self.panel_template,
|
101
|
-
'
|
117
|
+
'style_template': self.style_template,
|
118
|
+
'script_template': self.script_template,
|
119
|
+
'is_centered': self.is_centered,
|
120
|
+
'config': self.config.dict()
|
102
121
|
})
|
103
122
|
return context
|
104
123
|
|
@@ -119,11 +138,12 @@ class ListResponse(WindowResponse):
|
|
119
138
|
header_template: str = None,
|
120
139
|
panel_template: str = None,
|
121
140
|
column_count: int = 1,
|
122
|
-
column_height: str = '150px',
|
141
|
+
column_height: str | None = '150px',
|
123
142
|
overview_template: str = 'ui/list.html',
|
124
143
|
detail_header_template: str = None,
|
125
144
|
detail_data_template: str = None,
|
126
|
-
detail_enabled: bool = True
|
145
|
+
detail_enabled: bool = True,
|
146
|
+
config: WindowResponseConfig = None
|
127
147
|
):
|
128
148
|
assert page is not None or ui_filter is not None, _(
|
129
149
|
'Argument page or ui_filter must be supplied'
|
@@ -134,6 +154,7 @@ class ListResponse(WindowResponse):
|
|
134
154
|
overview_template=overview_template,
|
135
155
|
header_template=header_template,
|
136
156
|
panel_template=panel_template,
|
157
|
+
config=config
|
137
158
|
)
|
138
159
|
self.page = page or (ui_filter and ui_filter.get_page())
|
139
160
|
self.list_entry_template = list_entry_template
|
@@ -231,7 +252,8 @@ class TableResponse(WindowResponse):
|
|
231
252
|
panel_template: str = None,
|
232
253
|
overview_template: str = 'ui/table.html',
|
233
254
|
detail_header_template: str = None,
|
234
|
-
detail_data_template: str = None
|
255
|
+
detail_data_template: str = None,
|
256
|
+
config: WindowResponseConfig = None
|
235
257
|
):
|
236
258
|
assert page is not None or ui_filter is not None, _(
|
237
259
|
'Argument page or ui_filter must be supplied'
|
@@ -241,7 +263,8 @@ class TableResponse(WindowResponse):
|
|
241
263
|
context=context,
|
242
264
|
overview_template=overview_template,
|
243
265
|
header_template=header_template,
|
244
|
-
panel_template=panel_template
|
266
|
+
panel_template=panel_template,
|
267
|
+
config=config
|
245
268
|
)
|
246
269
|
self.instance_label = instance_label
|
247
270
|
self.fields = fields
|
@@ -3,7 +3,7 @@
|
|
3
3
|
--bulma-body-size: .9em;
|
4
4
|
--bulma-navbar-height: 40px;
|
5
5
|
--bulma-menu-item-selected-h: var(--bulma-primary-h);
|
6
|
-
--accrete-detail-width:
|
6
|
+
--accrete-detail-width: 40em;
|
7
7
|
--bulma-primary-h: 153.28deg;
|
8
8
|
--bulma-primary-s: 52.89%;
|
9
9
|
--bulma-primary-l: 52.55%;
|
@@ -187,11 +187,6 @@ select:focus {
|
|
187
187
|
.level > .level-item.box {
|
188
188
|
width: 100%; }
|
189
189
|
|
190
|
-
.modal {
|
191
|
-
padding-top: 0 !important;
|
192
|
-
padding-bottom: 0 !important;
|
193
|
-
justify-content: center !important; }
|
194
|
-
|
195
190
|
.modal-card {
|
196
191
|
width: 100% !important;
|
197
192
|
max-height: 100svh; } }
|
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"version": 3,
|
3
|
-
"mappings": "AAAQ,uCAA4B;AAEpC,KAAM;EACJ,iBAAiB,CAAC,KAAK;EACvB,qBAAqB,CAAC,KAAK;EAC3B,4BAA4B,CAAC,uBAAuB;EACpD,sBAAsB,CAAC,KAAK;EAC5B,iBAAiB,CAAC,UAAU;EAC5B,iBAAiB,CAAC,OAAO;EACzB,iBAAiB,CAAC,OAAO;EACzB,4BAA4B,CAAC,MAAM;EACnC,mBAAmB,CAAC,qBAAqB;EACzC,mBAAmB,CAAC,qBAAqB;EACzC,qBAAqB,CAAC,QAAQ;;
|
3
|
+
"mappings": "AAAQ,uCAA4B;AAEpC,KAAM;EACJ,iBAAiB,CAAC,KAAK;EACvB,qBAAqB,CAAC,KAAK;EAC3B,4BAA4B,CAAC,uBAAuB;EACpD,sBAAsB,CAAC,KAAK;EAC5B,iBAAiB,CAAC,UAAU;EAC5B,iBAAiB,CAAC,OAAO;EACzB,iBAAiB,CAAC,OAAO;EACzB,4BAA4B,CAAC,MAAM;EACnC,mBAAmB,CAAC,qBAAqB;EACzC,mBAAmB,CAAC,qBAAqB;EACzC,qBAAqB,CAAC,QAAQ;;AAKhC,uBAAwB;EACtB,qBAAqB,CAAC,QAAQ;EAE9B,wCAAiB;IACf,gBAAgB,CAAC,oBAAoB;IACrC,gBAAgB,CAAC,oBAAoB;IACrC,gBAAgB,CAAC,oBAAoB;IACrC,2BAA2B,CAAC,oBAAoB;IAChD,uBAAuB,CAAC,oBAAoB;IAC5C,2BAA2B,CAAC,IAAI;IAChC,sBAAsB,CAAC,2BAA2B;IAClD,6BAA6B,CAAC,EAAE;EAGlC,kDAA2B;IACzB,2BAA2B,CAAC,oBAAoB;IAChD,sBAAsB,CAAC,kCAAkC;EAG3D,+CAAwB;IACtB,2BAA2B,CAAC,0BAA0B;;AAI1D,SAAU;EACR,OAAO,EAAE,eAAe;;AAG1B,CAAE;EACA,KAAK,EAAE,OAAO;EACd,eAAe,EAAE,OAAO;;AAG1B,MAAO;EACL,WAAW,EAAE,MAAM;;AAIrB,cAAe;EACb,KAAK,EAAE,KAAK;;AAGd,OAAQ;EACN,UAAU,EAAE,IAAI;;AAGlB,iBAAkB;EAChB,UAAU,EAAE,IAAI;EAChB,gBAAgB,EAAE,WAAW;EAC7B,kBAAkB,EAAE,WAAW;EAC/B,mBAAmB,EAAE,WAAW;EAChC,iBAAiB,EAAE,WAAW;;AAGhC,iCAAkC;EAChC,UAAU,EAAE,IAAI;EAChB,MAAM,EAAE,8BAA8B;;AAGxC,eAAgB;EACd,gBAAgB,EAAE,sBAAsB;EACxC,MAAM,EAAE,gBAAgB;;AAG1B,2BAA4B;EAC1B,WAAW,EAAE,iBAAiB;;AAGhC,QAAS;EACL,UAAU,EAAE,eAAc;;AAG9B,cAAe;EACX,YAAY,EAAE,+BAA+B;;AAGjD,mCAAoC;EAClC,aAAa,EAAE,CAAC;EAChB,SAAS,EAAE,uBAAuB;;AAGpC,mDAAoD;EAClD,aAAa,EAAE,CAAC;;AAGlB,MAAO;EACH,UAAU,EAAE,eAAe;;AAG/B,YAAa;EACX,UAAU,EAAE,IAAI;EAChB,MAAM,EAAE,yCAAwC;;AAGlD,iBAAkB;EAChB,WAAW,EAAE,CAAC;EACd,KAAK,EAAE,2BAA2B;EAClC,sBAAsB,EAAE,0BAA0B;EAClD,yBAAyB,EAAE,0BAA0B;EACrD,UAAU,EAAE,qCAAqC;EACjD,OAAO,EAAE,EAAE;;AAGb,mBAAoB;EAClB,OAAO,EAAE,IAAI;;AAGf,mBAAoB;EAClB,cAAc,EAAE,kBAAkB;EAClC,cAAc,EAAE,WAAW;;AAG7B,eAAe;EACX,UAAU,EAAE,qBAAqB;;AAGrC,sBAAuB;EACnB,cAAc,EAAE,IAAI;;AAGxB,mCAAoC;EAChC,cAAc,EAAE,IAAI;;AAGxB,iBAAkB;EAChB,QAAQ,EAAE,KAAK;EACf,UAAU,EAAE,qBAAqB;EACjC,MAAM,EAAE,IAAI;EACZ,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,IAAI;;AAGf,8BAA+B;EAC7B,OAAO,EAAE,GAAG;EACZ,gBAAgB,EAAE,KAAK;EACvB,mBAAmB,EAAE,OAAO;;AAG9B,6BAA8B;EAC5B,QAAQ,EAAE,KAAK;EACf,GAAG,EAAE,GAAG;EACR,WAAW,EAAE,EAAE;EACf,SAAS,EAAE,sCAAsC;;AAGnD,uCAAwC;EACtC,UAAU,EAAE,gCAAgC;;AAG9C,SAAU;EACR,UAAU,EAAE,iBAAiB;EAC7B,SAAS,EAAE,eAAe;EAC1B,aAAa,EAAE,YAAY;EAC3B,KAAK,EAAE,iBAAiB;EACxB,WAAW,EAAE,0BAA0B;EACvC,WAAW,EAAE,IAAI;;AAGnB,UAAW;EACP,YAAY,EAAE,MAAM;EACpB,aAAa,EAAE,MAAM;;AAGzB,gDAyCC;EAxCC,sBAAuB;IACrB,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,UAAU,EAAE,eAAe;IAC3B,MAAM,EAAE,sBAAsB;IAC9B,SAAS,EAAE,GAAG;IACd,YAAY,EAAE,eAAe;;EAG/B,sBAAuB;IACrB,OAAO,EAAE,YAAY;IACrB,KAAK,EAAE,IAAI;IACX,WAAW,EAAE,GAAG;IAChB,cAAc,EAAE,IAAI;IACpB,aAAa,EAAE,iCACjB;;EAEA,kCAAmC;IACjC,UAAU,EAAE,iCAAiC;;EAG/C,iCAAkC;IAChC,gBAAgB,EAAE,oBAAoB;;EAGxC,uCAAwC;IACtC,gBAAgB,EAAE,+BAA8B;;EAGlD,yBAA0B;IACxB,OAAO,EAAE,IAAI;;EAGf,mBAAoB;IAClB,OAAO,EAAE,YAAY;;EAGvB,WAAY;IACV,MAAM,EAAE,sBAAqB;AAIjC,oCAAqC;EACnC,WAAY;IACV,SAAS,EAAE,IAAI;AAInB,oCAAqC;EACnC,iBAAkB;IAChB,SAAS,EAAE,CAAC;IACZ,WAAW,EAAE,CAAC;IACd,KAAK,EAAE,IAAI;IACX,sBAAsB,EAAE,CAAC;IACzB,yBAAyB,EAAE,CAAC;;EAG9B,wBAAyB;IACvB,KAAK,EAAE,IAAI;;EAGb,WAAY;IACV,KAAK,EAAE,eAAc;IACrB,UAAU,EAAE,MAAM;AAItB,aAAc;EACZ,SAAS,EAAE,iCAAiC;EAC5C,SAAS,EAAE,iCAAiC;EAC5C,MAAM,EAAE,IAAI;EACZ,UAAU,EAAE,IAAI;;AAGlB,qCAAsC;EACpC,aAAc;IACZ,QAAQ,EAAE,QAAQ;IAClB,UAAU,EAAE,wBAAwB;IACpC,OAAO,EAAE,EAAE;IACX,UAAU,EAAE,oCAAoC;AAIpD,gLAAiL;EAC/K,mBAAmB,CAAC,uBAAuB;EAC3C,mBAAmB,CAAC,uBAAuB;EAC3C,mBAAmB,CAAC,uBAAuB;EAC3C,8BAA8B,CAAC,uBAAuB;EACtD,yBAAyB,CAAC,8BAA8B;;AAG1D,kBAAmB;EACf,gBAAgB,EAAE,0BAA0B;;AAGhD,iCAAiC;AACjC;gCACiC;EAC/B,kBAAkB,EAAE,IAAI;EACxB,MAAM,EAAE,CAAC;;AAGX,aAAa;AACb,kBAAmB;EACjB,eAAe,EAAE,SAAS;;AAG5B,uEAAwE;EACtE,OAAO,EAAE,IAAI;;AAGf,6EAA8E;EAC5E,OAAO,EAAE,eAAc;;AAGzB,kEAAmE;EACjE,OAAO,EAAE,IAAI;;AAGf,wEAAyE;EACvE,OAAO,EAAE,eAAc;;AAGzB,YAAa;EACX,YAAY,EAAE,GAAG;EACjB,WAAW,EAAE,iCAAiC;EAC9C,UAAU,EAAE,IAAI;EAChB,YAAY,EAAE,IAAI;EAClB,aAAa,EAAE,IAAI;EACnB,aAAa,EAAE,CAAC;EAChB,aAAa,EAAE,GAAG;;AAGpB,mDAAoD;EAClD,YAAY,EAAE,CAAC;EACf,WAAW,EAAE,eAAc;;AAG7B,iBAAkB;EAChB,YAAY,EAAE,MAAM;EACpB,aAAa,EAAE,MAAM;EACrB,WAAW,EAAE,MAAM",
|
4
4
|
"sources": ["accrete.scss"],
|
5
5
|
"names": [],
|
6
6
|
"file": "accrete.css"
|
@@ -4,7 +4,7 @@
|
|
4
4
|
--bulma-body-size: .9em;
|
5
5
|
--bulma-navbar-height: 40px;
|
6
6
|
--bulma-menu-item-selected-h: var(--bulma-primary-h);
|
7
|
-
--accrete-detail-width:
|
7
|
+
--accrete-detail-width: 40em;
|
8
8
|
--bulma-primary-h: 153.28deg;
|
9
9
|
--bulma-primary-s: 52.89%;
|
10
10
|
--bulma-primary-l: 52.55%;
|
@@ -14,20 +14,9 @@
|
|
14
14
|
--accrete-hover-color: #F0F2F4;
|
15
15
|
}
|
16
16
|
|
17
|
-
html[data-theme='light'] {
|
18
|
-
//--bulma-menu-item-h: var(--bulma-success-h);
|
19
|
-
//--bulma-menu-item-s: var(--bulma-success-s);
|
20
|
-
//--bulma-menu-item-l: var(--bulma-success-l);
|
21
|
-
//--bulma-menu-item-background-l: 50%;
|
22
|
-
//--bulma-menu-item-color-l: 10%;
|
23
|
-
//--bulma-navbar-burger-color: var(--bulma-success);
|
24
|
-
//--bulma-input-disabled-border-color: var(--bulma-input-border-color) !important;
|
25
|
-
//--accrete-hover-color: #F0F2F4;
|
26
|
-
}
|
17
|
+
html[data-theme='light'] {}
|
27
18
|
|
28
19
|
html[data-theme='dark'] {
|
29
|
-
//--bulma-navbar-burger-color: var(--bulma-success);
|
30
|
-
//--bulma-input-disabled-border-color: var(--bulma-input-border-color) !important;
|
31
20
|
--accrete-hover-color: #1E2128;
|
32
21
|
|
33
22
|
.button.is-light {
|
@@ -81,23 +70,9 @@ a {
|
|
81
70
|
border-left-color: transparent;
|
82
71
|
}
|
83
72
|
|
84
|
-
//.input {
|
85
|
-
// border-top: none;
|
86
|
-
// border-right: none;
|
87
|
-
// border-left: none;
|
88
|
-
// border-top-left-radius: 0;
|
89
|
-
// border-top-right-radius: 0;
|
90
|
-
// border-bottom-right-radius: 0;
|
91
|
-
// border-bottom-left-radius: 0;
|
92
|
-
// box-shadow: none;
|
93
|
-
// //box-shadow: inset 0 -10px 10px -16px #000000;
|
94
|
-
// font-weight: bold;
|
95
|
-
//}
|
96
|
-
|
97
73
|
.input:focus, .input:focus-within {
|
98
74
|
box-shadow: none;
|
99
75
|
border: 1px solid var(--bulma-primary);
|
100
|
-
//border-color: var(--bulma-success);
|
101
76
|
}
|
102
77
|
|
103
78
|
input[disabled] {
|
@@ -122,47 +97,12 @@ textarea:focus {
|
|
122
97
|
font-size: var(--bulma-size-small);
|
123
98
|
}
|
124
99
|
|
125
|
-
td:first-child > .input {
|
126
|
-
//border-top-left-radius: var(--bulma-radius);
|
127
|
-
//border-bottom-left-radius: var(--bulma-radius);
|
128
|
-
|
129
|
-
//border-right: 0;
|
130
|
-
//border-top: none!important;
|
131
|
-
//border-right: none!important;
|
132
|
-
//border-bottom: none!important;
|
133
|
-
//border-left: none!important;
|
134
|
-
}
|
135
|
-
|
136
|
-
td:last-child > .input {
|
137
|
-
//border-top-right-radius: var(--bulma-radius);
|
138
|
-
//border-bottom-right-radius: var(--bulma-radius);
|
139
|
-
|
140
|
-
//border-right: 0;
|
141
|
-
//border-top: none!important;
|
142
|
-
//border-right: none!important;
|
143
|
-
//border-bottom: none!important;
|
144
|
-
//border-left: none!important;
|
145
|
-
}
|
146
|
-
|
147
100
|
td > .input, td * .input, td * select, td * .select {
|
148
|
-
//border-top: none!important;
|
149
|
-
//border-right: none!important;
|
150
|
-
//border-bottom: none!important;
|
151
|
-
//border-left: none!important;
|
152
101
|
border-radius: 0;
|
153
102
|
}
|
154
103
|
|
155
|
-
td:has(.input:focus) {
|
156
|
-
//border-bottom: 1px solid var(--bulma-primary)!important;
|
157
|
-
}
|
158
|
-
|
159
104
|
select {
|
160
|
-
//border-top: transparent !important;
|
161
|
-
//border-right: transparent !important;
|
162
|
-
//border-left: transparent !important;
|
163
|
-
//border-radius: 0 !important;
|
164
105
|
box-shadow: none !important;
|
165
|
-
//font-weight: bold;
|
166
106
|
}
|
167
107
|
|
168
108
|
select:focus {
|
@@ -301,12 +241,6 @@ select:focus {
|
|
301
241
|
width: 100%
|
302
242
|
}
|
303
243
|
|
304
|
-
.modal {
|
305
|
-
padding-top: 0!important;
|
306
|
-
padding-bottom: 0!important;
|
307
|
-
justify-content: center!important;
|
308
|
-
}
|
309
|
-
|
310
244
|
.modal-card {
|
311
245
|
width: 100%!important;
|
312
246
|
max-height: 100svh;
|