@lowdefy/blocks-aggrid 5.6.0 → 6.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.
@@ -0,0 +1,1242 @@
1
+ # Copyright 2020-2026 Lowdefy, Inc
2
+
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ - title: Lowdefy - Basic Table
16
+ fullWidth: true
17
+ blocks:
18
+ - id: lowdefy_basic_table
19
+ type: AgGridLowdefy
20
+ properties:
21
+ height: 300
22
+ columnDefs:
23
+ - field: name
24
+ headerName: Name
25
+ - field: age
26
+ headerName: Age
27
+ - field: email
28
+ headerName: Email
29
+ - field: country
30
+ headerName: Country
31
+ rowData:
32
+ - name: Alice Johnson
33
+ age: 28
34
+ email: alice@example.com
35
+ country: United States
36
+ - name: Bob Smith
37
+ age: 35
38
+ email: bob@example.com
39
+ country: United Kingdom
40
+ - name: Charlie Lee
41
+ age: 42
42
+ email: charlie@example.com
43
+ country: Japan
44
+ - name: Diana Patel
45
+ age: 31
46
+ email: diana@example.com
47
+ country: India
48
+ - name: Erik Johansson
49
+ age: 26
50
+ email: erik@example.com
51
+ country: Sweden
52
+ - name: Fatima Al-Rashid
53
+ age: 39
54
+ email: fatima@example.com
55
+ country: UAE
56
+
57
+ - title: Lowdefy - Row density (size)
58
+ fullWidth: true
59
+ blocks:
60
+ - id: lowdefy_size_small
61
+ type: AgGridLowdefy
62
+ properties:
63
+ size: small
64
+ height: 220
65
+ defaultColDef:
66
+ flex: 1
67
+ columnDefs:
68
+ - field: name
69
+ headerName: Name
70
+ - field: role
71
+ headerName: Role
72
+ - field: country
73
+ headerName: Country
74
+ rowData:
75
+ - name: Alice Johnson
76
+ role: Developer
77
+ country: United States
78
+ - name: Bob Smith
79
+ role: Designer
80
+ country: United Kingdom
81
+ - name: Charlie Lee
82
+ role: Manager
83
+ country: Japan
84
+ - id: lowdefy_size_middle
85
+ type: AgGridLowdefy
86
+ properties:
87
+ size: middle
88
+ height: 220
89
+ defaultColDef:
90
+ flex: 1
91
+ columnDefs:
92
+ - field: name
93
+ headerName: Name
94
+ - field: role
95
+ headerName: Role
96
+ - field: country
97
+ headerName: Country
98
+ rowData:
99
+ - name: Alice Johnson
100
+ role: Developer
101
+ country: United States
102
+ - name: Bob Smith
103
+ role: Designer
104
+ country: United Kingdom
105
+ - name: Charlie Lee
106
+ role: Manager
107
+ country: Japan
108
+ - id: lowdefy_size_large
109
+ type: AgGridLowdefy
110
+ properties:
111
+ size: large
112
+ height: 220
113
+ defaultColDef:
114
+ flex: 1
115
+ columnDefs:
116
+ - field: name
117
+ headerName: Name
118
+ - field: role
119
+ headerName: Role
120
+ - field: country
121
+ headerName: Country
122
+ rowData:
123
+ - name: Alice Johnson
124
+ role: Developer
125
+ country: United States
126
+ - name: Bob Smith
127
+ role: Designer
128
+ country: United Kingdom
129
+ - name: Charlie Lee
130
+ role: Manager
131
+ country: Japan
132
+
133
+ - title: Lowdefy - Custom Theme Colors (themeParams)
134
+ fullWidth: true
135
+ blocks:
136
+ - id: custom_theme
137
+ type: AgGridLowdefy
138
+ properties:
139
+ themeParams:
140
+ headerBackgroundColor: '#1a1a2e'
141
+ headerTextColor: '#e0e0ff'
142
+ selectedRowBackgroundColor: 'rgba(108, 99, 255, 0.2)'
143
+ rowHoverColor: 'rgba(108, 99, 255, 0.1)'
144
+ borderColor: '#2a2a4a'
145
+ height: 300
146
+ columnDefs:
147
+ - field: name
148
+ headerName: Name
149
+ - field: role
150
+ headerName: Role
151
+ - field: department
152
+ headerName: Department
153
+ - field: status
154
+ headerName: Status
155
+ width: 120
156
+ rowData:
157
+ - name: Alice Johnson
158
+ role: Developer
159
+ department: Engineering
160
+ status: Active
161
+ - name: Bob Smith
162
+ role: Designer
163
+ department: Design
164
+ status: Active
165
+ - name: Charlie Lee
166
+ role: Manager
167
+ department: Sales
168
+ status: On Leave
169
+ - name: Diana Patel
170
+ role: Analyst
171
+ department: Finance
172
+ status: Active
173
+ - name: Erik Johansson
174
+ role: DevOps
175
+ department: Engineering
176
+ status: Active
177
+
178
+ - title: Lowdefy - Column Features
179
+ fullWidth: true
180
+ blocks:
181
+ - id: lowdefy_column_features
182
+ type: AgGridLowdefy
183
+ properties:
184
+ height: 300
185
+ columnDefs:
186
+ - field: id
187
+ headerName: ID
188
+ width: 80
189
+ pinned: left
190
+ sortable: true
191
+ - field: product
192
+ headerName: Product Name
193
+ flex: 2
194
+ sortable: true
195
+ filter: true
196
+ - field: category
197
+ headerName: Category
198
+ flex: 1
199
+ sortable: true
200
+ filter: true
201
+ - field: price
202
+ headerName: Price ($)
203
+ width: 120
204
+ sortable: true
205
+ resizable: true
206
+ - field: stock
207
+ headerName: Stock
208
+ width: 100
209
+ sortable: true
210
+ - field: rating
211
+ headerName: Rating
212
+ width: 100
213
+ sortable: true
214
+ rowData:
215
+ - id: 1
216
+ product: Wireless Keyboard
217
+ category: Electronics
218
+ price: 49.99
219
+ stock: 230
220
+ rating: 4.5
221
+ - id: 2
222
+ product: Standing Desk
223
+ category: Furniture
224
+ price: 399.00
225
+ stock: 45
226
+ rating: 4.8
227
+ - id: 3
228
+ product: USB-C Hub
229
+ category: Electronics
230
+ price: 29.99
231
+ stock: 520
232
+ rating: 4.2
233
+ - id: 4
234
+ product: Ergonomic Chair
235
+ category: Furniture
236
+ price: 289.00
237
+ stock: 78
238
+ rating: 4.6
239
+ - id: 5
240
+ product: Webcam HD
241
+ category: Electronics
242
+ price: 79.99
243
+ stock: 310
244
+ rating: 4.0
245
+
246
+ - title: Lowdefy - Default Column Definitions
247
+ fullWidth: true
248
+ blocks:
249
+ - id: lowdefy_default_col_def
250
+ type: AgGridLowdefy
251
+ properties:
252
+ height: 300
253
+ defaultColDef:
254
+ sortable: true
255
+ filter: true
256
+ resizable: true
257
+ flex: 1
258
+ columnDefs:
259
+ - field: employee
260
+ headerName: Employee
261
+ - field: department
262
+ headerName: Department
263
+ - field: title
264
+ headerName: Job Title
265
+ - field: location
266
+ headerName: Office
267
+ - field: startDate
268
+ headerName: Start Date
269
+ rowData:
270
+ - employee: Sarah Chen
271
+ department: Engineering
272
+ title: Senior Developer
273
+ location: San Francisco
274
+ startDate: '2019-03-15'
275
+ - employee: James Wilson
276
+ department: Marketing
277
+ title: Campaign Manager
278
+ location: New York
279
+ startDate: '2020-07-01'
280
+ - employee: Maria Garcia
281
+ department: Engineering
282
+ title: Tech Lead
283
+ location: Austin
284
+ startDate: '2018-11-20'
285
+ - employee: David Kim
286
+ department: Sales
287
+ title: Account Executive
288
+ location: Chicago
289
+ startDate: '2021-01-10'
290
+ - employee: Emily Brown
291
+ department: Design
292
+ title: UX Designer
293
+ location: San Francisco
294
+ startDate: '2020-09-05'
295
+
296
+ - title: Lowdefy - Row Selection
297
+ fullWidth: true
298
+ blocks:
299
+ - id: lowdefy_row_selection
300
+ type: AgGridLowdefy
301
+ properties:
302
+ height: 300
303
+ rowSelection:
304
+ mode: multiRow
305
+ checkboxes: false
306
+ headerCheckbox: false
307
+ enableClickSelection: true
308
+ defaultColDef:
309
+ sortable: true
310
+ flex: 1
311
+ columnDefs:
312
+ - field: task
313
+ headerName: Task
314
+ flex: 2
315
+ - field: assignee
316
+ headerName: Assignee
317
+ - field: priority
318
+ headerName: Priority
319
+ width: 120
320
+ - field: status
321
+ headerName: Status
322
+ width: 120
323
+ rowData:
324
+ - task: Design login page
325
+ assignee: Alice
326
+ priority: High
327
+ status: Done
328
+ - task: Implement API endpoints
329
+ assignee: Bob
330
+ priority: High
331
+ status: In Progress
332
+ - task: Write unit tests
333
+ assignee: Charlie
334
+ priority: Medium
335
+ status: To Do
336
+ - task: Update documentation
337
+ assignee: Diana
338
+ priority: Low
339
+ status: To Do
340
+ - task: Code review PR #42
341
+ assignee: Erik
342
+ priority: Medium
343
+ status: In Progress
344
+
345
+ - title: Lowdefy - Pagination
346
+ fullWidth: true
347
+ blocks:
348
+ - id: lowdefy_pagination
349
+ type: AgGridLowdefy
350
+ properties:
351
+ height: 350
352
+ pagination: true
353
+ paginationPageSize: 5
354
+ defaultColDef:
355
+ sortable: true
356
+ filter: true
357
+ flex: 1
358
+ columnDefs:
359
+ - field: orderId
360
+ headerName: Order ID
361
+ width: 120
362
+ - field: customer
363
+ headerName: Customer
364
+ - field: product
365
+ headerName: Product
366
+ - field: quantity
367
+ headerName: Qty
368
+ width: 80
369
+ - field: total
370
+ headerName: Total ($)
371
+ width: 110
372
+ - field: status
373
+ headerName: Status
374
+ width: 120
375
+ rowData:
376
+ - orderId: ORD-201
377
+ customer: Acme Corp
378
+ product: Widget Pro
379
+ quantity: 50
380
+ total: 2499.50
381
+ status: Shipped
382
+ - orderId: ORD-202
383
+ customer: Globex Inc
384
+ product: Gadget X
385
+ quantity: 25
386
+ total: 1249.75
387
+ status: Processing
388
+ - orderId: ORD-203
389
+ customer: Initech
390
+ product: Widget Pro
391
+ quantity: 100
392
+ total: 4999.00
393
+ status: Delivered
394
+ - orderId: ORD-204
395
+ customer: Umbrella Ltd
396
+ product: Connector A
397
+ quantity: 200
398
+ total: 1998.00
399
+ status: Shipped
400
+ - orderId: ORD-205
401
+ customer: Stark Ind
402
+ product: Gadget X
403
+ quantity: 10
404
+ total: 499.90
405
+ status: Processing
406
+ - orderId: ORD-206
407
+ customer: Wayne Ent
408
+ product: Widget Pro
409
+ quantity: 75
410
+ total: 3749.25
411
+ status: Delivered
412
+ - orderId: ORD-207
413
+ customer: Oscorp
414
+ product: Connector A
415
+ quantity: 150
416
+ total: 1498.50
417
+ status: Shipped
418
+ - orderId: ORD-208
419
+ customer: LexCorp
420
+ product: Gadget X
421
+ quantity: 30
422
+ total: 1499.70
423
+ status: Processing
424
+
425
+ - title: Events
426
+ fullWidth: true
427
+ blocks:
428
+ - id: lowdefy_events_row_click
429
+ type: AgGridLowdefy
430
+ properties:
431
+ height: 300
432
+ defaultColDef:
433
+ sortable: true
434
+ flex: 1
435
+ columnDefs:
436
+ - field: name
437
+ headerName: Name
438
+ - field: role
439
+ headerName: Role
440
+ - field: department
441
+ headerName: Department
442
+ - field: status
443
+ headerName: Status
444
+ width: 120
445
+ rowData:
446
+ - name: Alice Johnson
447
+ role: Developer
448
+ department: Engineering
449
+ status: Active
450
+ - name: Bob Smith
451
+ role: Designer
452
+ department: Design
453
+ status: Active
454
+ - name: Charlie Lee
455
+ role: Manager
456
+ department: Sales
457
+ status: On Leave
458
+ - name: Diana Patel
459
+ role: Analyst
460
+ department: Finance
461
+ status: Active
462
+ - name: Erik Johansson
463
+ role: DevOps
464
+ department: Engineering
465
+ status: Active
466
+ events:
467
+ onRowClick:
468
+ - id: row_click_message
469
+ type: DisplayMessage
470
+ params:
471
+ content:
472
+ _nunjucks:
473
+ on:
474
+ _event: row
475
+ template: 'Clicked: {{ name }} ({{ role }}, {{ department }})'
476
+ duration: 3
477
+ onCellClick:
478
+ - id: cell_click_message
479
+ type: DisplayMessage
480
+ params:
481
+ status: info
482
+ content:
483
+ _nunjucks:
484
+ on:
485
+ name:
486
+ _event: cell.column
487
+ value:
488
+ _event: cell.value
489
+ template: 'Cell: {{ name }} = {{ value }}'
490
+ duration: 3
491
+ - id: lowdefy_events_row_selected
492
+ type: AgGridLowdefy
493
+ properties:
494
+ height: 300
495
+ rowSelection:
496
+ mode: multiRow
497
+ checkboxes: false
498
+ headerCheckbox: false
499
+ enableClickSelection: true
500
+ defaultColDef:
501
+ sortable: true
502
+ flex: 1
503
+ columnDefs:
504
+ - field: task
505
+ headerName: Task
506
+ flex: 2
507
+ - field: assignee
508
+ headerName: Assignee
509
+ - field: priority
510
+ headerName: Priority
511
+ width: 120
512
+ rowData:
513
+ - task: Design login page
514
+ assignee: Alice
515
+ priority: High
516
+ - task: Implement API
517
+ assignee: Bob
518
+ priority: High
519
+ - task: Write tests
520
+ assignee: Charlie
521
+ priority: Medium
522
+ - task: Update docs
523
+ assignee: Diana
524
+ priority: Low
525
+ - task: Code review
526
+ assignee: Erik
527
+ priority: Medium
528
+ events:
529
+ onRowSelected:
530
+ - id: row_selected_message
531
+ type: DisplayMessage
532
+ params:
533
+ status: success
534
+ content:
535
+ _nunjucks:
536
+ on:
537
+ row:
538
+ _event: row.task
539
+ count:
540
+ _event: selected.length
541
+ template: 'Selected "{{ row }}" ({{ count }} total selected)'
542
+ duration: 3
543
+
544
+ - title: Lowdefy - Column Styling
545
+ fullWidth: true
546
+ blocks:
547
+ - id: lowdefy_styled_columns
548
+ type: AgGridLowdefy
549
+ properties:
550
+ height: 300
551
+ defaultColDef:
552
+ sortable: true
553
+ flex: 1
554
+ columnDefs:
555
+ - field: metric
556
+ headerName: Metric
557
+ flex: 2
558
+ cellStyle:
559
+ fontWeight: bold
560
+ - field: q1
561
+ headerName: Q1
562
+ cellStyle:
563
+ backgroundColor: var(--ant-blue-1)
564
+ textAlign: right
565
+ - field: q2
566
+ headerName: Q2
567
+ cellStyle:
568
+ backgroundColor: var(--ant-green-1)
569
+ textAlign: right
570
+ - field: q3
571
+ headerName: Q3
572
+ cellStyle:
573
+ backgroundColor: var(--ant-orange-1)
574
+ textAlign: right
575
+ - field: q4
576
+ headerName: Q4
577
+ cellStyle:
578
+ backgroundColor: var(--ant-red-1)
579
+ textAlign: right
580
+ rowData:
581
+ - metric: Revenue ($K)
582
+ q1: 1250
583
+ q2: 1380
584
+ q3: 1520
585
+ q4: 1690
586
+ - metric: New Customers
587
+ q1: 145
588
+ q2: 162
589
+ q3: 178
590
+ q4: 201
591
+ - metric: Churn Rate (%)
592
+ q1: 3.2
593
+ q2: 2.8
594
+ q3: 2.5
595
+ q4: 2.1
596
+ - metric: NPS Score
597
+ q1: 42
598
+ q2: 45
599
+ q3: 48
600
+ q4: 52
601
+
602
+ - title: Built-in cell types
603
+ fullWidth: true
604
+ blocks:
605
+ - id: lowdefy_cell_types_demo
606
+ type: AgGridLowdefy
607
+ properties:
608
+ height: 360
609
+ defaultColDef:
610
+ resizable: true
611
+ flex: 1
612
+ columnDefs:
613
+ - headerName: Status
614
+ field: status
615
+ width: 130
616
+ cell:
617
+ type: tag
618
+ colorMap:
619
+ Active: green
620
+ Blocked: red
621
+ Pending: blue
622
+ 'On Leave': orange
623
+ - headerName: Assignee
624
+ field: name
625
+ minWidth: 220
626
+ cell:
627
+ type: avatar
628
+ nameField: name
629
+ srcField: picture
630
+ idField: id
631
+ - headerName: Created
632
+ field: created_at
633
+ width: 170
634
+ cell:
635
+ type: date
636
+ - headerName: Last seen
637
+ field: last_seen
638
+ width: 150
639
+ cell:
640
+ type: date
641
+ relative: true
642
+ - headerName: Verified
643
+ field: verified
644
+ width: 110
645
+ cell:
646
+ type: boolean
647
+ - headerName: Progress
648
+ field: completion
649
+ width: 130
650
+ cell:
651
+ type: progress
652
+ rowData:
653
+ - id: u1
654
+ name: Alice Johnson
655
+ picture: https://i.pravatar.cc/80?img=1
656
+ status: Active
657
+ created_at: '2025-11-14T09:30:00Z'
658
+ last_seen: '2026-04-17T11:45:00Z'
659
+ verified: true
660
+ completion: 92
661
+ - id: u2
662
+ name: Bob Smith
663
+ status: On Leave
664
+ created_at: '2025-09-02T14:10:00Z'
665
+ last_seen: '2026-04-10T08:15:00Z'
666
+ verified: true
667
+ completion: 68
668
+ - id: u3
669
+ name: Charlie Lee
670
+ picture: https://i.pravatar.cc/80?img=5
671
+ status: Blocked
672
+ created_at: '2026-01-20T18:00:00Z'
673
+ last_seen: '2026-04-17T07:22:00Z'
674
+ verified: false
675
+ completion: 22
676
+ - id: u4
677
+ name: Diana Patel
678
+ status: Pending
679
+ created_at: null
680
+ last_seen: null
681
+ verified: null
682
+ completion: null
683
+
684
+ - title: Linked cells (onCellLink)
685
+ fullWidth: true
686
+ blocks:
687
+ - id: lowdefy_linked_cells_demo
688
+ type: AgGridLowdefy
689
+ properties:
690
+ height: 240
691
+ defaultColDef:
692
+ resizable: true
693
+ flex: 1
694
+ columnDefs:
695
+ - headerName: Task ID
696
+ field: _id
697
+ width: 140
698
+ cell:
699
+ type: link
700
+ pageId: tasks-view
701
+ urlQuery:
702
+ _id: _id
703
+ - headerName: Assignee
704
+ field: assignee
705
+ cell:
706
+ type: avatar
707
+ nameField: assignee
708
+ idField: _id
709
+ link:
710
+ pageId: user
711
+ urlQuery:
712
+ userId: _id
713
+ - headerName: Priority
714
+ field: priority
715
+ width: 120
716
+ cell:
717
+ type: tag
718
+ colorMap:
719
+ High: red
720
+ Medium: orange
721
+ Low: default
722
+ rowData:
723
+ - _id: TSK-001
724
+ assignee: Alice Johnson
725
+ priority: High
726
+ - _id: TSK-002
727
+ assignee: Bob Smith
728
+ priority: Medium
729
+ - _id: TSK-003
730
+ assignee: Charlie Lee
731
+ priority: Low
732
+ events:
733
+ onCellLink:
734
+ - id: navigate
735
+ type: Link
736
+ params:
737
+ _event: link
738
+
739
+ - title: Ellipsis column helper
740
+ fullWidth: true
741
+ blocks:
742
+ - id: lowdefy_ellipsis_demo
743
+ type: AgGridLowdefy
744
+ properties:
745
+ height: 280
746
+ defaultColDef:
747
+ resizable: true
748
+ columnDefs:
749
+ - headerName: Code
750
+ field: code
751
+ width: 100
752
+ - headerName: Title
753
+ field: title
754
+ minWidth: 220
755
+ - headerName: Description
756
+ field: description
757
+ flex: 1
758
+ ellipsis: 2
759
+ rowData:
760
+ - code: A-01
761
+ title: Main switchboard
762
+ description: Drafted the main switchboard layout and circuit schedule across three floors. Awaiting sign-off from the project engineer before ordering long-lead parts.
763
+ - code: A-02
764
+ title: East wing HVAC
765
+ description: Balancing HVAC loads across the east wing. Waiting on updated ductwork drawings from the architect and a revised thermal model from the mechanical team.
766
+ - code: A-03
767
+ title: Utility connections
768
+ description: Blocked on the utility connection survey — main was not where the drawings said it would be, which has cascaded to the trenching schedule.
769
+
770
+ - title: Number formatting (currency, percent, compact, accounting)
771
+ fullWidth: true
772
+ blocks:
773
+ - id: lowdefy_number_demo
774
+ type: AgGridLowdefy
775
+ properties:
776
+ height: 320
777
+ defaultColDef:
778
+ resizable: true
779
+ columnDefs:
780
+ - headerName: Account
781
+ field: account
782
+ width: 180
783
+ - headerName: Revenue (USD)
784
+ field: revenue
785
+ width: 150
786
+ cell:
787
+ type: number
788
+ format: currency
789
+ currency: USD
790
+ decimals: 0
791
+ - headerName: EUR
792
+ field: revenue_eur
793
+ width: 150
794
+ cell:
795
+ type: number
796
+ format: currency
797
+ currency: EUR
798
+ locale: de-DE
799
+ decimals: 2
800
+ - headerName: Δ vs budget
801
+ field: delta
802
+ width: 160
803
+ cell:
804
+ type: number
805
+ format: currency
806
+ currency: USD
807
+ decimals: 2
808
+ negative: parentheses
809
+ signColor: true
810
+ - headerName: Margin
811
+ field: margin
812
+ width: 110
813
+ cell:
814
+ type: number
815
+ format: percent
816
+ decimals: 1
817
+ - headerName: Impressions
818
+ field: impressions
819
+ width: 130
820
+ cell:
821
+ type: number
822
+ format: compact
823
+ - headerName: Ratio
824
+ field: ratio
825
+ width: 110
826
+ cell:
827
+ type: number
828
+ decimals: 3
829
+ rowData:
830
+ - account: Acme Corp
831
+ revenue: 1245000
832
+ revenue_eur: 1125750.5
833
+ delta: 12500
834
+ margin: 0.184
835
+ impressions: 12340
836
+ ratio: 1.234
837
+ - account: Globex
838
+ revenue: 825500
839
+ revenue_eur: 745600.25
840
+ delta: -44250.5
841
+ margin: 0.072
842
+ impressions: 1050000
843
+ ratio: 0.876
844
+ - account: Stark Ind.
845
+ revenue: 4820000
846
+ revenue_eur: 4350750
847
+ delta: -125000
848
+ margin: -0.033
849
+ impressions: 85400000
850
+ ratio: 2.12
851
+ - account: Wayne Ent.
852
+ revenue: 3150000
853
+ revenue_eur: 2845300
854
+ delta: 87500
855
+ margin: 0.221
856
+ impressions: 524000
857
+ ratio: 0.948
858
+
859
+ - title: Loading overlay (block loading flag)
860
+ fullWidth: true
861
+ blocks:
862
+ - id: lowdefy_loading_demo_switch
863
+ type: Switch
864
+ properties:
865
+ title: Toggle loading overlay
866
+ - id: lowdefy_loading_demo_grid
867
+ type: AgGridLowdefy
868
+ loading:
869
+ _state: lowdefy_loading_demo_switch
870
+ properties:
871
+ height: 260
872
+ defaultColDef:
873
+ flex: 1
874
+ columnDefs:
875
+ - field: name
876
+ headerName: Name
877
+ - field: role
878
+ headerName: Role
879
+ rowData:
880
+ - name: Alice Johnson
881
+ role: Developer
882
+ - name: Bob Smith
883
+ role: Designer
884
+ - name: Charlie Lee
885
+ role: Manager
886
+
887
+ - title: Tag cells with array values
888
+ fullWidth: true
889
+ blocks:
890
+ - id: lowdefy_tag_array_demo
891
+ type: AgGridLowdefy
892
+ properties:
893
+ height: 240
894
+ defaultColDef:
895
+ resizable: true
896
+ flex: 1
897
+ columnDefs:
898
+ - headerName: User
899
+ field: name
900
+ minWidth: 180
901
+ - headerName: Roles
902
+ field: roles
903
+ minWidth: 260
904
+ cell:
905
+ type: tag
906
+ colorMap:
907
+ admin: red
908
+ editor: blue
909
+ viewer: green
910
+ billing: orange
911
+ default: default
912
+ rowData:
913
+ - name: Alice Johnson
914
+ roles:
915
+ - admin
916
+ - editor
917
+ - name: Bob Smith
918
+ roles:
919
+ - viewer
920
+ - name: Charlie Lee
921
+ roles:
922
+ - editor
923
+ - billing
924
+ - viewer
925
+ - name: Diana Patel
926
+ roles: []
927
+ - name: Chan Maarten
928
+ roles: null
929
+
930
+ - title: Auto-coloured tags
931
+ fullWidth: true
932
+ blocks:
933
+ - id: lowdefy_tag_seeded_demo
934
+ type: AgGridLowdefy
935
+ properties:
936
+ height: 300
937
+ defaultColDef:
938
+ resizable: true
939
+ flex: 1
940
+ columnDefs:
941
+ - headerName: Project
942
+ field: project
943
+ minWidth: 160
944
+ - headerName: Tags
945
+ field: tags
946
+ minWidth: 320
947
+ cell:
948
+ type: tag
949
+ rowData:
950
+ - project: Storefront
951
+ tags:
952
+ - frontend
953
+ - react
954
+ - typescript
955
+ - project: API gateway
956
+ tags:
957
+ - backend
958
+ - node
959
+ - typescript
960
+ - project: ML pipeline
961
+ tags:
962
+ - python
963
+ - airflow
964
+ - backend
965
+ - project: Mobile app
966
+ tags:
967
+ - frontend
968
+ - react
969
+ - mobile
970
+ - project: Design system
971
+ tags:
972
+ - frontend
973
+ - design
974
+
975
+ - title: Buttons cell (per-button action chains)
976
+ fullWidth: true
977
+ blocks:
978
+ - id: lowdefy_buttons_cell_demo
979
+ type: AgGridLowdefy
980
+ properties:
981
+ height: 260
982
+ defaultColDef:
983
+ resizable: true
984
+ flex: 1
985
+ columnDefs:
986
+ - headerName: Task
987
+ field: name
988
+ - headerName: Status
989
+ field: status
990
+ width: 120
991
+ cell:
992
+ type: tag
993
+ colorMap:
994
+ Open: blue
995
+ Locked: red
996
+ Archived: default
997
+ - headerName: Actions
998
+ field: _id
999
+ width: 220
1000
+ cell:
1001
+ type: buttons
1002
+ buttons:
1003
+ - eventName: onEditClick
1004
+ title: Edit
1005
+ icon: AiOutlineEdit
1006
+ type: primary
1007
+ - eventName: onDeleteClick
1008
+ title: Delete
1009
+ icon: AiOutlineDelete
1010
+ danger: true
1011
+ disabledField: locked
1012
+ hiddenField: archived
1013
+ rowData:
1014
+ - _id: TSK-001
1015
+ name: Wire main switchboard
1016
+ status: Open
1017
+ locked: false
1018
+ archived: false
1019
+ - _id: TSK-002
1020
+ name: HVAC balancing
1021
+ status: Locked
1022
+ locked: true
1023
+ archived: false
1024
+ - _id: TSK-003
1025
+ name: Utility connections
1026
+ status: Archived
1027
+ locked: false
1028
+ archived: true
1029
+ events:
1030
+ onEditClick:
1031
+ - id: edit_msg
1032
+ type: DisplayMessage
1033
+ params:
1034
+ content:
1035
+ _string.concat:
1036
+ - 'Edit '
1037
+ - _event: row._id
1038
+ onDeleteClick:
1039
+ - id: delete_msg
1040
+ type: DisplayMessage
1041
+ params:
1042
+ status: warning
1043
+ content:
1044
+ _string.concat:
1045
+ - 'Delete '
1046
+ - _event: row.name
1047
+
1048
+ # Selector cells fire an event on change (event-only, like buttons) — the cell does not write to
1049
+ # the grid's row data. The app persists the change by updating the data bound to `rowData`. Here
1050
+ # each row's value is bound to state (with a `default`) and the event writes the new value back
1051
+ # into that state, so the selection sticks.
1052
+ - title: Selector cells (single + multiple)
1053
+ fullWidth: true
1054
+ blocks:
1055
+ - id: lowdefy_selector_cell_demo
1056
+ type: AgGridLowdefy
1057
+ properties:
1058
+ height: 280
1059
+ defaultColDef:
1060
+ resizable: true
1061
+ columnDefs:
1062
+ - headerName: Task
1063
+ field: name
1064
+ flex: 1
1065
+ - headerName: Priority
1066
+ field: priority
1067
+ width: 200
1068
+ cell:
1069
+ type: selector
1070
+ eventName: onPriorityChange
1071
+ options:
1072
+ - label: Low
1073
+ value: low
1074
+ color: green
1075
+ - label: Medium
1076
+ value: medium
1077
+ color: orange
1078
+ - label: High
1079
+ value: high
1080
+ color: red
1081
+ - headerName: Labels
1082
+ field: labels
1083
+ width: 340
1084
+ cell:
1085
+ type: multipleSelector
1086
+ eventName: onLabelsChange
1087
+ placeholder: Add labels
1088
+ options:
1089
+ - bug
1090
+ - feature
1091
+ - docs
1092
+ - urgent
1093
+ rowData:
1094
+ - id: r1
1095
+ name: Wire main switchboard
1096
+ priority:
1097
+ _state:
1098
+ key: sel_priority.r1
1099
+ default: high
1100
+ labels:
1101
+ _state:
1102
+ key: sel_labels.r1
1103
+ default:
1104
+ - urgent
1105
+ - id: r2
1106
+ name: HVAC balancing
1107
+ priority:
1108
+ _state:
1109
+ key: sel_priority.r2
1110
+ default: medium
1111
+ labels:
1112
+ _state:
1113
+ key: sel_labels.r2
1114
+ default: []
1115
+ - id: r3
1116
+ name: Utility connections
1117
+ priority:
1118
+ _state:
1119
+ key: sel_priority.r3
1120
+ default: low
1121
+ labels:
1122
+ _state:
1123
+ key: sel_labels.r3
1124
+ default:
1125
+ - docs
1126
+ - feature
1127
+ events:
1128
+ onPriorityChange:
1129
+ - id: persist_priority
1130
+ type: SetState
1131
+ params:
1132
+ sel_priority:
1133
+ _object.assign:
1134
+ - _state: sel_priority
1135
+ - _object.fromEntries:
1136
+ - - _event: row.id
1137
+ - _event: newValue
1138
+ onLabelsChange:
1139
+ - id: persist_labels
1140
+ type: SetState
1141
+ params:
1142
+ sel_labels:
1143
+ _object.assign:
1144
+ - _state: sel_labels
1145
+ - _object.fromEntries:
1146
+ - - _event: row.id
1147
+ - _event: newValue
1148
+
1149
+ # Input cells (switch / textInput / paragraphInput) work like the selector cells: event-only, the
1150
+ # app persists the new value into the data bound to `rowData`. Switch fires on toggle; textInput
1151
+ # commits on blur / Enter; paragraphInput commits when the inline edit is confirmed.
1152
+ - title: Input cells (switch, text, paragraph)
1153
+ fullWidth: true
1154
+ blocks:
1155
+ - id: lowdefy_input_cell_demo
1156
+ type: AgGridLowdefy
1157
+ properties:
1158
+ height: 260
1159
+ defaultColDef:
1160
+ resizable: true
1161
+ rowData:
1162
+ - id: t1
1163
+ name:
1164
+ _state:
1165
+ key: inp_name.t1
1166
+ default: Wire main switchboard
1167
+ active:
1168
+ _state:
1169
+ key: inp_active.t1
1170
+ default: true
1171
+ notes:
1172
+ _state:
1173
+ key: inp_notes.t1
1174
+ default: Awaiting sign-off from the project engineer.
1175
+ - id: t2
1176
+ name:
1177
+ _state:
1178
+ key: inp_name.t2
1179
+ default: HVAC balancing
1180
+ active:
1181
+ _state:
1182
+ key: inp_active.t2
1183
+ default: false
1184
+ notes:
1185
+ _state:
1186
+ key: inp_notes.t2
1187
+ default: Waiting on updated ductwork drawings.
1188
+ columnDefs:
1189
+ - headerName: Task
1190
+ field: name
1191
+ width: 260
1192
+ cell:
1193
+ type: textInput
1194
+ eventName: onNameChange
1195
+ placeholder: Task name
1196
+ - headerName: Active
1197
+ field: active
1198
+ width: 110
1199
+ cell:
1200
+ type: switch
1201
+ eventName: onActiveChange
1202
+ checkedText: 'on'
1203
+ uncheckedText: 'off'
1204
+ - headerName: Notes
1205
+ field: notes
1206
+ flex: 1
1207
+ cell:
1208
+ type: paragraphInput
1209
+ eventName: onNotesChange
1210
+ ellipsis:
1211
+ rows: 2
1212
+ events:
1213
+ onNameChange:
1214
+ - id: persist_name
1215
+ type: SetState
1216
+ params:
1217
+ inp_name:
1218
+ _object.assign:
1219
+ - _state: inp_name
1220
+ - _object.fromEntries:
1221
+ - - _event: row.id
1222
+ - _event: newValue
1223
+ onActiveChange:
1224
+ - id: persist_active
1225
+ type: SetState
1226
+ params:
1227
+ inp_active:
1228
+ _object.assign:
1229
+ - _state: inp_active
1230
+ - _object.fromEntries:
1231
+ - - _event: row.id
1232
+ - _event: newValue
1233
+ onNotesChange:
1234
+ - id: persist_notes
1235
+ type: SetState
1236
+ params:
1237
+ inp_notes:
1238
+ _object.assign:
1239
+ - _state: inp_notes
1240
+ - _object.fromEntries:
1241
+ - - _event: row.id
1242
+ - _event: newValue