killbill-avatax 3.1.0.pre.1 → 4.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4f95ddbfc3db7cf0b63db7c565449b64281e2b02afd4d3981085765860405374
4
- data.tar.gz: '022955568f287d96c11c36a121e0a9a2eaa79acfe2f086a4f30a77f417dd0567'
3
+ metadata.gz: 395717b358719e10e5e7e10eb99d6313281670d1818c5db7392dc8b46d7164fe
4
+ data.tar.gz: d8dd8f265f238ba0fe58b7cc59760d4186779648c783fb5941cef8e0ef1bed2f
5
5
  SHA512:
6
- metadata.gz: 70b522efcd17732cfca1e1d29c3e50ad125af688ce4cee282ccd4d7a41c91345e42bdd8d77b021d3d55a68367b34c636ee22d0b83a151894cef3f439ee95a40d
7
- data.tar.gz: '00007026384e5ee60fc51f535b901e2684fcf454b0c45f4e445a71870a2fbe8691d264386183699c3707f8f289cbddffa0c6e406dfa90fe589b21752a5aac94e'
6
+ metadata.gz: f8d8eb2e3cd1e1ee184ac6ff9ef1388523d79ae310e52aa7c58f8496b7eec30ef4c049f932cc6768a60d810712d55273eec80c36b5a3f1c1083edf387486b937
7
+ data.tar.gz: 65436084b9d935d6bc673e4641729a8c5259d62555e36e349880ca49e1751afa1626cf9e21cfe400c567b0fb5b9d331515b56d229ec0d2e2dc99d84a44f41b76
@@ -0,0 +1,3 @@
1
+ <svg class="sort-icon sort-desc" xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none" role="img" aria-label="sort descending">
2
+ <path d="M3 6.5L6 9.5L9 6.5" stroke="#A4A7AE" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg class="sort-icon sort-asc" xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none" role="img" aria-label="sort ascending">
2
+ <path d="M3 5.5L6 2.5L9 5.5" stroke="#A4A7AE" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
3
+ </svg>
@@ -1,8 +1,29 @@
1
1
  <table id="exemptions-table" class="configuration-table">
2
+ <colgroup>
3
+ <col style="width: 45%">
4
+ <col style="width: 45%">
5
+ <col style="width: 10%">
6
+ </colgroup>
2
7
  <thead>
3
8
  <tr>
4
- <th>Account ID</th>
5
- <th>Customer Usage Type</th>
9
+ <th class="sortable-header" data-column="0">
10
+ <div class="header-content">
11
+ <span class="header-text">Account ID</span>
12
+ <div class="sort-icons">
13
+ <%= image_tag "avatax/sort-up.svg", class: "sort-icon sort-asc" %>
14
+ <%= image_tag "avatax/sort-down.svg", class: "sort-icon sort-desc" %>
15
+ </div>
16
+ </div>
17
+ </th>
18
+ <th class="sortable-header" data-column="1">
19
+ <div class="header-content">
20
+ <span class="header-text">Customer Usage Type</span>
21
+ <div class="sort-icons">
22
+ <%= image_tag "avatax/sort-up.svg", class: "sort-icon sort-asc" %>
23
+ <%= image_tag "avatax/sort-down.svg", class: "sort-icon sort-desc" %>
24
+ </div>
25
+ </div>
26
+ </th>
6
27
  <th></th>
7
28
  </tr>
8
29
  </thead>
@@ -24,11 +45,30 @@
24
45
  $('#exemptions-table').dataTable({
25
46
  "dom": "t",
26
47
  "paging": false,
48
+ "ordering": true,
27
49
  "columns": [
28
50
  null,
29
51
  null,
30
52
  { "orderable": false }
31
53
  ]
32
54
  });
55
+ var exemptionsTable = $('#exemptions-table').DataTable();
56
+
57
+ $('#exemptions-table thead').on('click', 'th.sortable-header, th.sortable-header *', function(e) {
58
+ var th = $(this).closest('th');
59
+ var columnIndex = parseInt(th.data('column'), 10);
60
+ var currentOrder = exemptionsTable.order();
61
+ var direction = 'asc';
62
+
63
+ if (currentOrder.length && currentOrder[0][0] === columnIndex) {
64
+ direction = currentOrder[0][1] === 'asc' ? 'desc' : 'asc';
65
+ }
66
+
67
+ exemptionsTable.order([columnIndex, direction]).draw();
68
+
69
+ // Update icon state
70
+ $('#exemptions-table thead th .sort-icon').removeClass('active');
71
+ th.find('.sort-' + (direction === 'asc' ? 'asc' : 'desc')).addClass('active');
72
+ });
33
73
  });
34
74
  <% end %>
@@ -1,8 +1,29 @@
1
1
  <table id="products-table" class="configuration-table">
2
+ <colgroup>
3
+ <col style="width: 45%">
4
+ <col style="width: 45%">
5
+ <col style="width: 10%">
6
+ </colgroup>
2
7
  <thead>
3
8
  <tr>
