avo 1.2.2 → 1.3.0.pre.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of avo might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/app/components/avo/common/key_value_component.html.erb +53 -0
- data/app/components/avo/common/key_value_component.rb +11 -0
- data/app/components/avo/edit/fields/key_value_field_component.html.erb +3 -0
- data/app/components/avo/edit/fields/key_value_field_component.rb +4 -0
- data/app/components/avo/show/fields/key_value_field_component.html.erb +3 -0
- data/app/components/avo/show/fields/key_value_field_component.rb +4 -0
- data/app/packs/entrypoints/application.js +14 -10
- data/app/packs/js/controllers/fields/key_value_controller.js +132 -0
- data/lib/avo/fields/key_value_field.rb +24 -1
- data/lib/avo/version.rb +1 -1
- data/public/avo-packs/css/{application-13cc02fb.css → application-5af67922.css} +92 -18
- data/public/avo-packs/css/application-5af67922.css.br +0 -0
- data/public/avo-packs/css/application-5af67922.css.gz +0 -0
- data/public/avo-packs/css/application-5af67922.css.map +1 -0
- data/public/avo-packs/css/application-5af67922.css.map.br +0 -0
- data/public/avo-packs/css/application-5af67922.css.map.gz +0 -0
- data/public/avo-packs/js/application-a48a99244065c8d7a1d1.js +26 -0
- data/public/avo-packs/js/{application-e351ef988a3cb9687542.js.LICENSE.txt → application-a48a99244065c8d7a1d1.js.LICENSE.txt} +0 -0
- data/public/avo-packs/js/application-a48a99244065c8d7a1d1.js.br +0 -0
- data/public/avo-packs/js/application-a48a99244065c8d7a1d1.js.gz +0 -0
- data/public/avo-packs/js/application-a48a99244065c8d7a1d1.js.map +1 -0
- data/public/avo-packs/js/application-a48a99244065c8d7a1d1.js.map.br +0 -0
- data/public/avo-packs/js/application-a48a99244065c8d7a1d1.js.map.gz +0 -0
- data/public/avo-packs/manifest.json +15 -15
- metadata +23 -16
- data/public/avo-packs/css/application-13cc02fb.css.br +0 -0
- data/public/avo-packs/css/application-13cc02fb.css.gz +0 -0
- data/public/avo-packs/css/application-13cc02fb.css.map +0 -1
- data/public/avo-packs/css/application-13cc02fb.css.map.br +0 -0
- data/public/avo-packs/css/application-13cc02fb.css.map.gz +0 -0
- data/public/avo-packs/js/application-e351ef988a3cb9687542.js +0 -26
- data/public/avo-packs/js/application-e351ef988a3cb9687542.js.br +0 -0
- data/public/avo-packs/js/application-e351ef988a3cb9687542.js.gz +0 -0
- data/public/avo-packs/js/application-e351ef988a3cb9687542.js.map +0 -1
- data/public/avo-packs/js/application-e351ef988a3cb9687542.js.map.br +0 -0
- data/public/avo-packs/js/application-e351ef988a3cb9687542.js.map.gz +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a62f55a2092f0dd2716cdaacc87e2eea086745d164d032ff8024757748830e54
|
4
|
+
data.tar.gz: a104302aecf8c7f57ac9915fe61eaf26866d3ac25678f40eee2b2244de5d3664
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 88e0ca48ccbc7ff735cbf14178e8bfce1085b34996ed3cad80238e3a625adc0eeab918092b5fee304a3fc31ab9d2465a5f0b5580aac6b5efd308b09218f340cd
|
7
|
+
data.tar.gz: 8b1847c9083ef9998ee2e6a49202addcb9e670c2b5fa1904672287bfa902dd886df4ed5a6ba21de1f5db9020a3a1bc1e5e868765d672677928840d9c14ad83e1
|
data/Gemfile.lock
CHANGED
@@ -0,0 +1,53 @@
|
|
1
|
+
<div class="w-full shadow-lg rounded-lg overflow-hidden"
|
2
|
+
data-controller="key-value"
|
3
|
+
data-key-value-target="controller"
|
4
|
+
data-options="<%= @field.options.to_json %>"
|
5
|
+
data-input-classes="<%= input_classes %>"
|
6
|
+
data-editable="<%= @view.in?([:edit, :create]) %>"
|
7
|
+
>
|
8
|
+
<div class="w-full flex flex-col">
|
9
|
+
<div class="flex w-full">
|
10
|
+
<div class="flex w-full bg-gray-800 shadow overflow-hidden">
|
11
|
+
<div class="w-1/2 py-3 px-3 uppercase font-semibold text-xs text-white border-gray-600 border-r">
|
12
|
+
<%= @field.key_label %>
|
13
|
+
</div>
|
14
|
+
<div class="w-1/2 py-3 px-3 uppercase font-semibold text-xs text-white">
|
15
|
+
<%= @field.value_label %>
|
16
|
+
</div>
|
17
|
+
<% if @view.in?([:edit, :create]) %>
|
18
|
+
<div class="flex items-center justify-center p-2 px-3 border-l border-gray-600">
|
19
|
+
<a href="javascript:void(0);"
|
20
|
+
title="<%= @field.action_text %>"
|
21
|
+
data-tippy="tooltip"
|
22
|
+
data-button="add-row"
|
23
|
+
data-action="click->key-value#addRow"
|
24
|
+
<% if @field.disable_adding_rows %>
|
25
|
+
class="cursor-not-allowed"
|
26
|
+
<% end %>
|
27
|
+
>
|
28
|
+
<%= svg 'plus-circle', class: 'text-gray-400 h-5 hover:text-gray-500' %>
|
29
|
+
</a>
|
30
|
+
</div>
|
31
|
+
<% end %>
|
32
|
+
</div>
|
33
|
+
</div>
|
34
|
+
<div data-key-value-target="rows"></div>
|
35
|
+
</div>
|
36
|
+
<% if @form.present? %>
|
37
|
+
<%= @form.text_area @field.id,
|
38
|
+
value: @field.parsed_value,
|
39
|
+
class: 'hidden',
|
40
|
+
placeholder: @field.placeholder,
|
41
|
+
'data-key-value-target': 'input',
|
42
|
+
'data-view': :edit
|
43
|
+
%>
|
44
|
+
<% else %>
|
45
|
+
<%= text_area_tag @field.id,
|
46
|
+
@field.parsed_value,
|
47
|
+
class: 'hidden',
|
48
|
+
placeholder: @field.placeholder,
|
49
|
+
'data-key-value-target': 'input',
|
50
|
+
'data-view': :edit
|
51
|
+
%>
|
52
|
+
<% end %>
|
53
|
+
</div>
|
@@ -19,6 +19,19 @@ window.Turbolinks = Turbo
|
|
19
19
|
|
20
20
|
Mousetrap.bind('r r r', () => Turbo.visit(window.location.href, { action: 'replace' }))
|
21
21
|
|
22
|
+
function initTippy() {
|
23
|
+
tippy('[data-tippy="tooltip"]', {
|
24
|
+
theme: 'light',
|
25
|
+
content(reference) {
|
26
|
+
const title = reference.getAttribute('title')
|
27
|
+
reference.removeAttribute('title')
|
28
|
+
|
29
|
+
return title
|
30
|
+
},
|
31
|
+
})
|
32
|
+
}
|
33
|
+
window.initTippy = initTippy
|
34
|
+
|
22
35
|
const application = Application.start()
|
23
36
|
|
24
37
|
const context = require.context('./../js/controllers', true, /\.js$/)
|
@@ -29,16 +42,7 @@ application.load(definitionsFromContext(fieldsContext))
|
|
29
42
|
|
30
43
|
document.addEventListener('turbo:load', () => {
|
31
44
|
document.body.classList.remove('turbo-loading')
|
32
|
-
|
33
|
-
tippy('[data-tippy="tooltip"]', {
|
34
|
-
theme: 'light',
|
35
|
-
content(reference) {
|
36
|
-
const title = reference.getAttribute('title')
|
37
|
-
reference.removeAttribute('title')
|
38
|
-
|
39
|
-
return title
|
40
|
-
},
|
41
|
-
})
|
45
|
+
initTippy()
|
42
46
|
})
|
43
47
|
document.addEventListener('turbo:visit', () => document.body.classList.add('turbo-loading'))
|
44
48
|
document.addEventListener('turbo:submit-start', () => document.body.classList.add('turbo-loading'))
|
@@ -0,0 +1,132 @@
|
|
1
|
+
import { Controller } from 'stimulus'
|
2
|
+
import { castBoolean } from '@/js/helpers/cast_boolean'
|
3
|
+
|
4
|
+
export default class extends Controller {
|
5
|
+
static targets = ['input', 'controller', 'rows']
|
6
|
+
|
7
|
+
fieldValue = []
|
8
|
+
|
9
|
+
options = {}
|
10
|
+
|
11
|
+
get keyInputDisabled() {
|
12
|
+
return !this.options.editable || this.options.disable_editing_keys
|
13
|
+
}
|
14
|
+
|
15
|
+
get valueInputDisabled() {
|
16
|
+
return !this.options.editable
|
17
|
+
}
|
18
|
+
|
19
|
+
connect() {
|
20
|
+
this.setOptions()
|
21
|
+
|
22
|
+
try {
|
23
|
+
const objectValue = JSON.parse(this.inputTarget.value)
|
24
|
+
Object.keys(objectValue).forEach((key) => this.fieldValue.push([key, objectValue[key]]))
|
25
|
+
} catch (error) {
|
26
|
+
this.fieldValue = []
|
27
|
+
}
|
28
|
+
|
29
|
+
this.updateKeyValueComponent()
|
30
|
+
}
|
31
|
+
|
32
|
+
addRow() {
|
33
|
+
if (this.options.disable_adding_rows || !this.options.editable) return
|
34
|
+
this.fieldValue.push(['', ''])
|
35
|
+
this.updateKeyValueComponent()
|
36
|
+
}
|
37
|
+
|
38
|
+
deleteRow(event) {
|
39
|
+
if (this.options.disable_deleting_rows || !this.options.editable) return
|
40
|
+
const { index } = event.target.dataset
|
41
|
+
this.fieldValue.splice(index, 1)
|
42
|
+
this.updateTextareaInput()
|
43
|
+
this.updateKeyValueComponent()
|
44
|
+
}
|
45
|
+
|
46
|
+
valueFieldUpdated(event) {
|
47
|
+
const { value } = event.target
|
48
|
+
const { index } = event.target.dataset
|
49
|
+
this.fieldValue[index][1] = value
|
50
|
+
|
51
|
+
this.updateTextareaInput()
|
52
|
+
}
|
53
|
+
|
54
|
+
keyFieldUpdated(event) {
|
55
|
+
const { value } = event.target
|
56
|
+
const { index } = event.target.dataset
|
57
|
+
this.fieldValue[index][0] = value
|
58
|
+
|
59
|
+
this.updateTextareaInput()
|
60
|
+
}
|
61
|
+
|
62
|
+
updateTextareaInput() {
|
63
|
+
if (!this.hasInputTarget) return
|
64
|
+
let result = {}
|
65
|
+
if (this.fieldValue && this.fieldValue.length > 0) {
|
66
|
+
result = Object.assign(...this.fieldValue.map(([key, val]) => ({ [key]: val })))
|
67
|
+
}
|
68
|
+
this.inputTarget.value = JSON.stringify(result)
|
69
|
+
}
|
70
|
+
|
71
|
+
updateKeyValueComponent() {
|
72
|
+
let result = ''
|
73
|
+
let index = 0
|
74
|
+
this.fieldValue.forEach((row) => {
|
75
|
+
const [key, value] = row
|
76
|
+
result += this.interpolatedRow(key, value, index)
|
77
|
+
index++
|
78
|
+
})
|
79
|
+
this.rowsTarget.innerHTML = result
|
80
|
+
window.initTippy()
|
81
|
+
}
|
82
|
+
|
83
|
+
interpolatedRow(key, value, index) {
|
84
|
+
let result = `<div class="flex"><input type="text"
|
85
|
+
class="${this.options.inputClasses} border-gray-600 border-r border-l-0 border-b-0 border-t-0 focus:border-gray-700 w-1/2 rounded-none focus:outline-none outline-none focus:border-none"
|
86
|
+
data-action="input->key-value#keyFieldUpdated"
|
87
|
+
placeholder="${this.options.key_label}"
|
88
|
+
data-index="${index}"
|
89
|
+
${this.keyInputDisabled ? "disabled='disabled'" : ''}
|
90
|
+
value="${key}"
|
91
|
+
autofocus
|
92
|
+
/>
|
93
|
+
<input type="text"
|
94
|
+
class="${this.options.inputClasses} border-gray-600 border-r border-l-0 border-b-0 border-t-0 focus:border-gray-700 w-1/2 rounded-none focus:outline-none outline-none focus:border-none"
|
95
|
+
data-action="input->key-value#valueFieldUpdated"
|
96
|
+
placeholder="${this.options.value_label}"
|
97
|
+
data-index="${index}"
|
98
|
+
${this.valueInputDisabled ? "disabled='disabled'" : ''}
|
99
|
+
value="${value}"
|
100
|
+
/>`
|
101
|
+
if (this.options.editable) {
|
102
|
+
result += `<a
|
103
|
+
href="javascript:void(0);"
|
104
|
+
data-index="${index}"
|
105
|
+
data-action="click->key-value#deleteRow"
|
106
|
+
title="${this.options.delete_text}"
|
107
|
+
data-tippy="tooltip"
|
108
|
+
data-button="delete-row"
|
109
|
+
${this.options.disable_deleting_rows ? "disabled='disabled'" : ''}
|
110
|
+
class="flex items-center justify-center p-2 px-3 border-l ${this.options.disable_deleting_rows ? 'cursor-not-allowed' : ''}"
|
111
|
+
><svg class="pointer-events-none text-gray-500 h-5 hover:text-gray-500" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" stroke="currentColor"><path d="M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"></path></svg></a>`
|
112
|
+
}
|
113
|
+
result += '</div>'
|
114
|
+
|
115
|
+
return result
|
116
|
+
}
|
117
|
+
|
118
|
+
setOptions() {
|
119
|
+
let fieldOptions
|
120
|
+
|
121
|
+
try {
|
122
|
+
fieldOptions = JSON.parse(this.controllerTarget.dataset.options)
|
123
|
+
} catch (error) {
|
124
|
+
fieldOptions = {}
|
125
|
+
}
|
126
|
+
this.options = {
|
127
|
+
...fieldOptions,
|
128
|
+
inputClasses: this.controllerTarget.dataset.inputClasses,
|
129
|
+
editable: castBoolean(this.controllerTarget.dataset.editable),
|
130
|
+
}
|
131
|
+
}
|
132
|
+
}
|
@@ -3,6 +3,11 @@ require "json"
|
|
3
3
|
module Avo
|
4
4
|
module Fields
|
5
5
|
class KeyValueField < BaseField
|
6
|
+
attr_reader :key_label
|
7
|
+
attr_reader :value_label
|
8
|
+
attr_reader :action_text
|
9
|
+
attr_reader :disable_adding_rows
|
10
|
+
|
6
11
|
def initialize(name, **args, &block)
|
7
12
|
@defaults = {
|
8
13
|
partial_name: "key-value-field"
|
@@ -33,7 +38,13 @@ module Avo
|
|
33
38
|
[:"#{id}", "#{id}": {}]
|
34
39
|
end
|
35
40
|
|
36
|
-
def
|
41
|
+
def parsed_value
|
42
|
+
value.to_json
|
43
|
+
rescue
|
44
|
+
{}
|
45
|
+
end
|
46
|
+
|
47
|
+
def options
|
37
48
|
{
|
38
49
|
key_label: @key_label,
|
39
50
|
value_label: @value_label,
|
@@ -44,6 +55,18 @@ module Avo
|
|
44
55
|
disable_deleting_rows: @disable_deleting_rows
|
45
56
|
}
|
46
57
|
end
|
58
|
+
|
59
|
+
def fill_field(model, key, value)
|
60
|
+
begin
|
61
|
+
new_value = JSON.parse(value)
|
62
|
+
rescue
|
63
|
+
new_value = {}
|
64
|
+
end
|
65
|
+
|
66
|
+
model[key] = new_value
|
67
|
+
|
68
|
+
model
|
69
|
+
end
|
47
70
|
end
|
48
71
|
end
|
49
72
|
end
|
data/lib/avo/version.rb
CHANGED
@@ -1388,7 +1388,7 @@ span.flatpickr-weekday {
|
|
1388
1388
|
}
|
1389
1389
|
}
|
1390
1390
|
|
1391
|
-
/*! tailwindcss v2.
|
1391
|
+
/*! tailwindcss v2.1.1 | MIT License | https://tailwindcss.com *//*! modern-normalize v1.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */
|
1392
1392
|
|
1393
1393
|
/*
|
1394
1394
|
Document
|
@@ -1915,7 +1915,7 @@ object {
|
|
1915
1915
|
|
1916
1916
|
/**
|
1917
1917
|
* Constrain images and videos to the parent width and preserve
|
1918
|
-
* their
|
1918
|
+
* their intrinsic aspect ratio.
|
1919
1919
|
*
|
1920
1920
|
* https://github.com/mozdevs/cssremedy/issues/14
|
1921
1921
|
*/
|
@@ -2329,6 +2329,10 @@ select {
|
|
2329
2329
|
z-index: 10;
|
2330
2330
|
}
|
2331
2331
|
|
2332
|
+
.focus\:border-none:focus {
|
2333
|
+
border-style: none;
|
2334
|
+
}
|
2335
|
+
|
2332
2336
|
.focus\:border-blue-300:focus {
|
2333
2337
|
--tw-border-opacity: 1;
|
2334
2338
|
border-color: rgba(147, 197, 253, var(--tw-border-opacity));
|
@@ -2339,6 +2343,11 @@ select {
|
|
2339
2343
|
border-color: rgba(148, 163, 184, var(--tw-border-opacity));
|
2340
2344
|
}
|
2341
2345
|
|
2346
|
+
.focus\:border-gray-700:focus {
|
2347
|
+
--tw-border-opacity: 1;
|
2348
|
+
border-color: rgba(55, 65, 81, var(--tw-border-opacity));
|
2349
|
+
}
|
2350
|
+
|
2342
2351
|
.focus\:bg-white:focus {
|
2343
2352
|
--tw-bg-opacity: 1;
|
2344
2353
|
background-color: rgba(255, 255, 255, var(--tw-bg-opacity));
|
@@ -4307,6 +4316,9 @@ span.CodeMirror-selectedtext { background: none; }
|
|
4307
4316
|
.focus\:z-10:focus {
|
4308
4317
|
z-index: 10;
|
4309
4318
|
}
|
4319
|
+
.focus\:border-none:focus {
|
4320
|
+
border-style: none;
|
4321
|
+
}
|
4310
4322
|
.focus\:border-blue-300:focus {
|
4311
4323
|
--tw-border-opacity: 1;
|
4312
4324
|
border-color: rgba(147, 197, 253, var(--tw-border-opacity));
|
@@ -4315,6 +4327,10 @@ span.CodeMirror-selectedtext { background: none; }
|
|
4315
4327
|
--tw-border-opacity: 1;
|
4316
4328
|
border-color: rgba(148, 163, 184, var(--tw-border-opacity));
|
4317
4329
|
}
|
4330
|
+
.focus\:border-gray-700:focus {
|
4331
|
+
--tw-border-opacity: 1;
|
4332
|
+
border-color: rgba(55, 65, 81, var(--tw-border-opacity));
|
4333
|
+
}
|
4318
4334
|
.focus\:bg-white:focus {
|
4319
4335
|
--tw-bg-opacity: 1;
|
4320
4336
|
background-color: rgba(255, 255, 255, var(--tw-bg-opacity));
|
@@ -4522,6 +4538,9 @@ span.CodeMirror-selectedtext { background: none; }
|
|
4522
4538
|
}
|
4523
4539
|
}
|
4524
4540
|
|
4541
|
+
.pointer-events-none {
|
4542
|
+
pointer-events: none
|
4543
|
+
}
|
4525
4544
|
.visible {
|
4526
4545
|
visibility: visible
|
4527
4546
|
}
|
@@ -4689,24 +4708,24 @@ span.CodeMirror-selectedtext { background: none; }
|
|
4689
4708
|
.block {
|
4690
4709
|
display: block
|
4691
4710
|
}
|
4692
|
-
.inline-
|
4693
|
-
display: inline-
|
4694
|
-
}
|
4695
|
-
.flex {
|
4696
|
-
display: flex
|
4711
|
+
.inline-block {
|
4712
|
+
display: inline-block
|
4697
4713
|
}
|
4698
4714
|
.inline {
|
4699
4715
|
display: inline
|
4700
4716
|
}
|
4701
|
-
.
|
4702
|
-
display:
|
4717
|
+
.flex {
|
4718
|
+
display: flex
|
4703
4719
|
}
|
4704
|
-
.inline-
|
4705
|
-
display: inline-
|
4720
|
+
.inline-flex {
|
4721
|
+
display: inline-flex
|
4706
4722
|
}
|
4707
4723
|
.table {
|
4708
4724
|
display: table
|
4709
4725
|
}
|
4726
|
+
.grid {
|
4727
|
+
display: grid
|
4728
|
+
}
|
4710
4729
|
.hidden {
|
4711
4730
|
display: none
|
4712
4731
|
}
|
@@ -4794,6 +4813,9 @@ span.CodeMirror-selectedtext { background: none; }
|
|
4794
4813
|
.w-64 {
|
4795
4814
|
width: 16rem
|
4796
4815
|
}
|
4816
|
+
.w-1\/2 {
|
4817
|
+
width: 50%
|
4818
|
+
}
|
4797
4819
|
.w-11\/12 {
|
4798
4820
|
width: 91.666667%
|
4799
4821
|
}
|
@@ -4858,6 +4880,9 @@ span.CodeMirror-selectedtext { background: none; }
|
|
4858
4880
|
.cursor-wait {
|
4859
4881
|
cursor: wait
|
4860
4882
|
}
|
4883
|
+
.cursor-not-allowed {
|
4884
|
+
cursor: not-allowed
|
4885
|
+
}
|
4861
4886
|
.appearance-none {
|
4862
4887
|
-webkit-appearance: none;
|
4863
4888
|
appearance: none
|
@@ -4987,6 +5012,9 @@ span.CodeMirror-selectedtext { background: none; }
|
|
4987
5012
|
.rounded {
|
4988
5013
|
border-radius: 0.25rem
|
4989
5014
|
}
|
5015
|
+
.rounded-none {
|
5016
|
+
border-radius: 0px
|
5017
|
+
}
|
4990
5018
|
.rounded-full {
|
4991
5019
|
border-radius: 9999px
|
4992
5020
|
}
|
@@ -5014,6 +5042,18 @@ span.CodeMirror-selectedtext { background: none; }
|
|
5014
5042
|
.border-r {
|
5015
5043
|
border-right-width: 1px
|
5016
5044
|
}
|
5045
|
+
.border-l-0 {
|
5046
|
+
border-left-width: 0px
|
5047
|
+
}
|
5048
|
+
.border-b-0 {
|
5049
|
+
border-bottom-width: 0px
|
5050
|
+
}
|
5051
|
+
.border-t-0 {
|
5052
|
+
border-top-width: 0px
|
5053
|
+
}
|
5054
|
+
.border-l {
|
5055
|
+
border-left-width: 1px
|
5056
|
+
}
|
5017
5057
|
.border-pink-600 {
|
5018
5058
|
--tw-border-opacity: 1;
|
5019
5059
|
border-color: rgba(219, 39, 119, var(--tw-border-opacity))
|
@@ -5221,14 +5261,14 @@ span.CodeMirror-selectedtext { background: none; }
|
|
5221
5261
|
padding-top: 1px;
|
5222
5262
|
padding-bottom: 1px
|
5223
5263
|
}
|
5224
|
-
.py-0 {
|
5225
|
-
padding-top: 0px;
|
5226
|
-
padding-bottom: 0px
|
5227
|
-
}
|
5228
5264
|
.py-3 {
|
5229
5265
|
padding-top: 0.75rem;
|
5230
5266
|
padding-bottom: 0.75rem
|
5231
5267
|
}
|
5268
|
+
.py-0 {
|
5269
|
+
padding-top: 0px;
|
5270
|
+
padding-bottom: 0px
|
5271
|
+
}
|
5232
5272
|
.py-8 {
|
5233
5273
|
padding-top: 2rem;
|
5234
5274
|
padding-bottom: 2rem
|
@@ -5412,12 +5452,37 @@ span.CodeMirror-selectedtext { background: none; }
|
|
5412
5452
|
--tw-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
5413
5453
|
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)
|
5414
5454
|
}
|
5455
|
+
.shadow-lg {
|
5456
|
+
--tw-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
|
5457
|
+
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)
|
5458
|
+
}
|
5459
|
+
.shadow {
|
5460
|
+
--tw-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);
|
5461
|
+
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)
|
5462
|
+
}
|
5415
5463
|
.outline-none {
|
5416
5464
|
outline: 2px solid transparent;
|
5417
5465
|
outline-offset: 2px
|
5418
5466
|
}
|
5467
|
+
.filter {
|
5468
|
+
--tw-blur: var(--tw-empty,/*!*/ /*!*/);
|
5469
|
+
--tw-brightness: var(--tw-empty,/*!*/ /*!*/);
|
5470
|
+
--tw-contrast: var(--tw-empty,/*!*/ /*!*/);
|
5471
|
+
--tw-grayscale: var(--tw-empty,/*!*/ /*!*/);
|
5472
|
+
--tw-hue-rotate: var(--tw-empty,/*!*/ /*!*/);
|
5473
|
+
--tw-invert: var(--tw-empty,/*!*/ /*!*/);
|
5474
|
+
--tw-saturate: var(--tw-empty,/*!*/ /*!*/);
|
5475
|
+
--tw-sepia: var(--tw-empty,/*!*/ /*!*/);
|
5476
|
+
--tw-drop-shadow: var(--tw-empty,/*!*/ /*!*/);
|
5477
|
+
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)
|
5478
|
+
}
|
5479
|
+
.invert {
|
5480
|
+
--tw-invert: invert(100%)
|
5481
|
+
}
|
5419
5482
|
.transition {
|
5420
|
-
transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform;
|
5483
|
+
transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;
|
5484
|
+
transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
|
5485
|
+
transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;
|
5421
5486
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
5422
5487
|
transition-duration: 150ms
|
5423
5488
|
}
|
@@ -5612,6 +5677,9 @@ span.CodeMirror-selectedtext { background: none; }
|
|
5612
5677
|
.focus\:z-10:focus {
|
5613
5678
|
z-index: 10
|
5614
5679
|
}
|
5680
|
+
.focus\:border-none:focus {
|
5681
|
+
border-style: none
|
5682
|
+
}
|
5615
5683
|
.focus\:border-blue-300:focus {
|
5616
5684
|
--tw-border-opacity: 1;
|
5617
5685
|
border-color: rgba(147, 197, 253, var(--tw-border-opacity))
|
@@ -5620,6 +5688,10 @@ span.CodeMirror-selectedtext { background: none; }
|
|
5620
5688
|
--tw-border-opacity: 1;
|
5621
5689
|
border-color: rgba(148, 163, 184, var(--tw-border-opacity))
|
5622
5690
|
}
|
5691
|
+
.focus\:border-gray-700:focus {
|
5692
|
+
--tw-border-opacity: 1;
|
5693
|
+
border-color: rgba(55, 65, 81, var(--tw-border-opacity))
|
5694
|
+
}
|
5623
5695
|
.focus\:bg-white:focus {
|
5624
5696
|
--tw-bg-opacity: 1;
|
5625
5697
|
background-color: rgba(255, 255, 255, var(--tw-bg-opacity))
|
@@ -5853,7 +5925,9 @@ html, body{
|
|
5853
5925
|
--tw-scale-x: 1;
|
5854
5926
|
--tw-scale-y: 1;
|
5855
5927
|
transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
5856
|
-
transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform;
|
5928
|
+
transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;
|
5929
|
+
transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
|
5930
|
+
transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;
|
5857
5931
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
5858
5932
|
transition-duration: 150ms;
|
5859
5933
|
transition-duration: 150ms;
|
@@ -5903,4 +5977,4 @@ html, body{
|
|
5903
5977
|
}
|
5904
5978
|
|
5905
5979
|
|
5906
|
-
/*# sourceMappingURL=application-
|
5980
|
+
/*# sourceMappingURL=application-5af67922.css.map*/
|