@steedos/service-plugin-amis 3.0.0-beta.15 → 3.0.0-beta.151
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/main/default/client/amis.actions.client.js +4 -7
- package/main/default/client/amis.render.client.js +2 -44
- package/main/default/pages/action_field_updates_form.page.amis.json +11 -8
- package/main/default/pages/generate_object_tabs.page.amis.json +0 -1
- package/main/default/pages/listview_form.page.amis.json +1 -12
- package/main/default/services/amis-design.service.js +2 -1
- package/main/default/services/metadata/listviews.service.js +15 -6
- package/main/default/services/utils/page-schema.js +3 -3
- package/package.json +3 -4
- package/package.service.js +1 -1
- package/public/tailwind/tailwind-base.css +145 -104
- package/public/tailwind/tailwind-steedos.css +96 -79
- package/main/default/pages/apps_form.page.amis.json +0 -336
- package/main/default/pages/apps_form.page.yml +0 -12
|
@@ -30,10 +30,7 @@ const draftsApiAdaptor = `
|
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
var instance = payload.inserts[0];
|
|
33
|
-
var url = Steedos.absoluteUrl("/app/" +
|
|
34
|
-
// 这里不可以直接openWindow,因为手机浏览器上打不开新窗口,迁移到下面的afterDrafts脚本中,在custom动作单独执行openWindow才行
|
|
35
|
-
// Steedos.openWindow(url);
|
|
36
|
-
// if(!Steedos.isMobile()){ FlowRouter.reload();}
|
|
33
|
+
var url = Steedos.absoluteUrl("/app/" + context.app_id + "/instances/view/" + instance._id + "?display=" + (Steedos.Page.getDisplay('instances') || '') + "&side_object=instances&side_listview_id=draft");
|
|
37
34
|
payload.draftUrl = url;
|
|
38
35
|
return payload;
|
|
39
36
|
`;
|
|
@@ -41,7 +38,7 @@ const draftsApiAdaptor = `
|
|
|
41
38
|
const afterDrafts = `
|
|
42
39
|
var url = event.data.draftUrl;
|
|
43
40
|
Steedos.openWindow(url);
|
|
44
|
-
|
|
41
|
+
window.navigate(0);
|
|
45
42
|
`;
|
|
46
43
|
|
|
47
44
|
amisLib.registerAction('steedos_actions_standard_approve', {
|
|
@@ -49,7 +46,7 @@ amisLib.registerAction('steedos_actions_standard_approve', {
|
|
|
49
46
|
return amisLib.runActions([
|
|
50
47
|
{
|
|
51
48
|
"actionType": "custom",
|
|
52
|
-
"script": "var objectName = event.data.objectName || event.data.object_name;const flows = lodash.filter(
|
|
49
|
+
"script": "var objectName = event.data.objectName || event.data.object_name;const flows = lodash.filter(Steedos.object_workflows, (item) => { return item.object_name == objectName && (!item.sync_direction || item.sync_direction == 'both' || item.sync_direction == 'obj_to_ins') })\n\nevent.setData({ ...event.data, ...{ flows: flows, flowCount: flows.length } })\n\n"
|
|
53
50
|
},
|
|
54
51
|
{
|
|
55
52
|
"actionType": "ajax",
|
|
@@ -132,7 +129,7 @@ amisLib.registerAction('steedos_actions_standard_approve', {
|
|
|
132
129
|
"url": "${context.rootUrl}/api/object/workflow/drafts",
|
|
133
130
|
"method": "post",
|
|
134
131
|
"requestAdaptor":"api.data = {\n \'Instances\': [{\n \'flow\': api.body.flowId,\n \'applicant\': api.body.context.userId,\n \'space\': api.body.context.tenantId,\n \'record_ids\': [{ o: api.body.objectName, ids: [api.body.recordId] }]\n }]\n}\n\nreturn api;",
|
|
135
|
-
"adaptor":"\nif (payload.error) { \n return {\n status: 2,\n msg: payload.error\n }\n}\nconst instance = payload.inserts[0];\nSteedos.openWindow(Steedos.absoluteUrl(\'/app/\' +
|
|
132
|
+
"adaptor":"\nif (payload.error) { \n return {\n status: 2,\n msg: payload.error\n }\n}\nconst instance = payload.inserts[0];\nSteedos.openWindow(Steedos.absoluteUrl(\'/app/\' + context.app_id + \'/instances/view/\' + instance._id + \'?display=\' + (Steedos.Page.getDisplay('instances') || '') + \'&side_object=instances&side_listview_id=draft\'))\nwindow.navigate(0);\nreturn payload;",
|
|
136
133
|
"messages": {},
|
|
137
134
|
"headers": {
|
|
138
135
|
"Authorization": "Bearer ${context.tenantId},${context.authToken}"
|
|
@@ -29,11 +29,6 @@
|
|
|
29
29
|
|
|
30
30
|
return true;
|
|
31
31
|
}
|
|
32
|
-
|
|
33
|
-
// 加载Amis SDK: 如果直接放到body中会导致 meteor 编译后的 cordova.js 加载报错
|
|
34
|
-
// let amisSDKScript = document.createElement("script");
|
|
35
|
-
// amisSDKScript.setAttribute("src", Steedos.absoluteUrl('/unpkg.com/amis/sdk/sdk.js'));
|
|
36
|
-
// document.getElementsByTagName("head")[0].appendChild(amisSDKScript);
|
|
37
32
|
} catch (error) {
|
|
38
33
|
console.error(error)
|
|
39
34
|
};
|
|
@@ -257,13 +252,8 @@
|
|
|
257
252
|
|
|
258
253
|
// 主要是支持 nav 中的跳转
|
|
259
254
|
if (action && to && action.target) {
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
return;
|
|
263
|
-
}else{
|
|
264
|
-
window.open(to, action.target);
|
|
265
|
-
return;
|
|
266
|
-
}
|
|
255
|
+
window.open(to, action.target);
|
|
256
|
+
return;
|
|
267
257
|
}
|
|
268
258
|
|
|
269
259
|
if (/^https?:\/\//.test(to)) {
|
|
@@ -281,10 +271,6 @@
|
|
|
281
271
|
}
|
|
282
272
|
// url是相对路径
|
|
283
273
|
if(config.url && (!/^http[s]?:\/\//i.test(config.url))){
|
|
284
|
-
if(Meteor.isCordova){
|
|
285
|
-
config.url = Meteor.absoluteUrl(config.url)
|
|
286
|
-
}
|
|
287
|
-
|
|
288
274
|
if(!config.headers){
|
|
289
275
|
config.headers = {}
|
|
290
276
|
}
|
|
@@ -292,17 +278,6 @@
|
|
|
292
278
|
if(!config.headers.Authorization && Builder.settings.context && Builder.settings.context.tenantId && Builder.settings.context.authToken){
|
|
293
279
|
config.headers.Authorization = `Bearer ${Builder.settings.context.tenantId},${Builder.settings.context.authToken}`;
|
|
294
280
|
}
|
|
295
|
-
}else if(config.url && Meteor.isCordova && Builder.settings.context && Builder.settings.context.rootUrl && config.url.startsWith(Builder.settings.context.rootUrl)){
|
|
296
|
-
// 是绝对路径,且是cordova环境, 且以root url开头, 则自动处理认证
|
|
297
|
-
if(Meteor.isCordova){
|
|
298
|
-
if(!config.headers){
|
|
299
|
-
config.headers = {}
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
if(!config.headers.Authorization && Builder.settings.context && Builder.settings.context.tenantId && Builder.settings.context.authToken){
|
|
303
|
-
config.headers.Authorization = `Bearer ${Builder.settings.context.tenantId},${Builder.settings.context.authToken}`;
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
281
|
}
|
|
307
282
|
return config;
|
|
308
283
|
},
|
|
@@ -418,23 +393,6 @@
|
|
|
418
393
|
};
|
|
419
394
|
|
|
420
395
|
const initMonaco = ()=>{
|
|
421
|
-
|
|
422
|
-
// const { detect } = require('detect-browser');
|
|
423
|
-
|
|
424
|
-
// const browser = detect();
|
|
425
|
-
|
|
426
|
-
// // 低于86版的chrome 不支持code类型字段及功能
|
|
427
|
-
// if (browser && browser.name === 'chrome' && Number(browser.version.split(".")[0]) < 86) {
|
|
428
|
-
// return Promise.resolve(true)
|
|
429
|
-
// }
|
|
430
|
-
|
|
431
|
-
// // 手机版暂不支持code类型字段.
|
|
432
|
-
// if(Meteor.isCordova){
|
|
433
|
-
// return Promise.resolve(true)
|
|
434
|
-
// }else{
|
|
435
|
-
// return Builder.initMonaco()
|
|
436
|
-
// }
|
|
437
|
-
|
|
438
396
|
return Promise.resolve(true)
|
|
439
397
|
}
|
|
440
398
|
//Amis SDK 中已清理了monaco, 所以这里需要提前注册,否则会导致amis code类型报错
|
|
@@ -141,16 +141,19 @@
|
|
|
141
141
|
"multiple": false
|
|
142
142
|
},
|
|
143
143
|
{
|
|
144
|
-
"
|
|
145
|
-
"
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
144
|
+
"type": "service",
|
|
145
|
+
"schemaApi": {
|
|
146
|
+
"method": "get",
|
|
147
|
+
"url": "${context.rootUrl}/service/api/amis-metadata-objects/objects/${target_object}/fields/options",
|
|
148
|
+
"cache": 30000,
|
|
149
|
+
"adaptor": "const field = {label: t('action_field_updates.action_field_updates_form.formula')}; const variables = SteedosUI.getFormulaVariables(payload.data.options);\n var fieldSchema={label: field.label, type:'input-formula', name: 'formula', 'evalMode': false, variableMode: 'tabs', variables: variables, labelRemark: field.inlineHelpText, description: field.description } \n return {...payload, data:fieldSchema};",
|
|
150
|
+
"trackExpression": "${target_object}",
|
|
151
|
+
"sendOn": "${target_object}"
|
|
152
|
+
},
|
|
153
|
+
"dsType": "api",
|
|
154
|
+
"id": "u:508198dbfac7",
|
|
149
155
|
"className": "col-span-2 m-1",
|
|
150
156
|
"labelClassName": "text-left",
|
|
151
|
-
"clearValueOnHidden": true,
|
|
152
|
-
"fieldName": "formula",
|
|
153
|
-
"id": "u:20766a86a9f4",
|
|
154
157
|
"hiddenOn": "this.operation != 'formula'"
|
|
155
158
|
},
|
|
156
159
|
{
|
|
@@ -289,7 +289,7 @@
|
|
|
289
289
|
}
|
|
290
290
|
},
|
|
291
291
|
"initApiAdaptor": "\nvar data;\nif (recordId) {\n data = payload.data || { _filters_type_controller: 'conditions' };\n //数据格式转换\n if (data) {\n data.sort = lodash.map(data.sort, (item) => {\n return item.field_name + \":\" + item.order;\n });\n data.searchable_fields = lodash.map(data.searchable_fields, 'field');\n\n if (data.filters && lodash.isString(data.filters)) {\n try {\n data.filters = JSON.parse(data.filters);\n } catch (e) { }\n }\n\n if (data.filters && lodash.isString(data.filters)) {\n data._filters_type_controller = 'function';\n } else {\n data._filters_type_controller = 'conditions'\n }\n\n if (data._filters_type_controller === 'conditions') {\n data._filters_conditions = window.amisConvert.filtersToConditions(data.filters || []);\n } else {\n data._filters_function = data.filters;\n }\n }\n} else {\n const uiSchema = api.body.uiSchema;\n const contextDefaultData = context && context.data && context.data.defaultData; const defaultData = api.body.defaultData || contextDefaultData;\n let defaultValues = {};\n _.each(uiSchema && uiSchema.fields, function (field) {\n var value = SteedosUI.getFieldDefaultValue(field, api.body.global);\n if (!_.isNil(value)) {\n defaultValues[field.name] = value;\n }\n });\n if (defaultData && _.isObject(defaultData) && !_.isArray(defaultData)) {\n data = Object.assign({}, defaultValues, defaultData); \n }else{data = Object.assign({}, defaultValues) } \n}\nfor (key in data) {\n if (data[key] === null) {\n delete data[key];\n }\n}\npayload.data = data;\ndelete payload.extensions; if (data.is_enable != false) { data.is_enable = true; };\nreturn payload;",
|
|
292
|
-
"apiRequestAdaptor": "delete formData.created;\ndelete formData.created_by;\ndelete formData.modified;\ndelete formData.modified_by;\ndelete formData._display;\n\n//数据格式转换\nformData.sort = lodash.map(formData.sort, (item) => {\n const arr = item.split(':');\n return { field_name: arr[0], order: arr[1] };\n});\n\nformData.searchable_fields = lodash.map(formData.searchable_fields, (item) => {\n return { field: item };\n});\n\nif (!formData._filters_type_controller) {\n formData._filters_type_controller = 'conditions';\n}\n\nif (formData._filters_type_controller === 'conditions' && formData._filters_conditions) {\n formData.filters = window.amisConvert.conditionsToFilters(formData._filters_conditions);\n // formData.filters = JSON.stringify(window.amisConvert.conditionsToFilters(formData._filters_conditions), null, 4);\n} else {\n formData.filters = formData._filters_function || null;\n}\n\ndelete formData._filters_type_controller;\ndelete formData._filters_conditions;\ndelete formData._filters_function;\n\nquery = `mutation{record: object_listviews__insert(doc: {__saveData}){_id}}`;\nif (formData.recordId) {\n query = `mutation{record: object_listviews__update(id: \"` +
|
|
292
|
+
"apiRequestAdaptor": "delete formData.created;\ndelete formData.created_by;\ndelete formData.modified;\ndelete formData.modified_by;\ndelete formData._display;\n\n//数据格式转换\nformData.sort = lodash.map(formData.sort, (item) => {\n const arr = item.split(':');\n return { field_name: arr[0], order: arr[1] };\n});\n\nformData.searchable_fields = lodash.map(formData.searchable_fields, (item) => {\n return { field: item };\n});\n\nif (!formData._filters_type_controller) {\n formData._filters_type_controller = 'conditions';\n}\n\nif (formData._filters_type_controller === 'conditions' && formData._filters_conditions) {\n formData.filters = window.amisConvert.conditionsToFilters(formData._filters_conditions);\n // formData.filters = JSON.stringify(window.amisConvert.conditionsToFilters(formData._filters_conditions), null, 4);\n} else {\n formData.filters = formData._filters_function || null;\n}\n\ndelete formData._filters_type_controller;\ndelete formData._filters_conditions;\ndelete formData._filters_function;\n\nquery = `mutation{record: object_listviews__insert(doc: {__saveData}){_id}}`;\nif (formData.recordId) {\n query = `mutation{record: object_listviews__update(id: \"` + api.body.recordId + `\", doc: {__saveData}){_id}}`;\n};\n__saveData = JSON.stringify(JSON.stringify(formData));\n\napi.data = { query: query.replace('{__saveData}', __saveData) };\nreturn api;",
|
|
293
293
|
"id": "u:ce9e3fcc411a"
|
|
294
294
|
}
|
|
295
295
|
],
|
|
@@ -304,16 +304,5 @@
|
|
|
304
304
|
"initApi": null,
|
|
305
305
|
"initFetch": null,
|
|
306
306
|
"id": "u:6ada123f9d4a",
|
|
307
|
-
"onEvent": {
|
|
308
|
-
"init": {
|
|
309
|
-
"weight": 0,
|
|
310
|
-
"actions": [
|
|
311
|
-
{
|
|
312
|
-
"actionType": "custom",
|
|
313
|
-
"script": "//初始化时给外层dialog加上类名,使过滤组件popover正常显示\n$('.steedos-object-listview-form-page').closest('.amis-dialog-widget.antd-Modal').addClass('steedos-overflow-visible-dialog');"
|
|
314
|
-
}
|
|
315
|
-
]
|
|
316
|
-
}
|
|
317
|
-
},
|
|
318
307
|
"className": "steedos-object-listview-form-page"
|
|
319
308
|
}
|
|
@@ -302,8 +302,9 @@ module.exports = {
|
|
|
302
302
|
fields: 1
|
|
303
303
|
}
|
|
304
304
|
};
|
|
305
|
+
const forceUnHiddenObjectNames = ["cms_files", "tasks", "notes", "events", "instances", "approvals", "process_instance_history", "audit_records"];
|
|
305
306
|
let objects = _.map(_.filter((allObjects), (obj)=>{
|
|
306
|
-
return obj.hidden != true;
|
|
307
|
+
return obj.hidden != true || forceUnHiddenObjectNames.includes(obj.name);
|
|
307
308
|
}), (obj)=>{
|
|
308
309
|
return {
|
|
309
310
|
name: obj.name,
|
|
@@ -146,7 +146,8 @@ const getDateTimeOperators = (lng)=>{
|
|
|
146
146
|
}
|
|
147
147
|
|
|
148
148
|
|
|
149
|
-
const getFieldOperators = (type, lng)=>{
|
|
149
|
+
const getFieldOperators = (type, lng, ctx = {})=>{
|
|
150
|
+
let { multiple } = ctx;
|
|
150
151
|
switch (type) {
|
|
151
152
|
case 'text':
|
|
152
153
|
return ['equal', 'not_equal', 'like', 'not_like', 'starts_with', 'ends_with']
|
|
@@ -162,6 +163,9 @@ const getFieldOperators = (type, lng)=>{
|
|
|
162
163
|
case 'lookup':
|
|
163
164
|
case 'master_detail':
|
|
164
165
|
case 'select':
|
|
166
|
+
if (multiple){
|
|
167
|
+
return ['select_any_in', 'select_not_any_in']
|
|
168
|
+
}
|
|
165
169
|
return [ 'select_equals', 'select_not_equals', 'select_any_in', 'select_not_any_in' ]
|
|
166
170
|
default:
|
|
167
171
|
return ;
|
|
@@ -169,7 +173,7 @@ const getFieldOperators = (type, lng)=>{
|
|
|
169
173
|
|
|
170
174
|
}
|
|
171
175
|
|
|
172
|
-
const getField = (objectName, fieldName, type, lng)=>{
|
|
176
|
+
const getField = (objectName, fieldName, type, lng, ctx = {})=>{
|
|
173
177
|
let field = null;
|
|
174
178
|
switch (type) {
|
|
175
179
|
case 'textarea':
|
|
@@ -195,7 +199,7 @@ const getField = (objectName, fieldName, type, lng)=>{
|
|
|
195
199
|
case 'date':
|
|
196
200
|
// 华炎魔方中日期字段存的是utc的0点
|
|
197
201
|
field = {
|
|
198
|
-
type: "
|
|
202
|
+
type: "text",
|
|
199
203
|
format: "YYYY-MM-DDT00:00:00+00:00",
|
|
200
204
|
operators: getFieldOperators("date", lng)
|
|
201
205
|
};
|
|
@@ -203,7 +207,7 @@ const getField = (objectName, fieldName, type, lng)=>{
|
|
|
203
207
|
case 'datetime':
|
|
204
208
|
// 即amis中日期时间控件的format默认值为"YYYY-MM-DDTHH:mm+08:00"正好满足需求
|
|
205
209
|
field = {
|
|
206
|
-
type: "
|
|
210
|
+
type: "text",
|
|
207
211
|
operators: getFieldOperators("datetime", lng)
|
|
208
212
|
};
|
|
209
213
|
break;
|
|
@@ -217,6 +221,11 @@ const getField = (objectName, fieldName, type, lng)=>{
|
|
|
217
221
|
break;
|
|
218
222
|
case 'lookup':
|
|
219
223
|
case 'master_detail':
|
|
224
|
+
field = {
|
|
225
|
+
type: 'text',
|
|
226
|
+
operators: getFieldOperators("select", lng, ctx)
|
|
227
|
+
};
|
|
228
|
+
break;
|
|
220
229
|
case 'select':
|
|
221
230
|
field = {
|
|
222
231
|
type: 'select',
|
|
@@ -230,7 +239,7 @@ const getField = (objectName, fieldName, type, lng)=>{
|
|
|
230
239
|
}
|
|
231
240
|
,
|
|
232
241
|
searchable: true,
|
|
233
|
-
operators: getFieldOperators("select", lng)
|
|
242
|
+
operators: getFieldOperators("select", lng, ctx)
|
|
234
243
|
};
|
|
235
244
|
break;
|
|
236
245
|
case 'boolean':
|
|
@@ -361,7 +370,7 @@ module.exports = {
|
|
|
361
370
|
fields.push({
|
|
362
371
|
label: field.label,
|
|
363
372
|
name: field.name,
|
|
364
|
-
...getField(objectName, field.name, field.type, lng)
|
|
373
|
+
...getField(objectName, field.name, field.type, lng, { multiple: field.multiple})
|
|
365
374
|
})
|
|
366
375
|
break;
|
|
367
376
|
}
|
|
@@ -41,7 +41,7 @@ const getListPageInitSchema = function (objectApiName) {
|
|
|
41
41
|
return {
|
|
42
42
|
type: 'page',
|
|
43
43
|
name: getScopeId(objectApiName, "list"),
|
|
44
|
-
bodyClassName: '',
|
|
44
|
+
bodyClassName: 'p-0',
|
|
45
45
|
regions: [
|
|
46
46
|
"body"
|
|
47
47
|
],
|
|
@@ -88,7 +88,7 @@ const getRecordPageInitSchema = async function (objectApiName, userSession) {
|
|
|
88
88
|
}
|
|
89
89
|
const content = {
|
|
90
90
|
"type": "tabs",
|
|
91
|
-
"className": "steedos-record-tabs bg-white p-4 sm:m-
|
|
91
|
+
"className": "steedos-record-tabs bg-white p-4 sm:m-4 sm:shadow sm:rounded",
|
|
92
92
|
"tabs": [
|
|
93
93
|
detailed
|
|
94
94
|
]
|
|
@@ -112,7 +112,7 @@ const getRecordPageInitSchema = async function (objectApiName, userSession) {
|
|
|
112
112
|
name: getScopeId(objectApiName, "record_detail"),
|
|
113
113
|
objectApiName: "${objectName}",
|
|
114
114
|
bodyClassName: '',
|
|
115
|
-
className: "object-detail-page steedos-record-content overflow-y-auto p-0 m-0 flex-1 h-full
|
|
115
|
+
className: "object-detail-page steedos-record-content overflow-y-auto p-0 m-0 flex-1 h-full",
|
|
116
116
|
regions: [
|
|
117
117
|
"body"
|
|
118
118
|
],
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@steedos/service-plugin-amis",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.151",
|
|
4
4
|
"main": "package.service.js",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "yarn build:tailwind-base && yarn build:tailwind",
|
|
@@ -9,12 +9,11 @@
|
|
|
9
9
|
"build:tailwind": "tailwindcss -i ./src/styles/tailwind.css -o ./public/tailwind/tailwind-steedos.css"
|
|
10
10
|
},
|
|
11
11
|
"license": "MIT",
|
|
12
|
-
"private": false,
|
|
13
12
|
"publishConfig": {
|
|
14
13
|
"access": "public"
|
|
15
14
|
},
|
|
16
|
-
"gitHead": "
|
|
15
|
+
"gitHead": "bd9248bbec1c66e9b2ed1e958f3dba6b70b1476a",
|
|
17
16
|
"devDependencies": {
|
|
18
|
-
"tailwindcss": "3.
|
|
17
|
+
"tailwindcss": "^3.4.17"
|
|
19
18
|
}
|
|
20
19
|
}
|
package/package.service.js
CHANGED
|
@@ -1,5 +1,113 @@
|
|
|
1
|
+
*, ::before, ::after {
|
|
2
|
+
--tw-border-spacing-x: 0;
|
|
3
|
+
--tw-border-spacing-y: 0;
|
|
4
|
+
--tw-translate-x: 0;
|
|
5
|
+
--tw-translate-y: 0;
|
|
6
|
+
--tw-rotate: 0;
|
|
7
|
+
--tw-skew-x: 0;
|
|
8
|
+
--tw-skew-y: 0;
|
|
9
|
+
--tw-scale-x: 1;
|
|
10
|
+
--tw-scale-y: 1;
|
|
11
|
+
--tw-pan-x: ;
|
|
12
|
+
--tw-pan-y: ;
|
|
13
|
+
--tw-pinch-zoom: ;
|
|
14
|
+
--tw-scroll-snap-strictness: proximity;
|
|
15
|
+
--tw-gradient-from-position: ;
|
|
16
|
+
--tw-gradient-via-position: ;
|
|
17
|
+
--tw-gradient-to-position: ;
|
|
18
|
+
--tw-ordinal: ;
|
|
19
|
+
--tw-slashed-zero: ;
|
|
20
|
+
--tw-numeric-figure: ;
|
|
21
|
+
--tw-numeric-spacing: ;
|
|
22
|
+
--tw-numeric-fraction: ;
|
|
23
|
+
--tw-ring-inset: ;
|
|
24
|
+
--tw-ring-offset-width: 0px;
|
|
25
|
+
--tw-ring-offset-color: #fff;
|
|
26
|
+
--tw-ring-color: rgb(59 130 246 / 0.5);
|
|
27
|
+
--tw-ring-offset-shadow: 0 0 #0000;
|
|
28
|
+
--tw-ring-shadow: 0 0 #0000;
|
|
29
|
+
--tw-shadow: 0 0 #0000;
|
|
30
|
+
--tw-shadow-colored: 0 0 #0000;
|
|
31
|
+
--tw-blur: ;
|
|
32
|
+
--tw-brightness: ;
|
|
33
|
+
--tw-contrast: ;
|
|
34
|
+
--tw-grayscale: ;
|
|
35
|
+
--tw-hue-rotate: ;
|
|
36
|
+
--tw-invert: ;
|
|
37
|
+
--tw-saturate: ;
|
|
38
|
+
--tw-sepia: ;
|
|
39
|
+
--tw-drop-shadow: ;
|
|
40
|
+
--tw-backdrop-blur: ;
|
|
41
|
+
--tw-backdrop-brightness: ;
|
|
42
|
+
--tw-backdrop-contrast: ;
|
|
43
|
+
--tw-backdrop-grayscale: ;
|
|
44
|
+
--tw-backdrop-hue-rotate: ;
|
|
45
|
+
--tw-backdrop-invert: ;
|
|
46
|
+
--tw-backdrop-opacity: ;
|
|
47
|
+
--tw-backdrop-saturate: ;
|
|
48
|
+
--tw-backdrop-sepia: ;
|
|
49
|
+
--tw-contain-size: ;
|
|
50
|
+
--tw-contain-layout: ;
|
|
51
|
+
--tw-contain-paint: ;
|
|
52
|
+
--tw-contain-style: ;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
::backdrop {
|
|
56
|
+
--tw-border-spacing-x: 0;
|
|
57
|
+
--tw-border-spacing-y: 0;
|
|
58
|
+
--tw-translate-x: 0;
|
|
59
|
+
--tw-translate-y: 0;
|
|
60
|
+
--tw-rotate: 0;
|
|
61
|
+
--tw-skew-x: 0;
|
|
62
|
+
--tw-skew-y: 0;
|
|
63
|
+
--tw-scale-x: 1;
|
|
64
|
+
--tw-scale-y: 1;
|
|
65
|
+
--tw-pan-x: ;
|
|
66
|
+
--tw-pan-y: ;
|
|
67
|
+
--tw-pinch-zoom: ;
|
|
68
|
+
--tw-scroll-snap-strictness: proximity;
|
|
69
|
+
--tw-gradient-from-position: ;
|
|
70
|
+
--tw-gradient-via-position: ;
|
|
71
|
+
--tw-gradient-to-position: ;
|
|
72
|
+
--tw-ordinal: ;
|
|
73
|
+
--tw-slashed-zero: ;
|
|
74
|
+
--tw-numeric-figure: ;
|
|
75
|
+
--tw-numeric-spacing: ;
|
|
76
|
+
--tw-numeric-fraction: ;
|
|
77
|
+
--tw-ring-inset: ;
|
|
78
|
+
--tw-ring-offset-width: 0px;
|
|
79
|
+
--tw-ring-offset-color: #fff;
|
|
80
|
+
--tw-ring-color: rgb(59 130 246 / 0.5);
|
|
81
|
+
--tw-ring-offset-shadow: 0 0 #0000;
|
|
82
|
+
--tw-ring-shadow: 0 0 #0000;
|
|
83
|
+
--tw-shadow: 0 0 #0000;
|
|
84
|
+
--tw-shadow-colored: 0 0 #0000;
|
|
85
|
+
--tw-blur: ;
|
|
86
|
+
--tw-brightness: ;
|
|
87
|
+
--tw-contrast: ;
|
|
88
|
+
--tw-grayscale: ;
|
|
89
|
+
--tw-hue-rotate: ;
|
|
90
|
+
--tw-invert: ;
|
|
91
|
+
--tw-saturate: ;
|
|
92
|
+
--tw-sepia: ;
|
|
93
|
+
--tw-drop-shadow: ;
|
|
94
|
+
--tw-backdrop-blur: ;
|
|
95
|
+
--tw-backdrop-brightness: ;
|
|
96
|
+
--tw-backdrop-contrast: ;
|
|
97
|
+
--tw-backdrop-grayscale: ;
|
|
98
|
+
--tw-backdrop-hue-rotate: ;
|
|
99
|
+
--tw-backdrop-invert: ;
|
|
100
|
+
--tw-backdrop-opacity: ;
|
|
101
|
+
--tw-backdrop-saturate: ;
|
|
102
|
+
--tw-backdrop-sepia: ;
|
|
103
|
+
--tw-contain-size: ;
|
|
104
|
+
--tw-contain-layout: ;
|
|
105
|
+
--tw-contain-paint: ;
|
|
106
|
+
--tw-contain-style: ;
|
|
107
|
+
}
|
|
108
|
+
|
|
1
109
|
/*
|
|
2
|
-
! tailwindcss v3.
|
|
110
|
+
! tailwindcss v3.4.18 | MIT License | https://tailwindcss.com
|
|
3
111
|
*/
|
|
4
112
|
|
|
5
113
|
/*
|
|
@@ -31,9 +139,12 @@
|
|
|
31
139
|
3. Use a more readable tab size.
|
|
32
140
|
4. Use the user's configured `sans` font-family by default.
|
|
33
141
|
5. Use the user's configured `sans` font-feature-settings by default.
|
|
142
|
+
6. Use the user's configured `sans` font-variation-settings by default.
|
|
143
|
+
7. Disable tap highlights on iOS
|
|
34
144
|
*/
|
|
35
145
|
|
|
36
|
-
html
|
|
146
|
+
html,
|
|
147
|
+
:host {
|
|
37
148
|
line-height: 1.5;
|
|
38
149
|
/* 1 */
|
|
39
150
|
-webkit-text-size-adjust: 100%;
|
|
@@ -43,10 +154,14 @@ html {
|
|
|
43
154
|
-o-tab-size: 4;
|
|
44
155
|
tab-size: 4;
|
|
45
156
|
/* 3 */
|
|
46
|
-
font-family: ui-sans-serif, system-ui,
|
|
157
|
+
font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
|
47
158
|
/* 4 */
|
|
48
159
|
font-feature-settings: normal;
|
|
49
160
|
/* 5 */
|
|
161
|
+
font-variation-settings: normal;
|
|
162
|
+
/* 6 */
|
|
163
|
+
-webkit-tap-highlight-color: transparent;
|
|
164
|
+
/* 7 */
|
|
50
165
|
}
|
|
51
166
|
|
|
52
167
|
/*
|
|
@@ -118,8 +233,10 @@ strong {
|
|
|
118
233
|
}
|
|
119
234
|
|
|
120
235
|
/*
|
|
121
|
-
1. Use the user's configured `mono` font
|
|
122
|
-
2.
|
|
236
|
+
1. Use the user's configured `mono` font-family by default.
|
|
237
|
+
2. Use the user's configured `mono` font-feature-settings by default.
|
|
238
|
+
3. Use the user's configured `mono` font-variation-settings by default.
|
|
239
|
+
4. Correct the odd `em` font sizing in all browsers.
|
|
123
240
|
*/
|
|
124
241
|
|
|
125
242
|
code,
|
|
@@ -128,8 +245,12 @@ samp,
|
|
|
128
245
|
pre {
|
|
129
246
|
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
|
130
247
|
/* 1 */
|
|
131
|
-
font-
|
|
248
|
+
font-feature-settings: normal;
|
|
132
249
|
/* 2 */
|
|
250
|
+
font-variation-settings: normal;
|
|
251
|
+
/* 3 */
|
|
252
|
+
font-size: 1em;
|
|
253
|
+
/* 4 */
|
|
133
254
|
}
|
|
134
255
|
|
|
135
256
|
/*
|
|
@@ -188,12 +309,18 @@ select,
|
|
|
188
309
|
textarea {
|
|
189
310
|
font-family: inherit;
|
|
190
311
|
/* 1 */
|
|
312
|
+
font-feature-settings: inherit;
|
|
313
|
+
/* 1 */
|
|
314
|
+
font-variation-settings: inherit;
|
|
315
|
+
/* 1 */
|
|
191
316
|
font-size: 100%;
|
|
192
317
|
/* 1 */
|
|
193
318
|
font-weight: inherit;
|
|
194
319
|
/* 1 */
|
|
195
320
|
line-height: inherit;
|
|
196
321
|
/* 1 */
|
|
322
|
+
letter-spacing: inherit;
|
|
323
|
+
/* 1 */
|
|
197
324
|
color: inherit;
|
|
198
325
|
/* 1 */
|
|
199
326
|
margin: 0;
|
|
@@ -217,9 +344,9 @@ select {
|
|
|
217
344
|
*/
|
|
218
345
|
|
|
219
346
|
button,
|
|
220
|
-
[type='button'],
|
|
221
|
-
[type='reset'],
|
|
222
|
-
[type='submit'] {
|
|
347
|
+
input:where([type='button']),
|
|
348
|
+
input:where([type='reset']),
|
|
349
|
+
input:where([type='submit']) {
|
|
223
350
|
-webkit-appearance: button;
|
|
224
351
|
/* 1 */
|
|
225
352
|
background-color: transparent;
|
|
@@ -338,6 +465,14 @@ menu {
|
|
|
338
465
|
padding: 0;
|
|
339
466
|
}
|
|
340
467
|
|
|
468
|
+
/*
|
|
469
|
+
Reset default styling for dialogs.
|
|
470
|
+
*/
|
|
471
|
+
|
|
472
|
+
dialog {
|
|
473
|
+
padding: 0;
|
|
474
|
+
}
|
|
475
|
+
|
|
341
476
|
/*
|
|
342
477
|
Prevent resizing textareas horizontally by default.
|
|
343
478
|
*/
|
|
@@ -415,100 +550,6 @@ video {
|
|
|
415
550
|
|
|
416
551
|
/* Make elements with the HTML hidden attribute stay hidden by default */
|
|
417
552
|
|
|
418
|
-
[hidden] {
|
|
553
|
+
[hidden]:where(:not([hidden="until-found"])) {
|
|
419
554
|
display: none;
|
|
420
|
-
}
|
|
421
|
-
|
|
422
|
-
*, ::before, ::after {
|
|
423
|
-
--tw-border-spacing-x: 0;
|
|
424
|
-
--tw-border-spacing-y: 0;
|
|
425
|
-
--tw-translate-x: 0;
|
|
426
|
-
--tw-translate-y: 0;
|
|
427
|
-
--tw-rotate: 0;
|
|
428
|
-
--tw-skew-x: 0;
|
|
429
|
-
--tw-skew-y: 0;
|
|
430
|
-
--tw-scale-x: 1;
|
|
431
|
-
--tw-scale-y: 1;
|
|
432
|
-
--tw-pan-x: ;
|
|
433
|
-
--tw-pan-y: ;
|
|
434
|
-
--tw-pinch-zoom: ;
|
|
435
|
-
--tw-scroll-snap-strictness: proximity;
|
|
436
|
-
--tw-ordinal: ;
|
|
437
|
-
--tw-slashed-zero: ;
|
|
438
|
-
--tw-numeric-figure: ;
|
|
439
|
-
--tw-numeric-spacing: ;
|
|
440
|
-
--tw-numeric-fraction: ;
|
|
441
|
-
--tw-ring-inset: ;
|
|
442
|
-
--tw-ring-offset-width: 0px;
|
|
443
|
-
--tw-ring-offset-color: #fff;
|
|
444
|
-
--tw-ring-color: rgb(59 130 246 / 0.5);
|
|
445
|
-
--tw-ring-offset-shadow: 0 0 #0000;
|
|
446
|
-
--tw-ring-shadow: 0 0 #0000;
|
|
447
|
-
--tw-shadow: 0 0 #0000;
|
|
448
|
-
--tw-shadow-colored: 0 0 #0000;
|
|
449
|
-
--tw-blur: ;
|
|
450
|
-
--tw-brightness: ;
|
|
451
|
-
--tw-contrast: ;
|
|
452
|
-
--tw-grayscale: ;
|
|
453
|
-
--tw-hue-rotate: ;
|
|
454
|
-
--tw-invert: ;
|
|
455
|
-
--tw-saturate: ;
|
|
456
|
-
--tw-sepia: ;
|
|
457
|
-
--tw-drop-shadow: ;
|
|
458
|
-
--tw-backdrop-blur: ;
|
|
459
|
-
--tw-backdrop-brightness: ;
|
|
460
|
-
--tw-backdrop-contrast: ;
|
|
461
|
-
--tw-backdrop-grayscale: ;
|
|
462
|
-
--tw-backdrop-hue-rotate: ;
|
|
463
|
-
--tw-backdrop-invert: ;
|
|
464
|
-
--tw-backdrop-opacity: ;
|
|
465
|
-
--tw-backdrop-saturate: ;
|
|
466
|
-
--tw-backdrop-sepia: ;
|
|
467
|
-
}
|
|
468
|
-
|
|
469
|
-
::backdrop {
|
|
470
|
-
--tw-border-spacing-x: 0;
|
|
471
|
-
--tw-border-spacing-y: 0;
|
|
472
|
-
--tw-translate-x: 0;
|
|
473
|
-
--tw-translate-y: 0;
|
|
474
|
-
--tw-rotate: 0;
|
|
475
|
-
--tw-skew-x: 0;
|
|
476
|
-
--tw-skew-y: 0;
|
|
477
|
-
--tw-scale-x: 1;
|
|
478
|
-
--tw-scale-y: 1;
|
|
479
|
-
--tw-pan-x: ;
|
|
480
|
-
--tw-pan-y: ;
|
|
481
|
-
--tw-pinch-zoom: ;
|
|
482
|
-
--tw-scroll-snap-strictness: proximity;
|
|
483
|
-
--tw-ordinal: ;
|
|
484
|
-
--tw-slashed-zero: ;
|
|
485
|
-
--tw-numeric-figure: ;
|
|
486
|
-
--tw-numeric-spacing: ;
|
|
487
|
-
--tw-numeric-fraction: ;
|
|
488
|
-
--tw-ring-inset: ;
|
|
489
|
-
--tw-ring-offset-width: 0px;
|
|
490
|
-
--tw-ring-offset-color: #fff;
|
|
491
|
-
--tw-ring-color: rgb(59 130 246 / 0.5);
|
|
492
|
-
--tw-ring-offset-shadow: 0 0 #0000;
|
|
493
|
-
--tw-ring-shadow: 0 0 #0000;
|
|
494
|
-
--tw-shadow: 0 0 #0000;
|
|
495
|
-
--tw-shadow-colored: 0 0 #0000;
|
|
496
|
-
--tw-blur: ;
|
|
497
|
-
--tw-brightness: ;
|
|
498
|
-
--tw-contrast: ;
|
|
499
|
-
--tw-grayscale: ;
|
|
500
|
-
--tw-hue-rotate: ;
|
|
501
|
-
--tw-invert: ;
|
|
502
|
-
--tw-saturate: ;
|
|
503
|
-
--tw-sepia: ;
|
|
504
|
-
--tw-drop-shadow: ;
|
|
505
|
-
--tw-backdrop-blur: ;
|
|
506
|
-
--tw-backdrop-brightness: ;
|
|
507
|
-
--tw-backdrop-contrast: ;
|
|
508
|
-
--tw-backdrop-grayscale: ;
|
|
509
|
-
--tw-backdrop-hue-rotate: ;
|
|
510
|
-
--tw-backdrop-invert: ;
|
|
511
|
-
--tw-backdrop-opacity: ;
|
|
512
|
-
--tw-backdrop-saturate: ;
|
|
513
|
-
--tw-backdrop-sepia: ;
|
|
514
555
|
}
|