4
- <th>Product name</th>
5
- <th>Tax code</th>
9
+ <th class="sortable-header" data-column="0">
10
+ <div class="header-content">
11
+ <span class="header-text">Product name</span>
12
+ <div class="sort-icons">
13
+ <%= image_tag "avatax/sort-up.svg", class: "sort-icon sort-asc" %>
14
+ <%= image_tag "avatax/sort-down.svg", class: "sort-icon sort-desc" %>
15
+ </div>
16
+ </div>
17
+ </th>
18
+ <th class="sortable-header" data-column="1">
19
+ <div class="header-content">
20
+ <span class="header-text">Tax code</span>
21
+ <div class="sort-icons">
22
+ <%= image_tag "avatax/sort-up.svg", class: "sort-icon sort-asc" %>
23
+ <%= image_tag "avatax/sort-down.svg", class: "sort-icon sort-desc" %>
24
+ </div>
25
+ </div>
26
+ </th>
6
27
  <th></th>
7
28
  </tr>
8
29
  </thead>
@@ -24,11 +45,30 @@
24
45
  $('#products-table').dataTable({
25
46
  "dom": "t",
26
47
  "paging": false,
48
+ "ordering": true,
27
49
  "columns": [
28
50
  null,
29
51
  null,
30
52
  { "orderable": false }
31
53
  ]
32
54
  });
55
+ var productsTable = $('#products-table').DataTable();
56
+
57
+ $('#products-table thead').on('click', 'th.sortable-header, th.sortable-header *', function(e) {
58
+ var th = $(this).closest('th');
59
+ var columnIndex = parseInt(th.data('column'), 10);
60
+ var currentOrder = productsTable.order();
61
+ var direction = 'asc';
62
+
63
+ if (currentOrder.length && currentOrder[0][0] === columnIndex) {
64
+ direction = currentOrder[0][1] === 'asc' ? 'desc' : 'asc';
65
+ }
66
+
67
+ productsTable.order([columnIndex, direction]).draw();
68
+
69
+ // Update icon state
70
+ $('#products-table thead th .sort-icon').removeClass('active');
71
+ th.find('.sort-' + (direction === 'asc' ? 'asc' : 'desc')).addClass('active');
72
+ });
33
73
  });
34
74
  <% end %>
@@ -1,8 +1,8 @@
1
1
  <div class="kaui-container configuration-index">
2
2
  <%= render "kaui/components/breadcrumb/breadcrumb" %>
3
- <div class="d-flex " style="gap: 4rem;">
4
- <div class="configuration" style="max-width: '80rem';">
5
- <div class="d-flex flex-column ">
3
+ <div class="d-flex" style="gap: 4rem;">
4
+ <div class="configuration" style="max-width: 80rem;">
5
+ <div class="d-flex flex-column">
6
6
  <div class="configuration-header mb-4">
7
7
  <div class="d-flex align-items-center">
8
8
  <h2>Configured products</h2>
@@ -26,9 +26,9 @@
26
26
  </div>
27
27
 
28
28
  <div class="kaui-container configuration-index">
29
- <div class="d-flex " style="gap: 4rem;">
30
- <div class="configuration" style="max-width: '80rem';">
31
- <div class="d-flex flex-column ">
29
+ <div class="d-flex" style="gap: 4rem;">
30
+ <div class="configuration" style="max-width: 80rem;">
31
+ <div class="d-flex flex-column">
32
32
  <div class="configuration-header mb-4">
33
33
  <div class="d-flex align-items-center">
34
34
  <h2>Exempt accounts</h2>
@@ -52,9 +52,9 @@
52
52
  </div>
53
53
 
54
54
  <div class="kaui-container configuration-index">
55
- <div class="d-flex " style="gap: 4rem;">
56
- <div class="configuration" style="max-width: '80rem';">
57
- <div class="d-flex flex-column ">
55
+ <div class="d-flex" style="gap: 4rem;">
56
+ <div class="configuration" style="max-width: 80rem;">
57
+ <div class="d-flex flex-column">
58
58
  <div class="configuration-header mb-4">
59
59
  <div class="d-flex align-items-center">
60
60
  <h2>Plugin configuration</h2>
@@ -1,8 +1,8 @@
1
1
  <%#
2
- This is a placeholder breadcrumb component for standalone gem usage.
2
+ This is a placeholder button component for standalone gem usage.
3
3
 
4
4
  This placeholder prevents "missing template" errors when running
5
5
  the gem independently during development or testing.
6
6
  %>
7
7
 
8
- <!-- Breadcrumb placeholder for standalone gem -->
8
+ <!-- Button placeholder for standalone gem -->
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Avatax
4
- VERSION = '3.1.0.pre.1'
4
+ VERSION = '4.0.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: killbill-avatax
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0.pre.1
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kill Bill core team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-09-13 00:00:00.000000000 Z
11
+ date: 2025-11-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: killbill-assets-ui
@@ -62,6 +62,8 @@ files:
62
62
  - README.md
63
63
  - Rakefile
64
64
  - app/assets/config/avatax_manifest.js
65
+ - app/assets/images/avatax/sort-down.svg
66
+ - app/assets/images/avatax/sort-up.svg
65
67
  - app/assets/javascripts/application.js
66
68
  - app/assets/javascripts/avatax/avatax.js
67
69
  - app/assets/stylesheets/application.css
@@ -104,9 +106,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
104
106
  version: '0'
105
107
  required_rubygems_version: !ruby/object:Gem::Requirement
106
108
  requirements:
107
- - - ">"
109
+ - - ">="
108
110
  - !ruby/object:Gem::Version
109
- version: 1.3.1
111
+ version: '0'
110
112
  requirements: []
111
113
  rubygems_version: 3.4.10
112
114
  signing_key: